Skip to content

Commit 9f81dbb

Browse files
committed
Add TestEnvOptions to enable End to End tracing for the new Integration Test only.
1 parent 8bc559d commit 9f81dbb

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
3939
import io.opentelemetry.sdk.trace.export.SpanExporter;
4040
import io.opentelemetry.sdk.trace.samplers.Sampler;
41+
import java.util.Collection;
42+
import java.util.Collections;
4143
import java.util.Objects;
4244
import java.util.Random;
4345
import java.util.concurrent.ExecutionException;
@@ -79,10 +81,22 @@ public class IntegrationTestEnv extends ExternalResource {
7981
private final boolean alwaysCreateNewInstance;
8082
private RemoteSpannerHelper testHelper;
8183

84+
private Collection<TestEnvOptions> testEnvOptions = Collections.emptyList();
85+
86+
public enum TestEnvOptions {
87+
USE_END_TO_END_TRACING;
88+
// TODO : Move alwaysCreateNewInstance to TestEnvOptions
89+
}
90+
8291
public IntegrationTestEnv() {
8392
this(false);
8493
}
8594

95+
public IntegrationTestEnv(Collection<TestEnvOptions> testEnvOptions) {
96+
this(false);
97+
this.testEnvOptions = testEnvOptions;
98+
}
99+
86100
public IntegrationTestEnv(final boolean alwaysCreateNewInstance) {
87101
this.alwaysCreateNewInstance = alwaysCreateNewInstance;
88102
}
@@ -119,10 +133,15 @@ protected void before() throws Throwable {
119133
assumeFalse(alwaysCreateNewInstance && isCloudDevel());
120134

121135
this.config.setUp();
122-
// OpenTelemetry set up for enabling End to End tracing for all integration test env.
123-
// The gRPC stub and connections are created during test env set up using SpannerOptions and are
124-
// reused for executing statements.
125-
SpannerOptions options = spannerOptionsWithEndToEndTracing();
136+
SpannerOptions options = config.spannerOptions();
137+
if (testEnvOptions.stream()
138+
.anyMatch(testEnvOption -> TestEnvOptions.USE_END_TO_END_TRACING.equals(testEnvOption))) {
139+
// OpenTelemetry set up for enabling End to End tracing for all integration test env.
140+
// The gRPC stub and connections are created during test env set up using SpannerOptions and
141+
// are
142+
// reused for executing statements.
143+
options = spannerOptionsWithEndToEndTracing(options);
144+
}
126145
String instanceProperty = System.getProperty(TEST_INSTANCE_PROPERTY, "");
127146
InstanceId instanceId;
128147
if (!instanceProperty.isEmpty() && !alwaysCreateNewInstance) {
@@ -147,11 +166,10 @@ protected void before() throws Throwable {
147166
}
148167
}
149168

150-
public SpannerOptions spannerOptionsWithEndToEndTracing() {
169+
public SpannerOptions spannerOptionsWithEndToEndTracing(SpannerOptions options) {
151170
GlobalOpenTelemetry.resetForTest(); // reset global context for test
152171
assumeFalse("This test requires credentials", EmulatorSpannerHelper.isUsingEmulator());
153172

154-
SpannerOptions options = config.spannerOptions();
155173
TraceConfiguration.Builder traceConfigurationBuilder = TraceConfiguration.builder();
156174
if (options.getCredentials() != null) {
157175
traceConfigurationBuilder.setCredentials(options.getCredentials());

google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITEndToEndTracingTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.google.cloud.spanner.Database;
2727
import com.google.cloud.spanner.DatabaseClient;
2828
import com.google.cloud.spanner.IntegrationTestEnv;
29+
import com.google.cloud.spanner.IntegrationTestEnv.TestEnvOptions;
2930
import com.google.cloud.spanner.ParallelIntegrationTest;
3031
import com.google.cloud.spanner.ResultSet;
3132
import com.google.cloud.spanner.SpannerOptions;
@@ -43,6 +44,8 @@
4344
import io.opentelemetry.api.trace.Tracer;
4445
import io.opentelemetry.context.Scope;
4546
import java.io.IOException;
47+
import java.util.Arrays;
48+
import java.util.Collection;
4649
import org.junit.AfterClass;
4750
import org.junit.Before;
4851
import org.junit.BeforeClass;
@@ -56,8 +59,9 @@
5659
@Category(ParallelIntegrationTest.class)
5760
@RunWith(JUnit4.class)
5861
public class ITEndToEndTracingTest {
59-
60-
@ClassRule public static IntegrationTestEnv env = new IntegrationTestEnv();
62+
public static Collection<TestEnvOptions> testEnvOptions =
63+
Arrays.asList(TestEnvOptions.USE_END_TO_END_TRACING);
64+
@ClassRule public static IntegrationTestEnv env = new IntegrationTestEnv(testEnvOptions);
6165
private static DatabaseClient googleStandardSQLClient;
6266

6367
static {

0 commit comments

Comments
 (0)