63
63
import io .grpc .stub .StreamObserver ;
64
64
import java .io .IOException ;
65
65
import java .util .ArrayList ;
66
+ import java .util .Collections ;
66
67
import java .util .HashSet ;
67
68
import java .util .List ;
68
69
import java .util .Set ;
@@ -94,9 +95,9 @@ public class CookiesHolderTest {
94
95
private final FakeService fakeService = new FakeService ();
95
96
private BigtableDataSettings .Builder settings ;
96
97
private BigtableDataClient client ;
97
- private final List <Metadata > serverMetadata = new ArrayList <>();
98
+ private final List <Metadata > serverMetadata = Collections . synchronizedList ( new ArrayList <>() );
98
99
99
- private final Set <String > methods = new HashSet <>();
100
+ private final Set <String > methods = Collections . synchronizedSet ( new HashSet <>() );
100
101
101
102
@ Before
102
103
public void setup () throws Exception {
@@ -111,13 +112,17 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
111
112
if (metadata .containsKey (ROUTING_COOKIE_1 )) {
112
113
methods .add (serverCall .getMethodDescriptor ().getBareMethodName ());
113
114
}
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
+
114
121
return serverCallHandler .startCall (
115
122
new ForwardingServerCall .SimpleForwardingServerCall <ReqT , RespT >(serverCall ) {
116
123
@ Override
117
124
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!
121
126
}
122
127
},
123
128
metadata );
@@ -450,8 +455,8 @@ public void testNoCookieSucceedGenerateInitialChangeStreamParition() {
450
455
451
456
Metadata lastMetadata = serverMetadata .get (fakeService .count .get () - 1 );
452
457
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 );
455
460
456
461
serverMetadata .clear ();
457
462
}
@@ -657,7 +662,7 @@ public void testDisableRoutingCookie() throws IOException {
657
662
658
663
static class FakeService extends BigtableGrpc .BigtableImplBase {
659
664
660
- private boolean returnCookie = true ;
665
+ private volatile boolean returnCookie = true ;
661
666
private final AtomicInteger count = new AtomicInteger ();
662
667
663
668
@ Override
@@ -666,7 +671,6 @@ public void readRows(
666
671
if (count .getAndIncrement () < 1 ) {
667
672
Metadata trailers = new Metadata ();
668
673
maybePopulateCookie (trailers , "readRows" );
669
- responseObserver .onNext (ReadRowsResponse .getDefaultInstance ());
670
674
StatusRuntimeException exception = new StatusRuntimeException (Status .UNAVAILABLE , trailers );
671
675
responseObserver .onError (exception );
672
676
return ;
@@ -681,7 +685,6 @@ public void mutateRow(
681
685
if (count .getAndIncrement () < 1 ) {
682
686
Metadata trailers = new Metadata ();
683
687
maybePopulateCookie (trailers , "mutateRow" );
684
- responseObserver .onNext (MutateRowResponse .getDefaultInstance ());
685
688
StatusRuntimeException exception = new StatusRuntimeException (Status .UNAVAILABLE , trailers );
686
689
responseObserver .onError (exception );
687
690
return ;
@@ -696,7 +699,6 @@ public void mutateRows(
696
699
if (count .getAndIncrement () < 1 ) {
697
700
Metadata trailers = new Metadata ();
698
701
maybePopulateCookie (trailers , "mutateRows" );
699
- responseObserver .onNext (MutateRowsResponse .getDefaultInstance ());
700
702
StatusRuntimeException exception = new StatusRuntimeException (Status .UNAVAILABLE , trailers );
701
703
responseObserver .onError (exception );
702
704
return ;
@@ -714,7 +716,6 @@ public void sampleRowKeys(
714
716
if (count .getAndIncrement () < 1 ) {
715
717
Metadata trailers = new Metadata ();
716
718
maybePopulateCookie (trailers , "sampleRowKeys" );
717
- responseObserver .onNext (SampleRowKeysResponse .getDefaultInstance ());
718
719
StatusRuntimeException exception = new StatusRuntimeException (Status .UNAVAILABLE , trailers );
719
720
responseObserver .onError (exception );
720
721
return ;
0 commit comments