Skip to content

Commit a2497bb

Browse files
test: add ability to inject tracing cookies for integration tests (#2142)
1 parent 5f246ef commit a2497bb

File tree

1 file changed

+32
-2
lines changed
  • google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env

1 file changed

+32
-2
lines changed

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java

+32-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.google.api.core.ApiFunction;
1919
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2020
import com.google.api.gax.rpc.FixedHeaderProvider;
21+
import com.google.api.gax.rpc.HeaderProvider;
2122
import com.google.api.gax.rpc.StubSettings;
2223
import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient;
2324
import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings;
@@ -31,6 +32,7 @@
3132
import com.google.common.base.Predicate;
3233
import com.google.common.base.Predicates;
3334
import com.google.common.base.Strings;
35+
import com.google.common.collect.ImmutableMap;
3436
import io.grpc.CallOptions;
3537
import io.grpc.Channel;
3638
import io.grpc.ClientCall;
@@ -48,6 +50,7 @@
4850
import java.util.HashMap;
4951
import java.util.List;
5052
import java.util.Map;
53+
import java.util.Optional;
5154
import javax.annotation.Nullable;
5255

5356
/**
@@ -84,9 +87,12 @@ public boolean apply(InetSocketAddress input) {
8487
private static final String TABLE_PROPERTY_NAME = "bigtable.table";
8588
private static final String CMEK_KMS_KEY_PROPERTY_NAME = "bigtable.kms_key_name";
8689

90+
private static final String TRACING_COOKIE_PROPERTY_NAME = "bigtable.tracing_cookie";
91+
8792
private final String projectId;
8893
private final String instanceId;
8994
private final String tableId;
95+
private final String tracingCookie;
9096
private final String kmsKeyName;
9197

9298
private final BigtableDataSettings.Builder dataSettings;
@@ -104,7 +110,8 @@ static CloudEnv fromSystemProperties() {
104110
getOptionalProperty(CMEK_KMS_KEY_PROPERTY_NAME, ""),
105111
getRequiredProperty(PROJECT_PROPERTY_NAME),
106112
getRequiredProperty(INSTANCE_PROPERTY_NAME),
107-
getRequiredProperty(TABLE_PROPERTY_NAME));
113+
getRequiredProperty(TABLE_PROPERTY_NAME),
114+
getOptionalProperty(TRACING_COOKIE_PROPERTY_NAME));
108115
}
109116

110117
private CloudEnv(
@@ -113,10 +120,12 @@ private CloudEnv(
113120
@Nullable String kmsKeyName,
114121
String projectId,
115122
String instanceId,
116-
String tableId) {
123+
String tableId,
124+
@Nullable String tracingCookie) {
117125
this.projectId = projectId;
118126
this.instanceId = instanceId;
119127
this.tableId = tableId;
128+
this.tracingCookie = tracingCookie;
120129
this.kmsKeyName = kmsKeyName;
121130

122131
this.dataSettings =
@@ -127,6 +136,9 @@ private CloudEnv(
127136

128137
setupRemoteAddrInterceptor(dataSettings.stubSettings());
129138
configureUserAgent(dataSettings.stubSettings());
139+
if (tracingCookie != null) {
140+
injectTracingCookie(tracingCookie, dataSettings.stubSettings());
141+
}
130142

131143
this.tableAdminSettings =
132144
BigtableTableAdminSettings.newBuilder().setProjectId(projectId).setInstanceId(instanceId);
@@ -140,6 +152,18 @@ private CloudEnv(
140152
}
141153
}
142154

155+
private static void injectTracingCookie(
156+
String tracingCookie, EnhancedBigtableStubSettings.Builder settings) {
157+
HeaderProvider oldHeaderProvider = settings.getHeaderProvider();
158+
settings.setHeaderProvider(
159+
() ->
160+
Optional.ofNullable(oldHeaderProvider)
161+
.map(p -> ImmutableMap.<String, String>builder().putAll(p.getHeaders()))
162+
.orElse(ImmutableMap.builder())
163+
.put("cookie", tracingCookie)
164+
.build());
165+
}
166+
143167
private void setupRemoteAddrInterceptor(StubSettings.Builder stubSettings) {
144168
// Build an remote address restricting interceptor
145169
final ClientInterceptor interceptor;
@@ -204,6 +228,7 @@ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
204228
return new SimpleForwardingClientCall<ReqT, RespT>(clientCall) {
205229
@Override
206230
public void start(Listener<RespT> responseListener, Metadata headers) {
231+
System.out.println(headers);
207232
super.start(
208233
new SimpleForwardingClientCallListener<RespT>(responseListener) {
209234
@Override
@@ -361,6 +386,11 @@ public String getKmsKeyName() {
361386
return kmsKeyName;
362387
}
363388

389+
@Nullable
390+
private static String getOptionalProperty(String prop) {
391+
return System.getProperty(prop);
392+
}
393+
364394
private static String getOptionalProperty(String prop, String defaultValue) {
365395
return MoreObjects.firstNonNull(System.getProperty(prop), defaultValue);
366396
}

0 commit comments

Comments
 (0)