90
90
public class OkHttpServerTransportTest {
91
91
private static final int TIME_OUT_MS = 2000 ;
92
92
private static final int INITIAL_WINDOW_SIZE = 65535 ;
93
- private static final long MAX_CONNECTION_IDLE = TimeUnit .SECONDS .toNanos (1 );
94
93
95
94
private MockServerTransportListener mockTransportListener = new MockServerTransportListener ();
96
95
private ServerTransportListener transportListener
@@ -106,11 +105,10 @@ public class OkHttpServerTransportTest {
106
105
private ExecutorService threadPool = Executors .newCachedThreadPool ();
107
106
private HandshakerSocketFactory handshakerSocketFactory
108
107
= mock (HandshakerSocketFactory .class , delegatesTo (new PlaintextHandshakerSocketFactory ()));
109
- private final FakeClock fakeClock = new FakeClock ();
110
108
private OkHttpServerBuilder serverBuilder
111
109
= new OkHttpServerBuilder (new InetSocketAddress (1234 ), handshakerSocketFactory )
112
110
.executor (new FakeClock ().getScheduledExecutorService ()) // Executor unused
113
- .scheduledExecutorService (fakeClock .getScheduledExecutorService ())
111
+ .scheduledExecutorService (new FakeClock () .getScheduledExecutorService ())
114
112
.transportExecutor (new Executor () {
115
113
@ Override public void execute (Runnable runnable ) {
116
114
if (runnable instanceof OkHttpServerTransport .FrameHandler ) {
@@ -121,8 +119,7 @@ public class OkHttpServerTransportTest {
121
119
}
122
120
}
123
121
})
124
- .flowControlWindow (INITIAL_WINDOW_SIZE )
125
- .maxConnectionIdle (MAX_CONNECTION_IDLE , TimeUnit .NANOSECONDS );
122
+ .flowControlWindow (INITIAL_WINDOW_SIZE );
126
123
127
124
@ Rule public final Timeout globalTimeout = Timeout .seconds (10 );
128
125
@@ -149,63 +146,6 @@ public void startThenShutdown() throws Exception {
149
146
shutdownAndTerminate (/*lastStreamId=*/ 0 );
150
147
}
151
148
152
- @ Test
153
- public void maxConnectionIdleTimer () throws Exception {
154
- initTransport ();
155
- handshake ();
156
- clientFrameWriter .headers (1 , Arrays .asList (
157
- HTTP_SCHEME_HEADER ,
158
- METHOD_HEADER ,
159
- new Header (Header .TARGET_AUTHORITY , "example.com:80" ),
160
- new Header (Header .TARGET_PATH , "/com.example/SimpleService.doit" ),
161
- CONTENT_TYPE_HEADER ,
162
- TE_HEADER ));
163
- clientFrameWriter .synStream (true , false , 1 , -1 , Arrays .asList (
164
- new Header ("some-client-sent-trailer" , "trailer-value" )));
165
- pingPong ();
166
-
167
- MockStreamListener streamListener = mockTransportListener .newStreams .pop ();
168
- assertThat (streamListener .messages .peek ()).isNull ();
169
- assertThat (streamListener .halfClosedCalled ).isTrue ();
170
-
171
- streamListener .stream .close (Status .OK , new Metadata ());
172
-
173
- List <Header > responseTrailers = Arrays .asList (
174
- new Header (":status" , "200" ),
175
- CONTENT_TYPE_HEADER ,
176
- new Header ("grpc-status" , "0" ));
177
- assertThat (clientFrameReader .nextFrame (clientFramesRead )).isTrue ();
178
- verify (clientFramesRead )
179
- .headers (false , true , 1 , -1 , responseTrailers , HeadersMode .HTTP_20_HEADERS );
180
-
181
- fakeClock .forwardNanos (MAX_CONNECTION_IDLE );
182
- fakeClock .forwardNanos (MAX_CONNECTION_IDLE );
183
- verifyGracefulShutdown (1 );
184
- }
185
-
186
- @ Test
187
- public void maxConnectionIdleTimer_respondWithError () throws Exception {
188
- initTransport ();
189
- handshake ();
190
-
191
- clientFrameWriter .headers (1 , Arrays .asList (
192
- HTTP_SCHEME_HEADER ,
193
- METHOD_HEADER ,
194
- new Header (Header .TARGET_PATH , "/com.example/SimpleService.doit" ),
195
- CONTENT_TYPE_HEADER ,
196
- TE_HEADER ,
197
- new Header ("host" , "example.com:80" ),
198
- new Header ("host" , "example.com:80" )));
199
- clientFrameWriter .flush ();
200
-
201
- verifyHttpError (
202
- 1 , 400 , Status .Code .INTERNAL , "Multiple host headers disallowed. RFC7230 section 5.4" );
203
-
204
- fakeClock .forwardNanos (MAX_CONNECTION_IDLE );
205
- fakeClock .forwardNanos (MAX_CONNECTION_IDLE );
206
- verifyGracefulShutdown (1 );
207
- }
208
-
209
149
@ Test
210
150
public void startThenShutdownTwice () throws Exception {
211
151
initTransport ();
@@ -376,8 +316,7 @@ public void activeRpc_delaysShutdownTermination() throws Exception {
376
316
clientFrameWriter .data (true , 1 , requestMessageFrame , (int ) requestMessageFrame .size ());
377
317
pingPong ();
378
318
379
- serverTransport .shutdown ();
380
- verifyGracefulShutdown (1 );
319
+ shutdownAndVerifyGraceful (1 );
381
320
verify (transportListener , never ()).transportTerminated ();
382
321
383
322
MockStreamListener streamListener = mockTransportListener .newStreams .pop ();
@@ -1099,8 +1038,8 @@ private Metadata metadata(String... keysAndValues) {
1099
1038
return metadata ;
1100
1039
}
1101
1040
1102
- private void verifyGracefulShutdown (int lastStreamId )
1103
- throws IOException {
1041
+ private void shutdownAndVerifyGraceful (int lastStreamId ) throws IOException {
1042
+ serverTransport . shutdown ();
1104
1043
assertThat (clientFrameReader .nextFrame (clientFramesRead )).isTrue ();
1105
1044
verify (clientFramesRead ).goAway (2147483647 , ErrorCode .NO_ERROR , ByteString .EMPTY );
1106
1045
assertThat (clientFrameReader .nextFrame (clientFramesRead )).isTrue ();
@@ -1113,8 +1052,7 @@ private void verifyGracefulShutdown(int lastStreamId)
1113
1052
1114
1053
private void shutdownAndTerminate (int lastStreamId ) throws IOException {
1115
1054
assertThat (serverTransport .getActiveStreams ().length ).isEqualTo (0 );
1116
- serverTransport .shutdown ();
1117
- verifyGracefulShutdown (lastStreamId );
1055
+ shutdownAndVerifyGraceful (lastStreamId );
1118
1056
assertThat (clientFrameReader .nextFrame (clientFramesRead )).isFalse ();
1119
1057
verify (transportListener , timeout (TIME_OUT_MS )).transportTerminated ();
1120
1058
}
0 commit comments