MCPcopy Create free account
hub / github.com/grpc/grpc-java / AsyncSinkTest

Class AsyncSinkTest

okhttp/src/test/java/io/grpc/okhttp/AsyncSinkTest.java:51–326  ·  view source on GitHub ↗

Tests for AsyncSink.

Source from the content-addressed store, hash-verified

49
50/** Tests for {@link AsyncSink}. */
51@RunWith(JUnit4.class)
52public class AsyncSinkTest {
53
54 private final Socket socket = mock(Socket.class);
55 private final Sink mockedSink = mock(VoidSink.class, CALLS_REAL_METHODS);
56 private final QueueingExecutor queueingExecutor = new QueueingExecutor();
57 private final TransportExceptionHandler exceptionHandler = mock(TransportExceptionHandler.class);
58 private final AsyncSink sink =
59 AsyncSink.sink(new SerializingExecutor(queueingExecutor), exceptionHandler, 10000);
60
61 @Test
62 public void noCoalesceRequired() throws IOException {
63 Buffer buffer = new Buffer();
64 sink.becomeConnected(mockedSink, socket);
65 sink.write(buffer.writeUtf8("hello"), buffer.size());
66 sink.flush();
67 queueingExecutor.runAll();
68
69 InOrder inOrder = inOrder(mockedSink);
70 inOrder.verify(mockedSink).write(any(Buffer.class), anyLong());
71 inOrder.verify(mockedSink).flush();
72 }
73
74 @Test
75 public void flushCoalescing_shouldNotMergeTwoDistinctFlushes() throws IOException {
76 byte[] firstData = "a string".getBytes(StandardCharsets.UTF_8);
77 byte[] secondData = "a longer string".getBytes(StandardCharsets.UTF_8);
78
79 sink.becomeConnected(mockedSink, socket);
80 Buffer buffer = new Buffer();
81 sink.write(buffer.write(firstData), buffer.size());
82 sink.flush();
83 queueingExecutor.runAll();
84
85 sink.write(buffer.write(secondData), buffer.size());
86 sink.flush();
87 queueingExecutor.runAll();
88
89 InOrder inOrder = inOrder(mockedSink);
90 inOrder.verify(mockedSink).write(any(Buffer.class), anyLong());
91 inOrder.verify(mockedSink).flush();
92 inOrder.verify(mockedSink).write(any(Buffer.class), anyLong());
93 inOrder.verify(mockedSink).flush();
94 }
95
96 @Test
97 public void flushCoalescing_shouldMergeTwoQueuedFlushesAndWrites() throws IOException {
98 byte[] firstData = "a string".getBytes(StandardCharsets.UTF_8);
99 byte[] secondData = "a longer string".getBytes(StandardCharsets.UTF_8);
100 Buffer buffer = new Buffer().write(firstData);
101 sink.becomeConnected(mockedSink, socket);
102 sink.write(buffer, buffer.size());
103 sink.flush();
104 buffer = new Buffer().write(secondData);
105 sink.write(buffer, buffer.size());
106 sink.flush();
107
108 queueingExecutor.runAll();

Callers

nothing calls this directly

Calls 1

sinkMethod · 0.95

Tested by

no test coverage detected