Skip to content

Commit a386876

Browse files
committed
added tests for concurrent copy
1 parent a168f30 commit a386876

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

clickhouse-client/src/test/java/com/clickhouse/client/ClickHouseRequestTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@
1111
import java.util.ArrayList;
1212
import java.util.Collections;
1313
import java.util.HashMap;
14+
import java.util.HashSet;
1415
import java.util.List;
1516
import java.util.Map;
1617
import java.util.Optional;
1718
import java.util.Properties;
19+
import java.util.Set;
1820
import java.util.UUID;
21+
import java.util.concurrent.ExecutorService;
22+
import java.util.concurrent.Executors;
23+
import java.util.concurrent.ScheduledExecutorService;
24+
import java.util.concurrent.TimeUnit;
1925

2026
import org.testng.Assert;
2127
import org.testng.annotations.Test;
@@ -654,4 +660,35 @@ public void testMutation() {
654660
Assert.assertEquals(request.getQuery(), expectedSql);
655661
Assert.assertEquals(request.getStatements().get(0), expectedSql);
656662
}
663+
664+
@Test
665+
public void testConcurrentUse() {
666+
ClickHouseRequest<?> request = ClickHouseClient.newInstance().read(ClickHouseNode.builder().build());
667+
Assert.assertNotNull(request);
668+
669+
ScheduledExecutorService executor = Executors.newScheduledThreadPool(3);
670+
671+
final List<ClickHouseRequest<?>> sealedRequests = new ArrayList<>();
672+
673+
for (int i = 0; i < 3; i++) {
674+
executor.scheduleWithFixedDelay(() -> {
675+
String queryID = UUID.randomUUID().toString();
676+
// System.out.println(System.currentTimeMillis() + " Thread " + Thread.currentThread().getId() + " qId: " + queryID);
677+
sealedRequests.add(request.query("select 1", queryID).seal());
678+
}, 100, 100, TimeUnit.MILLISECONDS);
679+
}
680+
681+
try {
682+
Thread.sleep(1000);
683+
} catch (InterruptedException e) {
684+
Assert.fail("Thread sleep interrupted");
685+
}
686+
executor.shutdown();
687+
final Set<String> queryIDs = new HashSet<>();
688+
for (ClickHouseRequest<?> r : sealedRequests) {
689+
// System.out.println(queryIDs);
690+
Assert.assertTrue(queryIDs.add(r.getQueryId().get()), "Query ID should be unique: " +
691+
r.getQueryId().get());
692+
}
693+
}
657694
}

0 commit comments

Comments
 (0)