Convert couchbase-2-common javaagent unit tests from groovy to java (#9426)
This commit is contained in:
parent
6ca659a579
commit
590e352fcf
|
@ -3,9 +3,6 @@ plugins {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
testImplementation("org.apache.groovy:groovy")
|
||||
testImplementation("org.spockframework:spock-core")
|
||||
|
||||
testImplementation(project(":instrumentation-api-semconv"))
|
||||
testImplementation(project(":javaagent-extension-api"))
|
||||
testImplementation(project(":instrumentation:couchbase:couchbase-2-common:javaagent"))
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.couchbase.v2_0
|
||||
|
||||
import com.couchbase.client.java.analytics.AnalyticsQuery
|
||||
import com.couchbase.client.java.query.N1qlQuery
|
||||
import com.couchbase.client.java.query.Select
|
||||
import com.couchbase.client.java.query.dsl.Expression
|
||||
import com.couchbase.client.java.view.SpatialViewQuery
|
||||
import com.couchbase.client.java.view.ViewQuery
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
class CouchbaseQuerySanitizerTest extends Specification {
|
||||
@Unroll
|
||||
def "should normalize #desc query"() {
|
||||
when:
|
||||
def normalized = CouchbaseQuerySanitizer.sanitize(query).getFullStatement()
|
||||
|
||||
then:
|
||||
// the analytics query ends up with trailing ';' in earlier couchbase version, but no trailing ';' in later couchbase version
|
||||
normalized.replaceFirst(';$', '') == expected
|
||||
|
||||
where:
|
||||
desc | query | expected
|
||||
"plain string" | "SELECT field1 FROM `test` WHERE field2 = 'asdf'" | "SELECT field1 FROM `test` WHERE field2 = ?"
|
||||
"Statement" | Select.select("field1").from("test").where(Expression.path("field2").eq(Expression.s("asdf"))) | "SELECT field1 FROM test WHERE field2 = ?"
|
||||
"N1QL" | N1qlQuery.simple("SELECT field1 FROM `test` WHERE field2 = 'asdf'") | "SELECT field1 FROM `test` WHERE field2 = ?"
|
||||
"Analytics" | AnalyticsQuery.simple("SELECT field1 FROM `test` WHERE field2 = 'asdf'") | "SELECT field1 FROM `test` WHERE field2 = ?"
|
||||
"View" | ViewQuery.from("design", "view").skip(10) | 'ViewQuery(design/view){params="skip=10"}'
|
||||
"SpatialView" | SpatialViewQuery.from("design", "view").skip(10) | 'skip=10'
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.couchbase.v2_0;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Named.named;
|
||||
|
||||
import com.couchbase.client.java.analytics.AnalyticsQuery;
|
||||
import com.couchbase.client.java.query.N1qlQuery;
|
||||
import com.couchbase.client.java.query.Select;
|
||||
import com.couchbase.client.java.query.dsl.Expression;
|
||||
import com.couchbase.client.java.view.SpatialViewQuery;
|
||||
import com.couchbase.client.java.view.ViewQuery;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
class CouchbaseQuerySanitizerTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("providesArguments")
|
||||
void testShouldNormalizeStringQuery(Parameter parameter) {
|
||||
String normalized = CouchbaseQuerySanitizer.sanitize(parameter.query).getFullStatement();
|
||||
assertThat(normalized).isNotNull();
|
||||
// the analytics query ends up with trailing ';' in earlier couchbase version, but no trailing
|
||||
// ';' in later couchbase version
|
||||
assertThat(normalized.replaceFirst(";$", "")).isEqualTo(parameter.expected);
|
||||
}
|
||||
|
||||
private static Stream<Arguments> providesArguments() {
|
||||
return Stream.of(
|
||||
Arguments.of(
|
||||
named(
|
||||
"plain string",
|
||||
new Parameter(
|
||||
"SELECT field1 FROM `test` WHERE field2 = 'asdf'",
|
||||
"SELECT field1 FROM `test` WHERE field2 = ?"))),
|
||||
Arguments.of(
|
||||
named(
|
||||
"Statement",
|
||||
new Parameter(
|
||||
Select.select("field1")
|
||||
.from("test")
|
||||
.where(Expression.path("field2").eq(Expression.s("asdf"))),
|
||||
"SELECT field1 FROM test WHERE field2 = ?"))),
|
||||
Arguments.of(
|
||||
named(
|
||||
"N1QL",
|
||||
new Parameter(
|
||||
N1qlQuery.simple("SELECT field1 FROM `test` WHERE field2 = 'asdf'"),
|
||||
"SELECT field1 FROM `test` WHERE field2 = ?"))),
|
||||
Arguments.of(
|
||||
named(
|
||||
"Analytics",
|
||||
new Parameter(
|
||||
AnalyticsQuery.simple("SELECT field1 FROM `test` WHERE field2 = 'asdf'"),
|
||||
"SELECT field1 FROM `test` WHERE field2 = ?"))),
|
||||
Arguments.of(
|
||||
named(
|
||||
"View",
|
||||
new Parameter(
|
||||
ViewQuery.from("design", "view").skip(10),
|
||||
"ViewQuery(design/view){params=\"skip=10\"}"))),
|
||||
Arguments.of(
|
||||
named(
|
||||
"SpatialView",
|
||||
new Parameter(SpatialViewQuery.from("design", "view").skip(10), "skip=10"))));
|
||||
}
|
||||
|
||||
private static class Parameter {
|
||||
public final Object query;
|
||||
public final String expected;
|
||||
|
||||
public Parameter(Object query, String expected) {
|
||||
this.query = query;
|
||||
this.expected = expected;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue