Skip to content

Commit a61536d

Browse files
committed
added some tests
1 parent 277d1fd commit a61536d

File tree

3 files changed

+111
-3
lines changed

3 files changed

+111
-3
lines changed

client-v2/src/test/java/com/clickhouse/client/HttpTransportTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public void testSecureConnection() {
223223
.setUsername("default")
224224
.setPassword("")
225225
.setRootCertificate("containers/clickhouse-server/certs/localhost.crt")
226-
.useNewImplementation(System.getProperty("client.tests.useNewImplementation", "true").equals("true"))
226+
.compressClientRequest(true)
227227
.build()) {
228228

229229
List<GenericRecord> records = client.queryAll("SELECT timezone()");
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,77 @@
11
package com.clickhouse.client.insert;
22

3+
import com.clickhouse.client.ClickHouseNode;
4+
import com.clickhouse.client.ClickHouseProtocol;
5+
import com.clickhouse.client.api.Client;
6+
import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader;
7+
import com.clickhouse.client.api.insert.InsertResponse;
8+
import com.clickhouse.client.api.insert.InsertSettings;
9+
import com.clickhouse.client.api.query.GenericRecord;
10+
import com.clickhouse.client.api.query.QueryResponse;
11+
import org.testcontainers.shaded.org.apache.commons.lang3.RandomStringUtils;
12+
import org.testng.Assert;
13+
import org.testng.annotations.Test;
14+
15+
import java.util.Collections;
16+
import java.util.List;
17+
import java.util.UUID;
18+
import java.util.concurrent.TimeUnit;
19+
320
public class InsertClientContentCompressionTests extends InsertTests {
421
public InsertClientContentCompressionTests() {
522
super(true, false);
623
}
24+
25+
26+
@Test(groups = { "integration" })
27+
public void testInsertAndReadBackWithSecureConnection() {
28+
ClickHouseNode secureServer = getSecureServer(ClickHouseProtocol.HTTP);
29+
30+
try (Client client = new Client.Builder()
31+
.addEndpoint("https://localhost:" + secureServer.getPort())
32+
.setUsername("default")
33+
.setPassword("")
34+
.setRootCertificate("containers/clickhouse-server/certs/localhost.crt")
35+
.compressClientRequest(true)
36+
.build()) {
37+
final String tableName = "single_pojo_table";
38+
final String createSQL = SamplePOJO.generateTableCreateSQL(tableName);
39+
final SamplePOJO pojo = new SamplePOJO();
40+
41+
initTable(tableName, createSQL);
42+
43+
client.register(SamplePOJO.class, client.getTableSchema(tableName, "default"));
44+
InsertSettings settings = new InsertSettings()
45+
.setDeduplicationToken(RandomStringUtils.randomAlphabetic(36))
46+
.setQueryId(String.valueOf(UUID.randomUUID()));
47+
System.out.println("Inserting POJO: " + pojo);
48+
try (InsertResponse response = client.insert(tableName, Collections.singletonList(pojo), settings).get(10, TimeUnit.SECONDS)) {
49+
Assert.assertEquals(response.getWrittenRows(), 1);
50+
}
51+
52+
try (QueryResponse queryResponse =
53+
client.query("SELECT * FROM " + tableName + " LIMIT 1").get(10, TimeUnit.SECONDS)) {
54+
55+
ClickHouseBinaryFormatReader reader = client.newBinaryFormatReader(queryResponse);
56+
Assert.assertNotNull(reader.next());
57+
58+
Assert.assertEquals(reader.getByte("byteValue"), pojo.getByteValue());
59+
Assert.assertEquals(reader.getByte("int8"), pojo.getInt8());
60+
Assert.assertEquals(reader.getShort("uint8"), pojo.getUint8());
61+
Assert.assertEquals(reader.getShort("int16"), pojo.getInt16());
62+
Assert.assertEquals(reader.getInteger("int32"), pojo.getInt32());
63+
Assert.assertEquals(reader.getLong("int64"), pojo.getInt64());
64+
Assert.assertEquals(reader.getFloat("float32"), pojo.getFloat32());
65+
Assert.assertEquals(reader.getDouble("float64"), pojo.getFloat64());
66+
Assert.assertEquals(reader.getString("string"), pojo.getString());
67+
Assert.assertEquals(reader.getString("fixedString"), pojo.getFixedString());
68+
}
69+
List<GenericRecord> records = client.queryAll("SELECT timezone()");
70+
Assert.assertTrue(records.size() > 0);
71+
Assert.assertEquals(records.get(0).getString(1), "UTC");
72+
} catch (Exception e) {
73+
e.printStackTrace();
74+
Assert.fail(e.getMessage());
75+
}
76+
}
777
}

client-v2/src/test/java/com/clickhouse/client/insert/InsertTests.java

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.clickhouse.client.api.query.QuerySettings;
2121
import com.clickhouse.data.ClickHouseFormat;
2222
import com.clickhouse.data.ClickHouseVersion;
23+
import com.clickhouse.data.stream.ByteArrayQueueInputStream;
2324
import org.apache.commons.lang3.StringEscapeUtils;
2425
import org.testcontainers.shaded.org.apache.commons.lang3.RandomStringUtils;
2526
import org.testng.Assert;
@@ -37,7 +38,9 @@
3738
import java.util.ArrayList;
3839
import java.util.Arrays;
3940
import java.util.Collections;
41+
import java.util.LinkedList;
4042
import java.util.List;
43+
import java.util.Queue;
4144
import java.util.UUID;
4245
import java.util.concurrent.TimeUnit;
4346

@@ -66,13 +69,17 @@ public InsertTests(boolean useClientCompression, boolean useHttpCompression) {
6669
@BeforeMethod(groups = { "integration" })
6770
public void setUp() throws IOException {
6871
ClickHouseNode node = getServer(ClickHouseProtocol.HTTP);
72+
int bufferSize = (7 * 65500);
73+
6974
client = new Client.Builder()
7075
.addEndpoint(Protocol.HTTP, node.getHost(), node.getPort(), false)
7176
.setUsername("default")
7277
.setPassword("")
73-
.useNewImplementation(System.getProperty("client.tests.useNewImplementation", "true").equals("true"))
7478
.compressClientRequest(useClientCompression)
7579
.useHttpCompression(useHttpCompression)
80+
.setSocketSndbuf(bufferSize)
81+
.setSocketRcvbuf(bufferSize)
82+
.setClientNetworkBufferSize(bufferSize)
7683
.build();
7784
settings = new InsertSettings()
7885
.setDeduplicationToken(RandomStringUtils.randomAlphabetic(36))
@@ -227,6 +234,37 @@ public void insertRawData() throws Exception {
227234
}
228235

229236

237+
@Test(groups = { "integration" }, enabled = true)
238+
public void insertRawDataQueued() throws Exception {
239+
final String tableName = "raw_data_table";
240+
final String createSQL = "CREATE TABLE " + tableName +
241+
" (Id UInt32, event_ts Timestamp, name String, p1 Int64, p2 String) ENGINE = MergeTree() ORDER BY ()";
242+
243+
initTable(tableName, createSQL);
244+
settings.setInputStreamCopyBufferSize(8198 * 2);
245+
settings.compressClientRequest(true);
246+
Queue<byte[]> queue = new LinkedList<>();
247+
ByteArrayQueueInputStream qIn = new ByteArrayQueueInputStream(queue, null);
248+
for (int i = 0; i < 10; i++) {
249+
if (i > 2 && i < 5) {
250+
queue.add(new byte[0]);
251+
} else {
252+
queue.add(String.format("{ \"Id\": %d, \"events_ts\": \"%s\", \"name\": \"%s\", \"p1\": \"%d\", \"p2\": \"%s\"}\n", i, "2021-01-01 00:00:00", "name" + i, i, "p2").getBytes());
253+
}
254+
}
255+
InsertResponse response = client.insert(tableName, qIn,
256+
ClickHouseFormat.JSONEachRow, settings).get(30, TimeUnit.SECONDS);
257+
258+
assertEquals((int)response.getWrittenRows(), 10 );
259+
260+
List<GenericRecord> records = client.queryAll("SELECT * FROM " + tableName);
261+
assertEquals(records.size(), 10);
262+
for (GenericRecord record : records) {
263+
System.out.println(record.getString(1) + " " +record.getString(2) + " " +record.getString(3) + " " +record.getString(4) + " " +record.getString(5) + " ");
264+
}
265+
}
266+
267+
230268
@Test(groups = { "integration" }, enabled = true)
231269
public void insertRawDataSimple() throws Exception {
232270
insertRawDataSimple(1000);
@@ -379,7 +417,7 @@ public static Object[] logCommentDataProvider() {
379417
};
380418
}
381419

382-
private void initTable(String tableName, String createTableSQL) throws Exception {
420+
protected void initTable(String tableName, String createTableSQL) throws Exception {
383421
client.execute("DROP TABLE IF EXISTS " + tableName).get(EXECUTE_CMD_TIMEOUT, TimeUnit.SECONDS);
384422
client.execute(createTableSQL).get(EXECUTE_CMD_TIMEOUT, TimeUnit.SECONDS);
385423
}

0 commit comments

Comments
 (0)