Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.clickhouse.client;

import com.clickhouse.client.api.ClickHouseException;
import com.clickhouse.client.api.Client;
import com.clickhouse.client.api.ClientException;
import com.clickhouse.client.api.ClientMisconfigurationException;
import com.clickhouse.client.api.ClickHouseException;
import com.clickhouse.client.api.enums.Protocol;
import com.clickhouse.client.api.enums.ProxyType;
import com.clickhouse.client.api.insert.InsertResponse;
Expand Down Expand Up @@ -222,6 +222,7 @@ private Client.Builder clientBuilder(int proxyPort, boolean onlyNewImplementatio

private int initProxy() {
WireMockServer wireMock = new WireMockServer(WireMockConfiguration.options()
.dynamicPort()
// .notifier(new Slf4jNotifier(true))
);
wireMock.start();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@
import org.testng.annotations.Test;

import java.time.temporal.ChronoUnit;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;

public class MetricsTest extends BaseIntegrationTest {
private MeterRegistry meterRegistry;
Expand Down Expand Up @@ -67,25 +68,38 @@ public void testRegisterMetrics() throws Exception {
Assert.assertEquals((int) available.value(), 1);
Assert.assertEquals((int) leased.value(), 0);

final long maxDelay = isCloud() ? 300 : 15;
CountDownLatch responsesReady = new CountDownLatch(2);
CountDownLatch releaseResponses = new CountDownLatch(1);
Runnable task = () -> {
long t1 = System.currentTimeMillis();
try (QueryResponse response = client.query("SELECT 1").get()) {
long t = System.currentTimeMillis() - t1;
Assert.assertTrue(t < maxDelay, "Unexpected delay (t = " + t + ", but expected < " + maxDelay + " ms)");
Assert.assertEquals((int) available.value(), 0);
Assert.assertEquals((int) leased.value(), 1);
responsesReady.countDown();
Assert.assertTrue(releaseResponses.await(10, TimeUnit.SECONDS),
"Timed out waiting to release query responses");
} catch (Exception e) {
e.printStackTrace();
fail("Failed to to request", e);
throw new RuntimeException("Failed to execute request", e);
}
};

ExecutorService executor = Executors.newFixedThreadPool(3);
executor.submit(task);
executor.submit(task);
executor.shutdown();
executor.awaitTermination(10, TimeUnit.SECONDS);
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<?> firstQuery = executor.submit(task);
Future<?> secondQuery = executor.submit(task);
try {
try {
Assert.assertTrue(responsesReady.await(10, TimeUnit.SECONDS),
"Timed out waiting for concurrent query responses");
Assert.assertEquals((int) available.value(), 0);
Assert.assertEquals((int) leased.value(), 2);
} finally {
releaseResponses.countDown();
}
firstQuery.get(10, TimeUnit.SECONDS);
secondQuery.get(10, TimeUnit.SECONDS);
} finally {
releaseResponses.countDown();
executor.shutdownNow();
}
Assert.assertTrue(executor.awaitTermination(10, TimeUnit.SECONDS),
"Timed out waiting for query executor to terminate");

Assert.assertEquals((int) available.value(), 2);
Assert.assertEquals((int) leased.value(), 0);
Expand All @@ -95,7 +109,10 @@ public void testRegisterMetrics() throws Exception {
Assert.assertEquals((int) available.value(), 2);
Assert.assertEquals((int) leased.value(), 0);

task.run();
try (QueryResponse response = client.query("SELECT 1").get()) {
Assert.assertEquals((int) available.value(), 0);
Assert.assertEquals((int) leased.value(), 1);
}

Assert.assertEquals((int) available.value(), 1);
Assert.assertEquals((int) leased.value(), 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import com.clickhouse.client.api.ClientException;
import com.clickhouse.client.api.ServerException;
import com.clickhouse.client.api.command.CommandSettings;
import com.clickhouse.client.api.http.ClickHouseHttpProto;
import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader;
import com.clickhouse.client.api.data_formats.internal.BinaryStreamReader;
import com.clickhouse.client.api.enums.Protocol;
import com.clickhouse.client.api.http.ClickHouseHttpProto;
import com.clickhouse.client.api.insert.InsertResponse;
import com.clickhouse.client.api.insert.InsertSettings;
import com.clickhouse.client.api.internal.DataTypeConverter;
Expand Down Expand Up @@ -1029,6 +1029,10 @@ public void testIntegerDataTypes() {

@Test(groups = {"integration"})
public void testFloatDataTypes() {
final boolean usesPreciseFloatParsing = isVersionMatch("[26.7,)");
final float expectedMaxFloat32 = usesPreciseFloatParsing ? Float.MAX_VALUE : 3.4028233E38F;
final double expectedMinFloat64 = usesPreciseFloatParsing ? Double.MIN_VALUE : 0.0D;

final List<String> columns = Arrays.asList(
"min_float32 Float32",
"max_float32 Float32",
Expand Down Expand Up @@ -1060,12 +1064,12 @@ public void testFloatDataTypes() {

});
verifiers.add(r -> {
Assert.assertEquals(r.getFloat("max_float32"), 3.4028233E38F); // TODO: investigate why it's not Float.MAX_VALUE returned from server
Assert.assertEquals(r.getFloat(2), 3.4028233E38F);
Assert.assertEquals(r.getFloat("max_float32"), expectedMaxFloat32);
Assert.assertEquals(r.getFloat(2), expectedMaxFloat32);
});
verifiers.add(r -> {
Assert.assertEquals(r.getDouble("min_float64"), 0.0D); // TODO: investigate why it's not Double.MIN_VALUE returned from server
Assert.assertEquals(r.getDouble(3), 0.0D);
Assert.assertEquals(r.getDouble("min_float64"), expectedMinFloat64);
Assert.assertEquals(r.getDouble(3), expectedMinFloat64);
});
verifiers.add(r -> {
Assert.assertEquals(r.getDouble("max_float64"), Double.MAX_VALUE);
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
<jctools.version>4.0.1</jctools.version>
<opencensus.version>0.31.1</opencensus.version>
<protobuf.version>3.23.4</protobuf.version>
<lz4.version>1.10.4</lz4.version>
<lz4.version>1.11.1</lz4.version>
<msgpack.version>0.9.5</msgpack.version>
<roaring-bitmap.version>1.0.6</roaring-bitmap.version>
<slf4j.version>2.0.7</slf4j.version>
Expand Down
Loading