Skip to content

Commit d5f0182

Browse files
committed
Add unit test coverage for ServerCall triggerEvent and custom events framework.
- Added unit tests in AbstractServerStreamTest for triggerEvent propagation and close behavior. - Updated ContextsTest to cover onEvent propagation in ContextualizedServerCallListener. TAG=agy CONV=e1bfa5a2-e855-4f79-abdd-ef2b264977be
1 parent dd549f3 commit d5f0182

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

‎api/src/test/java/io/grpc/ContextsTest.java‎

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ public void interceptCall_basic() {
8282
assertSame(uniqueContext, Context.current());
8383
methodCalls.add(5);
8484
}
85+
86+
@Override public void onEvent(Object event) {
87+
assertSame(uniqueContext, Context.current());
88+
methodCalls.add(6);
89+
}
8590
};
8691
ServerCall.Listener<Object> wrapped = interceptCall(uniqueContext, call, headers,
8792
new ServerCallHandler<Object, Object>() {
@@ -101,7 +106,8 @@ public ServerCall.Listener<Object> startCall(
101106
wrapped.onCancel();
102107
wrapped.onComplete();
103108
wrapped.onReady();
104-
assertEquals(Arrays.asList(1, 2, 3, 4, 5), methodCalls);
109+
wrapped.onEvent(new Object());
110+
assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6), methodCalls);
105111
assertSame(origContext, Context.current());
106112
}
107113

@@ -145,6 +151,10 @@ public void interceptCall_restoresIfListenerThrows() {
145151
@Override public void onReady() {
146152
throw new RuntimeException();
147153
}
154+
155+
@Override public void onEvent(Object event) {
156+
throw new RuntimeException();
157+
}
148158
};
149159
ServerCall.Listener<Object> wrapped = interceptCall(uniqueContext, call, headers,
150160
new ServerCallHandler<Object, Object>() {
@@ -180,6 +190,11 @@ public ServerCall.Listener<Object> startCall(
180190
fail("Exception expected");
181191
} catch (RuntimeException expected) {
182192
}
193+
try {
194+
wrapped.onEvent(new Object());
195+
fail("Exception expected");
196+
} catch (RuntimeException expected) {
197+
}
183198
assertSame(origContext, Context.current());
184199
}
185200

‎core/src/test/java/io/grpc/internal/AbstractServerStreamTest.java‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,31 @@ public void close_sendTrailersClearsReservedFields() {
361361
assertEquals("bad", metadataCaptor.getValue().get(InternalStatus.MESSAGE_KEY));
362362
}
363363

364+
@Test
365+
public void triggerEvent_propagatesToListener() {
366+
ServerStreamListener listener = mock(ServerStreamListener.class);
367+
stream.transportState().setListener(listener);
368+
369+
Object event = new Object();
370+
stream.triggerEvent(event);
371+
372+
verify(listener).triggerEvent(event);
373+
}
374+
375+
@Test
376+
public void triggerEvent_ignoredAfterClose() {
377+
ServerStreamListener listener = mock(ServerStreamListener.class);
378+
stream.transportState().setListener(listener);
379+
380+
stream.close(Status.OK, new Metadata());
381+
stream.transportState().complete();
382+
383+
Object event = new Object();
384+
stream.triggerEvent(event);
385+
386+
verify(listener, never()).triggerEvent(any());
387+
}
388+
364389
@Test
365390
public void changeOnReadyThreshold() {
366391
stream.setListener(new ServerStreamListenerBase());

0 commit comments

Comments
 (0)