Skip to content

Commit c16c75c

Browse files
committed
update clickhouse-client to 0.8
1 parent 9cf7c6f commit c16c75c

File tree

8 files changed

+86
-19
lines changed

8 files changed

+86
-19
lines changed

instrumentation/clickhouse/clickhouse-client-0.6/javaagent/build.gradle.kts renamed to instrumentation/clickhouse/clickhouse-client-0.8/javaagent/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ muzzle {
66
pass {
77
group.set("com.clickhouse")
88
module.set("client-v2")
9-
versions.set("[0.6.4,)")
9+
versions.set("[0.8.0,)")
1010
assertInverse.set(true)
1111
}
1212
}
1313

1414
dependencies {
1515
implementation(project(":instrumentation:clickhouse:clickhouse-client-common:javaagent"))
16-
compileOnly("com.clickhouse:client-v2:0.6.4")
16+
compileOnly("com.clickhouse:client-v2:0.8.0")
1717

1818
testImplementation("com.google.guava:guava")
1919
testImplementation(project(":instrumentation:clickhouse:testing"))
20-
testLibrary("com.clickhouse:client-v2:0.6.4")
20+
testLibrary("com.clickhouse:client-v2:0.8.0")
2121
}
2222

2323
val collectMetadata = findProperty("collectMetadata")?.toString() ?: "false"
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_6;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8;
77

88
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
9+
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
910
import static net.bytebuddy.matcher.ElementMatchers.isSubTypeOf;
1011
import static net.bytebuddy.matcher.ElementMatchers.named;
1112
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
@@ -26,10 +27,11 @@ public ElementMatcher<TypeDescription> typeMatcher() {
2627
public void transform(TypeTransformer transformer) {
2728
transformer.applyAdviceToMethod(
2829
isMethod()
30+
.and(isPublic())
2931
.and(named("query"))
3032
.and(takesArgument(0, String.class))
3133
.and(takesArgument(1, isSubTypeOf(Map.class)))
3234
.and(takesArgument(2, named("com.clickhouse.client.api.query.QuerySettings"))),
33-
"io.opentelemetry.javaagent.instrumentation.clickhouse.v0_6.ClickHouseClientV2QueryAdvice");
35+
"io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8.ClickHouseClientV2QueryAdvice");
3436
}
3537
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_6;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8;
77

88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
@@ -17,7 +17,7 @@ public class ClickHouseClientV2InstrumentationModule extends InstrumentationModu
1717
implements ExperimentalInstrumentationModule {
1818

1919
public ClickHouseClientV2InstrumentationModule() {
20-
super("clickhouse-client", "clickhouse-client-0.6", "clickhouse");
20+
super("clickhouse-client", "clickhouse-client-0.8", "clickhouse");
2121
}
2222

2323
@Override
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_6;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8;
77

88
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
99

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_6;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8;
77

88
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
99
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseDbRequest;
1010
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseInstrumenterFactory;
1111

1212
public final class ClickHouseClientV2Singletons {
1313

14-
private static final String INSTRUMENTER_NAME = "io.opentelemetry.clickhouse-client-0.6";
14+
private static final String INSTRUMENTER_NAME = "io.opentelemetry.clickhouse-client-0.8";
1515
private static final Instrumenter<ClickHouseDbRequest, Void> INSTRUMENTER;
1616

1717
static {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8;
7+
8+
@SuppressWarnings("unused")
9+
public class ClickHouseClientV2ExampleData {
10+
private String value;
11+
12+
public String getValue() {
13+
return value;
14+
}
15+
16+
public void setValue(String value) {
17+
this.value = value;
18+
}
19+
20+
public ClickHouseClientV2ExampleData(String value) {
21+
this.value = value;
22+
}
23+
}
Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_6;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.v0_8;
77

88
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
99
import static io.opentelemetry.javaagent.instrumentation.clickhouse.testing.ClickHouseAttributeAssertions.attributeAssertions;
@@ -19,7 +19,7 @@
1919
import static org.assertj.core.api.Assertions.catchThrowable;
2020

2121
import com.clickhouse.client.api.Client;
22-
import com.clickhouse.client.api.ClientException;
22+
import com.clickhouse.client.api.ServerException;
2323
import com.clickhouse.client.api.command.CommandResponse;
2424
import com.clickhouse.client.api.enums.Protocol;
2525
import com.clickhouse.client.api.query.QueryResponse;
@@ -31,8 +31,11 @@
3131
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
3232
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
3333
import io.opentelemetry.sdk.trace.data.StatusData;
34+
import java.time.Instant;
3435
import java.util.ArrayList;
36+
import java.util.HashMap;
3537
import java.util.List;
38+
import java.util.Map;
3639
import java.util.concurrent.CompletableFuture;
3740
import org.junit.jupiter.api.AfterAll;
3841
import org.junit.jupiter.api.BeforeAll;
@@ -71,11 +74,13 @@ void setup() throws Exception {
7174
.setDefaultDatabase(dbName)
7275
.setUsername(username)
7376
.setPassword(password)
74-
.setOption("compress", "0")
77+
.setOption("compress", "false")
7578
.build();
7679

7780
QueryResponse response =
78-
client.query("create table if not exists " + tableName + "(s String) engine=Memory").get();
81+
client
82+
.query("create table if not exists " + tableName + "(value String) engine=Memory")
83+
.get();
7984
response.close();
8085

8186
// wait for CREATE operation and clear
@@ -96,7 +101,9 @@ void testConnectionStringWithoutDatabaseSpecifiedStillGeneratesSpans() throws Ex
96101
Client client =
97102
new Client.Builder()
98103
.addEndpoint(Protocol.HTTP, host, port, false)
99-
.setOption("compress", "0")
104+
.setOption("compress", "false")
105+
.setUsername(username)
106+
.setPassword(password)
100107
.build();
101108

102109
QueryResponse response = client.query("select * from " + tableName).get();
@@ -115,7 +122,7 @@ void testConnectionStringWithoutDatabaseSpecifiedStillGeneratesSpans() throws Ex
115122

116123
assertDurationMetric(
117124
testing,
118-
"io.opentelemetry.clickhouse-client-0.6",
125+
"io.opentelemetry.clickhouse-client-0.8",
119126
DB_SYSTEM_NAME,
120127
DB_OPERATION_NAME,
121128
DB_NAMESPACE,
@@ -194,7 +201,7 @@ void testQueryThrowsException() {
194201
response.close();
195202
});
196203

197-
assertThat(thrown).isInstanceOf(ClientException.class);
204+
assertThat(thrown).isInstanceOf(ServerException.class);
198205

199206
List<AttributeAssertion> assertions =
200207
new ArrayList<>(
@@ -222,7 +229,7 @@ void testSendQuery() throws Exception {
222229
CompletableFuture<CommandResponse> future =
223230
client.execute("select * from " + tableName + " limit 1");
224231
CommandResponse results = future.get();
225-
assertThat(results.getReadRows()).isEqualTo(0);
232+
assertThat(results.getReadRows()).isEqualTo(2);
226233
});
227234

228235
testing.waitAndAssertTraces(
@@ -241,4 +248,39 @@ void testSendQuery() throws Exception {
241248
"select * from " + tableName + " limit ?",
242249
"SELECT"))));
243250
}
251+
252+
@Test
253+
void testPlaceholderQuery() throws Exception {
254+
Map<String, Object> queryParams = new HashMap<>();
255+
queryParams.put("param_s", Instant.now().getEpochSecond());
256+
257+
testing.runWithSpan(
258+
"parent",
259+
() -> {
260+
QueryResponse response =
261+
client
262+
.query(
263+
"select * from " + tableName + " where value={param_s: String}",
264+
queryParams,
265+
null)
266+
.get();
267+
response.close();
268+
});
269+
270+
testing.waitAndAssertTraces(
271+
trace ->
272+
trace.hasSpansSatisfyingExactly(
273+
span -> span.hasName("parent").hasNoParent().hasAttributes(Attributes.empty()),
274+
span ->
275+
span.hasName("SELECT " + dbName)
276+
.hasKind(SpanKind.CLIENT)
277+
.hasParent(trace.getSpan(0))
278+
.hasAttributesSatisfyingExactly(
279+
attributeAssertions(
280+
dbName,
281+
host,
282+
port,
283+
"select * from " + tableName + " where value={param_s: String}",
284+
"SELECT"))));
285+
}
244286
}

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ include(":instrumentation:cassandra:cassandra-4.4:testing")
191191
include(":instrumentation:cassandra:cassandra-4-common:testing")
192192
include(":instrumentation:cdi-testing")
193193
include(":instrumentation:clickhouse:clickhouse-client-common:javaagent")
194-
include(":instrumentation:clickhouse:clickhouse-client-0.6:javaagent")
194+
include(":instrumentation:clickhouse:clickhouse-client-0.8:javaagent")
195195
include(":instrumentation:clickhouse:clickhouse-client-0.5:javaagent")
196196
include(":instrumentation:clickhouse:testing")
197197
include(":instrumentation:couchbase:couchbase-2.0:javaagent")

0 commit comments

Comments
 (0)