@@ -223,105 +223,17 @@ public void testZstdCompressorLevel() throws Exception {
223223
224224 try (final SyncConfigNodeIServiceClient client =
225225 (SyncConfigNodeIServiceClient ) senderEnv .getLeaderConfigNodeConnection ()) {
226- TestUtils .executeNonQueries (
227- senderEnv ,
228- Arrays .asList (
229- "insert into root.db.d1(time, s1) values (1, 1)" ,
230- "insert into root.db.d1(time, s2) values (1, 1)" ,
231- "insert into root.db.d1(time, s3) values (1, 1)" ,
232- "insert into root.db.d1(time, s4) values (1, 1)" ,
233- "insert into root.db.d1(time, s5) values (1, 1)" ,
234- "flush" ),
235- null );
236-
237- // Create 5 pipes with different zstd compression levels, p4 and p5 should fail.
238-
239- try (final Connection connection = senderEnv .getConnection ();
240- final Statement statement = connection .createStatement ()) {
241- statement .execute (
242- String .format (
243- "create pipe p1"
244- + " with source ('source.pattern'='root.db.d1.s1')"
245- + " with sink ("
246- + "'sink.ip'='%s',"
247- + "'sink.port'='%s',"
248- + "'sink.compressor'='zstd, zstd',"
249- + "'sink.compressor.zstd.level'='3')" ,
250- receiverIp , receiverPort ));
251- } catch (SQLException e ) {
252- e .printStackTrace ();
253- fail (e .getMessage ());
254- }
255-
256- try (final Connection connection = senderEnv .getConnection ();
257- final Statement statement = connection .createStatement ()) {
258- statement .execute (
259- String .format (
260- "create pipe p2"
261- + " with source ('source.pattern'='root.db.d1.s2')"
262- + " with sink ("
263- + "'sink.ip'='%s',"
264- + "'sink.port'='%s',"
265- + "'sink.compressor'='zstd, zstd',"
266- + "'sink.compressor.zstd.level'='22')" ,
267- receiverIp , receiverPort ));
268- } catch (SQLException e ) {
269- e .printStackTrace ();
270- fail (e .getMessage ());
271- }
272-
273- try (final Connection connection = senderEnv .getConnection ();
274- final Statement statement = connection .createStatement ()) {
275- statement .execute (
276- String .format (
277- "create pipe p3"
278- + " with source ('source.pattern'='root.db.d1.s3')"
279- + " with sink ("
280- + "'sink.ip'='%s',"
281- + "'sink.port'='%s',"
282- + "'sink.compressor'='zstd, zstd',"
283- + "'sink.compressor.zstd.level'='-131072')" ,
284- receiverIp , receiverPort ));
285- } catch (SQLException e ) {
286- e .printStackTrace ();
287- fail (e .getMessage ());
288- }
289-
290- try (final Connection connection = senderEnv .getConnection ();
291- final Statement statement = connection .createStatement ()) {
292- statement .execute (
293- String .format (
294- "create pipe p4"
295- + " with source ('source.pattern'='root.db.d1.s4')"
296- + " with sink ("
297- + "'sink.ip'='%s',"
298- + "'sink.port'='%s',"
299- + "'sink.compressor'='zstd, zstd',"
300- + "'sink.compressor.zstd.level'='-131073')" ,
301- receiverIp , receiverPort ));
302- fail ();
303- } catch (SQLException e ) {
304- // Make sure the error message in IoTDBConnector.java is returned
305- Assert .assertTrue (e .getMessage ().contains ("Zstd compression level should be in the range" ));
306- }
307-
308- try (final Connection connection = senderEnv .getConnection ();
309- final Statement statement = connection .createStatement ()) {
310- statement .execute (
311- String .format (
312- "create pipe p5"
313- + " with source ('source.pattern'='root.db.d1.s5')"
314- + " with sink ("
315- + "'sink.ip'='%s',"
316- + "'sink.port'='%s',"
317- + "'sink.compressor'='zstd, zstd',"
318- + "'sink.compressor.zstd.level'='23')" ,
319- receiverIp , receiverPort ));
320- fail ();
321- } catch (SQLException e ) {
322- // Make sure the error message in IoTDBConnector.java is returned
323- Assert .assertTrue (e .getMessage ().contains ("Zstd compression level should be in the range" ));
324- }
226+ // Create legal zstd level pipes one by one, so the assertion identifies the exact level
227+ // that fails and avoids concurrent historical TsFile splitting for this level test.
228+ createZstdPipeAndAssertData (
229+ "p1" , "root.db.d1.s1" , "3" , receiverIp , receiverPort , "s1" , handleFailure );
230+ createZstdPipeAndAssertData (
231+ "p2" , "root.db.d1.s2" , "22" , receiverIp , receiverPort , "s2" , handleFailure );
232+ createZstdPipeAndAssertData (
233+ "p3" , "root.db.d1.s3" , "-131072" , receiverIp , receiverPort , "s3" , handleFailure );
234+
235+ assertCreateZstdPipeFailed ("p4" , "root.db.d1.s4" , "-131073" , receiverIp , receiverPort );
236+ assertCreateZstdPipeFailed ("p5" , "root.db.d1.s5" , "23" , receiverIp , receiverPort );
325237
326238 final List <TShowPipeInfo > showPipeResult =
327239 client .showPipe (new TShowPipeReq ().setUserName (SessionConfig .DEFAULT_USER )).pipeInfoList ;
@@ -331,13 +243,71 @@ public void testZstdCompressorLevel() throws Exception {
331243 showPipeResult .stream ()
332244 .filter (info -> !info .id .startsWith (PipeStaticMeta .SYSTEM_PIPE_PREFIX ))
333245 .count ());
246+ }
247+ }
334248
335- TestUtils .assertDataEventuallyOnEnv (
336- receiverEnv ,
337- "count timeseries root.db.**" ,
338- "count(timeseries)," ,
339- Collections .singleton ("3," ),
340- handleFailure );
249+ private void createZstdPipeAndAssertData (
250+ final String pipeName ,
251+ final String sourcePattern ,
252+ final String zstdLevel ,
253+ final String receiverIp ,
254+ final int receiverPort ,
255+ final String measurement ,
256+ final Consumer <String > handleFailure ) {
257+ TestUtils .executeNonQueries (
258+ senderEnv ,
259+ Arrays .asList (
260+ String .format ("insert into root.db.d1(time, %s) values (1, 1)" , measurement ), "flush" ),
261+ null );
262+
263+ try {
264+ createZstdPipe (pipeName , sourcePattern , zstdLevel , receiverIp , receiverPort );
265+ } catch (final SQLException e ) {
266+ e .printStackTrace ();
267+ fail (e .getMessage ());
268+ }
269+
270+ TestUtils .assertDataEventuallyOnEnv (
271+ receiverEnv ,
272+ String .format ("select count(%s) from root.db.d1" , measurement ),
273+ String .format ("count(root.db.d1.%s)," , measurement ),
274+ Collections .singleton ("1," ),
275+ handleFailure );
276+ }
277+
278+ private void assertCreateZstdPipeFailed (
279+ final String pipeName ,
280+ final String sourcePattern ,
281+ final String zstdLevel ,
282+ final String receiverIp ,
283+ final int receiverPort ) {
284+ try {
285+ createZstdPipe (pipeName , sourcePattern , zstdLevel , receiverIp , receiverPort );
286+ fail ();
287+ } catch (final SQLException e ) {
288+ Assert .assertTrue (e .getMessage ().contains ("Zstd compression level should be in the range" ));
289+ }
290+ }
291+
292+ private void createZstdPipe (
293+ final String pipeName ,
294+ final String sourcePattern ,
295+ final String zstdLevel ,
296+ final String receiverIp ,
297+ final int receiverPort )
298+ throws SQLException {
299+ try (final Connection connection = senderEnv .getConnection ();
300+ final Statement statement = connection .createStatement ()) {
301+ statement .execute (
302+ String .format (
303+ "create pipe %s"
304+ + " with source ('source.pattern'='%s')"
305+ + " with sink ("
306+ + "'sink.ip'='%s',"
307+ + "'sink.port'='%s',"
308+ + "'sink.compressor'='zstd, zstd',"
309+ + "'sink.compressor.zstd.level'='%s')" ,
310+ pipeName , sourcePattern , receiverIp , receiverPort , zstdLevel ));
341311 }
342312 }
343313}
0 commit comments