Skip to content

Commit 29b23d7

Browse files
test: clean up CookieHolderTest (#2361)
* test: clean up CookieHolderTest - stop returning protos to trigger headers - fix thread safety for variables that are accessed by multiple threads Change-Id: Ib34440d2ffeddcb5611b5e1cee183004bafc9449 * missing import Change-Id: Ied61bc081c3cc0220fd96051aabd1849cbffd10f * one more Change-Id: Ibf2f4ad8bea038390b1ddf099c3061f0d9b02495 * fix broken test Change-Id: I63a6e54829ef5ea2db8d3b3b2db0afdc89cc1248 * make it consistent with other tests Change-Id: I2296b1cb7f52895a59e6b4fe5586d07c0dfd97a2
1 parent d31bcc1 commit 29b23d7

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import io.grpc.stub.StreamObserver;
6464
import java.io.IOException;
6565
import java.util.ArrayList;
66+
import java.util.Collections;
6667
import java.util.HashSet;
6768
import java.util.List;
6869
import java.util.Set;
@@ -94,9 +95,9 @@ public class CookiesHolderTest {
9495
private final FakeService fakeService = new FakeService();
9596
private BigtableDataSettings.Builder settings;
9697
private BigtableDataClient client;
97-
private final List<Metadata> serverMetadata = new ArrayList<>();
98+
private final List<Metadata> serverMetadata = Collections.synchronizedList(new ArrayList<>());
9899

99-
private final Set<String> methods = new HashSet<>();
100+
private final Set<String> methods = Collections.synchronizedSet(new HashSet<>());
100101

101102
@Before
102103
public void setup() throws Exception {
@@ -111,13 +112,17 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
111112
if (metadata.containsKey(ROUTING_COOKIE_1)) {
112113
methods.add(serverCall.getMethodDescriptor().getBareMethodName());
113114
}
115+
116+
Metadata responseHeaders = new Metadata();
117+
responseHeaders.put(ROUTING_COOKIE_HEADER, testHeaderCookie);
118+
responseHeaders.put(ROUTING_COOKIE_1, routingCookie1Header);
119+
serverCall.sendHeaders(responseHeaders);
120+
114121
return serverCallHandler.startCall(
115122
new ForwardingServerCall.SimpleForwardingServerCall<ReqT, RespT>(serverCall) {
116123
@Override
117124
public void sendHeaders(Metadata responseHeaders) {
118-
responseHeaders.put(ROUTING_COOKIE_HEADER, testHeaderCookie);
119-
responseHeaders.put(ROUTING_COOKIE_1, routingCookie1Header);
120-
super.sendHeaders(responseHeaders);
125+
// headers already sent!
121126
}
122127
},
123128
metadata);
@@ -450,8 +455,8 @@ public void testNoCookieSucceedGenerateInitialChangeStreamParition() {
450455

451456
Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
452457

453-
assertThat(lastMetadata)
454-
.doesNotContainKeys(ROUTING_COOKIE_1.name(), ROUTING_COOKIE_2.name(), BAD_KEY.name());
458+
assertThat(lastMetadata).doesNotContainKeys(ROUTING_COOKIE_2.name(), BAD_KEY.name());
459+
assertThat(lastMetadata).containsAtLeast(ROUTING_COOKIE_1.name(), routingCookie1Header);
455460

456461
serverMetadata.clear();
457462
}
@@ -657,7 +662,7 @@ public void testDisableRoutingCookie() throws IOException {
657662

658663
static class FakeService extends BigtableGrpc.BigtableImplBase {
659664

660-
private boolean returnCookie = true;
665+
private volatile boolean returnCookie = true;
661666
private final AtomicInteger count = new AtomicInteger();
662667

663668
@Override
@@ -666,7 +671,6 @@ public void readRows(
666671
if (count.getAndIncrement() < 1) {
667672
Metadata trailers = new Metadata();
668673
maybePopulateCookie(trailers, "readRows");
669-
responseObserver.onNext(ReadRowsResponse.getDefaultInstance());
670674
StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
671675
responseObserver.onError(exception);
672676
return;
@@ -681,7 +685,6 @@ public void mutateRow(
681685
if (count.getAndIncrement() < 1) {
682686
Metadata trailers = new Metadata();
683687
maybePopulateCookie(trailers, "mutateRow");
684-
responseObserver.onNext(MutateRowResponse.getDefaultInstance());
685688
StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
686689
responseObserver.onError(exception);
687690
return;
@@ -696,7 +699,6 @@ public void mutateRows(
696699
if (count.getAndIncrement() < 1) {
697700
Metadata trailers = new Metadata();
698701
maybePopulateCookie(trailers, "mutateRows");
699-
responseObserver.onNext(MutateRowsResponse.getDefaultInstance());
700702
StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
701703
responseObserver.onError(exception);
702704
return;
@@ -714,7 +716,6 @@ public void sampleRowKeys(
714716
if (count.getAndIncrement() < 1) {
715717
Metadata trailers = new Metadata();
716718
maybePopulateCookie(trailers, "sampleRowKeys");
717-
responseObserver.onNext(SampleRowKeysResponse.getDefaultInstance());
718719
StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
719720
responseObserver.onError(exception);
720721
return;

0 commit comments

Comments
 (0)