9090public class OkHttpServerTransportTest {
9191 private static final int TIME_OUT_MS = 2000 ;
9292 private static final int INITIAL_WINDOW_SIZE = 65535 ;
93- private static final long MAX_CONNECTION_IDLE = TimeUnit .SECONDS .toNanos (1 );
9493
9594 private MockServerTransportListener mockTransportListener = new MockServerTransportListener ();
9695 private ServerTransportListener transportListener
@@ -106,11 +105,10 @@ public class OkHttpServerTransportTest {
106105 private ExecutorService threadPool = Executors .newCachedThreadPool ();
107106 private HandshakerSocketFactory handshakerSocketFactory
108107 = mock (HandshakerSocketFactory .class , delegatesTo (new PlaintextHandshakerSocketFactory ()));
109- private final FakeClock fakeClock = new FakeClock ();
110108 private OkHttpServerBuilder serverBuilder
111109 = new OkHttpServerBuilder (new InetSocketAddress (1234 ), handshakerSocketFactory )
112110 .executor (new FakeClock ().getScheduledExecutorService ()) // Executor unused
113- .scheduledExecutorService (fakeClock .getScheduledExecutorService ())
111+ .scheduledExecutorService (new FakeClock () .getScheduledExecutorService ())
114112 .transportExecutor (new Executor () {
115113 @ Override public void execute (Runnable runnable ) {
116114 if (runnable instanceof OkHttpServerTransport .FrameHandler ) {
@@ -121,8 +119,7 @@ public class OkHttpServerTransportTest {
121119 }
122120 }
123121 })
124- .flowControlWindow (INITIAL_WINDOW_SIZE )
125- .maxConnectionIdle (MAX_CONNECTION_IDLE , TimeUnit .NANOSECONDS );
122+ .flowControlWindow (INITIAL_WINDOW_SIZE );
126123
127124 @ Rule public final Timeout globalTimeout = Timeout .seconds (10 );
128125
@@ -149,63 +146,6 @@ public void startThenShutdown() throws Exception {
149146 shutdownAndTerminate (/*lastStreamId=*/ 0 );
150147 }
151148
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-
209149 @ Test
210150 public void startThenShutdownTwice () throws Exception {
211151 initTransport ();
@@ -376,8 +316,7 @@ public void activeRpc_delaysShutdownTermination() throws Exception {
376316 clientFrameWriter .data (true , 1 , requestMessageFrame , (int ) requestMessageFrame .size ());
377317 pingPong ();
378318
379- serverTransport .shutdown ();
380- verifyGracefulShutdown (1 );
319+ shutdownAndVerifyGraceful (1 );
381320 verify (transportListener , never ()).transportTerminated ();
382321
383322 MockStreamListener streamListener = mockTransportListener .newStreams .pop ();
@@ -1099,8 +1038,8 @@ private Metadata metadata(String... keysAndValues) {
10991038 return metadata ;
11001039 }
11011040
1102- private void verifyGracefulShutdown (int lastStreamId )
1103- throws IOException {
1041+ private void shutdownAndVerifyGraceful (int lastStreamId ) throws IOException {
1042+ serverTransport . shutdown ();
11041043 assertThat (clientFrameReader .nextFrame (clientFramesRead )).isTrue ();
11051044 verify (clientFramesRead ).goAway (2147483647 , ErrorCode .NO_ERROR , ByteString .EMPTY );
11061045 assertThat (clientFrameReader .nextFrame (clientFramesRead )).isTrue ();
@@ -1113,8 +1052,7 @@ private void verifyGracefulShutdown(int lastStreamId)
11131052
11141053 private void shutdownAndTerminate (int lastStreamId ) throws IOException {
11151054 assertThat (serverTransport .getActiveStreams ().length ).isEqualTo (0 );
1116- serverTransport .shutdown ();
1117- verifyGracefulShutdown (lastStreamId );
1055+ shutdownAndVerifyGraceful (lastStreamId );
11181056 assertThat (clientFrameReader .nextFrame (clientFramesRead )).isFalse ();
11191057 verify (transportListener , timeout (TIME_OUT_MS )).transportTerminated ();
11201058 }
0 commit comments