Skip to content

Commit c743b6d

Browse files
authored
Convert mongo-common tests from groovy to java (#12382)
1 parent c3d8ed4 commit c743b6d

File tree

22 files changed

+1947
-1555
lines changed

22 files changed

+1947
-1555
lines changed

instrumentation/mongo/mongo-3.1/javaagent/src/test/groovy/MongoClientTest.groovy

Lines changed: 0 additions & 14 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.mongo.v3_1;
7+
8+
import com.mongodb.MongoClientOptions;
9+
import io.opentelemetry.instrumentation.mongo.v3_1.AbstractMongo31ClientTest;
10+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
11+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
12+
import org.junit.jupiter.api.extension.RegisterExtension;
13+
14+
class MongoClientTest extends AbstractMongo31ClientTest {
15+
16+
@RegisterExtension
17+
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
18+
19+
@Override
20+
protected void configureMongoClientOptions(MongoClientOptions.Builder options) {}
21+
22+
@Override
23+
protected InstrumentationExtension testing() {
24+
return testing;
25+
}
26+
}

instrumentation/mongo/mongo-3.1/library/src/test/groovy/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.groovy

Lines changed: 0 additions & 16 deletions
This file was deleted.

instrumentation/mongo/mongo-3.1/library/src/test/groovy/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetterTest.groovy

Lines changed: 0 additions & 88 deletions
This file was deleted.

instrumentation/mongo/mongo-3.1/library/src/test/groovy/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractorTest.groovy

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.mongo.v3_1;
7+
8+
import com.mongodb.MongoClientOptions;
9+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
10+
import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
class MongoClientTest extends AbstractMongo31ClientTest {
14+
15+
@RegisterExtension
16+
private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create();
17+
18+
@Override
19+
protected void configureMongoClientOptions(MongoClientOptions.Builder options) {
20+
options.addCommandListener(
21+
MongoTelemetry.create(testing().getOpenTelemetry()).newCommandListener());
22+
}
23+
24+
@Override
25+
protected InstrumentationExtension testing() {
26+
return testing;
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.mongo.v3_1;
7+
8+
import static io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetryBuilder.DEFAULT_MAX_NORMALIZED_QUERY_LENGTH;
9+
import static java.util.Arrays.asList;
10+
import static java.util.Collections.singletonList;
11+
import static org.assertj.core.api.Assertions.assertThat;
12+
13+
import org.bson.BsonArray;
14+
import org.bson.BsonDocument;
15+
import org.bson.BsonInt32;
16+
import org.bson.BsonString;
17+
import org.junit.jupiter.api.DisplayName;
18+
import org.junit.jupiter.api.Test;
19+
20+
class MongoDbAttributesGetterTest {
21+
22+
@Test
23+
@DisplayName("should sanitize statements to json")
24+
void shouldSanitizeStatementsToJson() {
25+
MongoDbAttributesGetter extractor =
26+
new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH);
27+
28+
assertThat(
29+
sanitizeStatementAcrossVersions(extractor, new BsonDocument("cmd", new BsonInt32(1))))
30+
.isEqualTo("{\"cmd\": \"?\"}");
31+
32+
assertThat(
33+
sanitizeStatementAcrossVersions(
34+
extractor,
35+
new BsonDocument("cmd", new BsonInt32(1))
36+
.append("sub", new BsonDocument("a", new BsonInt32(1)))))
37+
.isEqualTo("{\"cmd\": \"?\", \"sub\": {\"a\": \"?\"}}");
38+
39+
assertThat(
40+
sanitizeStatementAcrossVersions(
41+
extractor,
42+
new BsonDocument("cmd", new BsonInt32(1))
43+
.append("sub", new BsonArray(singletonList(new BsonInt32(1))))))
44+
.isEqualTo("{\"cmd\": \"?\", \"sub\": [\"?\"]}");
45+
}
46+
47+
@Test
48+
@DisplayName("should only preserve string value if it is the value of the first top-level key")
49+
void shouldOnlyPreserveStringValueIfItIsTheValueOfTheFirstTopLevelKey() {
50+
MongoDbAttributesGetter extractor =
51+
new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH);
52+
53+
assertThat(
54+
sanitizeStatementAcrossVersions(
55+
extractor,
56+
new BsonDocument("cmd", new BsonString("c"))
57+
.append("f", new BsonString("c"))
58+
.append("sub", new BsonString("c"))))
59+
.isEqualTo("{\"cmd\": \"c\", \"f\": \"?\", \"sub\": \"?\"}");
60+
}
61+
62+
@Test
63+
@DisplayName("should truncate simple command")
64+
void shouldTruncateSimpleCommand() {
65+
MongoDbAttributesGetter extractor = new MongoDbAttributesGetter(true, 20);
66+
67+
String normalized =
68+
sanitizeStatementAcrossVersions(
69+
extractor,
70+
new BsonDocument("cmd", new BsonString("c"))
71+
.append("f1", new BsonString("c1"))
72+
.append("f2", new BsonString("c2")));
73+
74+
// This can vary because of different whitespace for different MongoDB versions
75+
assertThat(normalized).isIn("{\"cmd\": \"c\", \"f1\": \"", "{\"cmd\": \"c\", \"f1\" ");
76+
}
77+
78+
@Test
79+
@DisplayName("should truncate array")
80+
void shouldTruncateArray() {
81+
MongoDbAttributesGetter extractor = new MongoDbAttributesGetter(true, 27);
82+
83+
String normalized =
84+
sanitizeStatementAcrossVersions(
85+
extractor,
86+
new BsonDocument("cmd", new BsonString("c"))
87+
.append("f1", new BsonArray(asList(new BsonString("c1"), new BsonString("c2"))))
88+
.append("f2", new BsonString("c3")));
89+
90+
// This can vary because of different whitespace for different MongoDB versions
91+
assertThat(normalized)
92+
.isIn("{\"cmd\": \"c\", \"f1\": [\"?\", \"?", "{\"cmd\": \"c\", \"f1\": [\"?\",");
93+
}
94+
95+
static String sanitizeStatementAcrossVersions(
96+
MongoDbAttributesGetter extractor, BsonDocument query) {
97+
return sanitizeAcrossVersions(extractor.sanitizeStatement(query));
98+
}
99+
100+
static String sanitizeAcrossVersions(String json) {
101+
json = json.replaceAll("\\{ ", "{");
102+
json = json.replaceAll(" }", "}");
103+
json = json.replaceAll(" :", ":");
104+
return json;
105+
}
106+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.mongo.v3_1;
7+
8+
import static io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetryBuilder.DEFAULT_MAX_NORMALIZED_QUERY_LENGTH;
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
import com.mongodb.event.CommandStartedEvent;
12+
import org.bson.BsonDocument;
13+
import org.bson.BsonInt32;
14+
import org.junit.jupiter.api.DisplayName;
15+
import org.junit.jupiter.api.Test;
16+
17+
class MongoSpanNameExtractorTest {
18+
19+
@Test
20+
@DisplayName("test span name with no dbName")
21+
void testSpanNameWithNoDbName() {
22+
MongoSpanNameExtractor nameExtractor =
23+
new MongoSpanNameExtractor(
24+
new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH),
25+
new MongoAttributesExtractor());
26+
27+
String command = "listDatabases";
28+
CommandStartedEvent event =
29+
new CommandStartedEvent(
30+
0, null, null, command, new BsonDocument(command, new BsonInt32(1)));
31+
32+
String spanName = nameExtractor.extract(event);
33+
34+
assertThat(spanName).isEqualTo(command);
35+
}
36+
}

instrumentation/mongo/mongo-3.1/testing/build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,5 @@ dependencies {
77

88
compileOnly("org.mongodb:mongo-java-driver:3.1.0")
99

10-
implementation("org.apache.groovy:groovy")
1110
implementation("io.opentelemetry:opentelemetry-api")
12-
implementation("org.spockframework:spock-core")
1311
}

0 commit comments

Comments
 (0)