diff --git a/mockwebserver/src/test/java/com/squareup/okhttp/mockwebserver/MockWebServerTest.java b/mockwebserver/src/test/java/com/squareup/okhttp/mockwebserver/MockWebServerTest.java index 62e4ee8a3..7c45150ee 100644 --- a/mockwebserver/src/test/java/com/squareup/okhttp/mockwebserver/MockWebServerTest.java +++ b/mockwebserver/src/test/java/com/squareup/okhttp/mockwebserver/MockWebServerTest.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.squareup.okhttp.mockwebserver; +import com.squareup.okhttp.mockwebserver.rule.MockWebServerRule; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -29,339 +29,320 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; -import junit.framework.TestCase; +import org.junit.Rule; +import org.junit.Test; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; -public final class MockWebServerTest extends TestCase { +public final class MockWebServerTest { + @Rule public final MockWebServerRule server = new MockWebServerRule(); - private MockWebServer server = new MockWebServer(); + @Test public void recordedRequestAccessors() { + List headers = Arrays.asList( + "User-Agent: okhttp", + "Cookie: s=square", + "Cookie: a=android", + "X-Whitespace: left", + "X-Whitespace:right ", + "X-Whitespace: both " + ); + List chunkSizes = Collections.emptyList(); + byte[] body = {'A', 'B', 'C'}; + String requestLine = "GET / HTTP/1.1"; + RecordedRequest request = new RecordedRequest( + requestLine, headers, chunkSizes, body.length, body, 0, null); + assertEquals("s=square", request.getHeader("cookie")); + assertEquals(Arrays.asList("s=square", "a=android"), request.getHeaders("cookie")); + assertEquals("left", request.getHeader("x-whitespace")); + assertEquals(Arrays.asList("left", "right", "both"), request.getHeaders("x-whitespace")); + assertEquals("ABC", request.getUtf8Body()); + } - @Override protected void tearDown() throws Exception { - server.shutdown(); - super.tearDown(); - } + @Test public void defaultMockResponse() { + MockResponse response = new MockResponse(); + assertEquals(Arrays.asList("Content-Length: 0"), response.getHeaders()); + assertEquals("HTTP/1.1 200 OK", response.getStatus()); + } - public void testRecordedRequestAccessors() { - List headers = Arrays.asList( - "User-Agent: okhttp", - "Cookie: s=square", - "Cookie: a=android", - "X-Whitespace: left", - "X-Whitespace:right ", - "X-Whitespace: both " - ); - List chunkSizes = Collections.emptyList(); - byte[] body = {'A', 'B', 'C'}; - String requestLine = "GET / HTTP/1.1"; - RecordedRequest request = new RecordedRequest( - requestLine, headers, chunkSizes, body.length, body, 0, null); - assertEquals("s=square", request.getHeader("cookie")); - assertEquals(Arrays.asList("s=square", "a=android"), request.getHeaders("cookie")); - assertEquals("left", request.getHeader("x-whitespace")); - assertEquals(Arrays.asList("left", "right", "both"), request.getHeaders("x-whitespace")); - assertEquals("ABC", request.getUtf8Body()); - } + @Test public void setBodyAdjustsHeaders() throws IOException { + MockResponse response = new MockResponse().setBody("ABC"); + assertEquals(Arrays.asList("Content-Length: 3"), response.getHeaders()); + InputStream in = response.getBodyStream(); + assertEquals('A', in.read()); + assertEquals('B', in.read()); + assertEquals('C', in.read()); + assertEquals(-1, in.read()); + assertEquals("HTTP/1.1 200 OK", response.getStatus()); + } - public void testDefaultMockResponse() { - MockResponse response = new MockResponse(); - assertEquals(Arrays.asList("Content-Length: 0"), response.getHeaders()); - assertEquals("HTTP/1.1 200 OK", response.getStatus()); - } + @Test public void mockResponseAddHeader() { + MockResponse response = new MockResponse() + .clearHeaders() + .addHeader("Cookie: s=square") + .addHeader("Cookie", "a=android"); + assertEquals(Arrays.asList("Cookie: s=square", "Cookie: a=android"), response.getHeaders()); + } - public void testSetBodyAdjustsHeaders() throws IOException { - MockResponse response = new MockResponse().setBody("ABC"); - assertEquals(Arrays.asList("Content-Length: 3"), response.getHeaders()); - InputStream in = response.getBodyStream(); - assertEquals('A', in.read()); - assertEquals('B', in.read()); - assertEquals('C', in.read()); - assertEquals(-1, in.read()); - assertEquals("HTTP/1.1 200 OK", response.getStatus()); - } + @Test public void mockResponseSetHeader() { + MockResponse response = new MockResponse() + .clearHeaders() + .addHeader("Cookie: s=square") + .addHeader("Cookie: a=android") + .addHeader("Cookies: delicious"); + response.setHeader("cookie", "r=robot"); + assertEquals(Arrays.asList("Cookies: delicious", "cookie: r=robot"), response.getHeaders()); + } - public void testMockResponseAddHeader() { - MockResponse response = new MockResponse() - .clearHeaders() - .addHeader("Cookie: s=square") - .addHeader("Cookie", "a=android"); - assertEquals(Arrays.asList("Cookie: s=square", "Cookie: a=android"), - response.getHeaders()); - } + /** + * Clients who adhere to 100 + * Status expect the server to send an interim response with status code + * 100 before they send their payload. + * + *

Note

+ * + * JRE 6 only passes this test if + * {@code -Dsun.net.http.allowRestrictedHeaders=true} is set. + */ + @Test public void expect100ContinueWithBody() throws Exception { + server.enqueue(new MockResponse()); - public void testMockResponseSetHeader() { - MockResponse response = new MockResponse() - .clearHeaders() - .addHeader("Cookie: s=square") - .addHeader("Cookie: a=android") - .addHeader("Cookies: delicious"); - response.setHeader("cookie", "r=robot"); - assertEquals(Arrays.asList("Cookies: delicious", "cookie: r=robot"), - response.getHeaders()); - } + URL url = server.getUrl("/"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("PUT"); + connection.setAllowUserInteraction(false); + connection.setRequestProperty("Expect", "100-continue"); + connection.setDoOutput(true); + connection.getOutputStream().write("hello".getBytes()); + assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode()); - /** - * Clients who adhere to 100 - * Status expect the server to send an interim response with status code - * 100 before they send their payload. - * - *

Note

- * - * JRE 6 only passes this test if - * {@code -Dsun.net.http.allowRestrictedHeaders=true} is set. - */ - public void testExpect100ContinueWithBody() throws Exception { - server.enqueue(new MockResponse()); - server.play(); + assertEquals(server.getRequestCount(), 1); + RecordedRequest request = server.takeRequest(); + assertEquals(request.getRequestLine(), "PUT / HTTP/1.1"); + assertEquals("5", request.getHeader("Content-Length")); + assertEquals(5, request.getBodySize()); + assertEquals("hello", new String(request.getBody())); + // below fails on JRE 6 unless -Dsun.net.http.allowRestrictedHeaders=true is set + assertEquals("100-continue", request.getHeader("Expect")); + } - URL url = server.getUrl("/"); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("PUT"); - connection.setAllowUserInteraction(false); - connection.setRequestProperty("Expect", "100-continue"); - connection.setDoOutput(true); - connection.getOutputStream().write("hello".getBytes()); - assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode()); + @Test public void expect100ContinueWithNoBody() throws Exception { + server.enqueue(new MockResponse()); - assertEquals(server.getRequestCount(), 1); - RecordedRequest request = server.takeRequest(); - assertEquals(request.getRequestLine(), "PUT / HTTP/1.1"); - assertEquals("5", request.getHeader("Content-Length")); - assertEquals(5, request.getBodySize()); - assertEquals("hello", new String(request.getBody())); - // below fails on JRE 6 unless -Dsun.net.http.allowRestrictedHeaders=true is set - assertEquals("100-continue", request.getHeader("Expect")); - } + URL url = server.getUrl("/"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("PUT"); + connection.setAllowUserInteraction(false); + connection.setRequestProperty("Expect", "100-continue"); + connection.setRequestProperty("Content-Length", "0"); + connection.setDoOutput(true); + connection.setFixedLengthStreamingMode(0); + assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode()); - public void testExpect100ContinueWithNoBody() throws Exception { - server.enqueue(new MockResponse()); - server.play(); + assertEquals(server.getRequestCount(), 1); + RecordedRequest request = server.takeRequest(); + assertEquals(request.getRequestLine(), "PUT / HTTP/1.1"); + assertEquals("0", request.getHeader("Content-Length")); + assertEquals(0, request.getBodySize()); + // below fails on JRE 6 unless -Dsun.net.http.allowRestrictedHeaders=true is set + assertEquals("100-continue", request.getHeader("Expect")); + } - URL url = server.getUrl("/"); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("PUT"); - connection.setAllowUserInteraction(false); - connection.setRequestProperty("Expect", "100-continue"); - connection.setRequestProperty("Content-Length", "0"); - connection.setDoOutput(true); - connection.setFixedLengthStreamingMode(0); - assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode()); + @Test public void regularResponse() throws Exception { + server.enqueue(new MockResponse().setBody("hello world")); - assertEquals(server.getRequestCount(), 1); - RecordedRequest request = server.takeRequest(); - assertEquals(request.getRequestLine(), "PUT / HTTP/1.1"); - assertEquals("0", request.getHeader("Content-Length")); - assertEquals(0, request.getBodySize()); - // below fails on JRE 6 unless -Dsun.net.http.allowRestrictedHeaders=true is set - assertEquals("100-continue", request.getHeader("Expect")); - } + URL url = server.getUrl("/"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestProperty("Accept-Language", "en-US"); + InputStream in = connection.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode()); + assertEquals("hello world", reader.readLine()); - public void testRegularResponse() throws Exception { - server.enqueue(new MockResponse().setBody("hello world")); - server.play(); + RecordedRequest request = server.takeRequest(); + assertEquals("GET / HTTP/1.1", request.getRequestLine()); + assertTrue(request.getHeaders().contains("Accept-Language: en-US")); + } - URL url = server.getUrl("/"); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestProperty("Accept-Language", "en-US"); - InputStream in = connection.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode()); - assertEquals("hello world", reader.readLine()); + @Test public void redirect() throws Exception { + server.enqueue(new MockResponse() + .setResponseCode(HttpURLConnection.HTTP_MOVED_TEMP) + .addHeader("Location: " + server.getUrl("/new-path")) + .setBody("This page has moved!")); + server.enqueue(new MockResponse().setBody("This is the new location!")); - RecordedRequest request = server.takeRequest(); - assertEquals("GET / HTTP/1.1", request.getRequestLine()); - assertTrue(request.getHeaders().contains("Accept-Language: en-US")); - } + URLConnection connection = server.getUrl("/").openConnection(); + InputStream in = connection.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + assertEquals("This is the new location!", reader.readLine()); - public void testRedirect() throws Exception { - server.play(); - server.enqueue(new MockResponse() - .setResponseCode(HttpURLConnection.HTTP_MOVED_TEMP) - .addHeader("Location: " + server.getUrl("/new-path")) - .setBody("This page has moved!")); - server.enqueue(new MockResponse().setBody("This is the new location!")); + RecordedRequest first = server.takeRequest(); + assertEquals("GET / HTTP/1.1", first.getRequestLine()); + RecordedRequest redirect = server.takeRequest(); + assertEquals("GET /new-path HTTP/1.1", redirect.getRequestLine()); + } - URLConnection connection = server.getUrl("/").openConnection(); - InputStream in = connection.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - assertEquals("This is the new location!", reader.readLine()); - - RecordedRequest first = server.takeRequest(); - assertEquals("GET / HTTP/1.1", first.getRequestLine()); - RecordedRequest redirect = server.takeRequest(); - assertEquals("GET /new-path HTTP/1.1", redirect.getRequestLine()); - } - - /** - * Test that MockWebServer blocks for a call to enqueue() if a request - * is made before a mock response is ready. - */ - public void testDispatchBlocksWaitingForEnqueue() throws Exception { - server.play(); - - new Thread() { - @Override public void run() { - try { - Thread.sleep(1000); - } catch (InterruptedException ignored) { - } - server.enqueue(new MockResponse().setBody("enqueued in the background")); - } - }.start(); - - URLConnection connection = server.getUrl("/").openConnection(); - InputStream in = connection.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - assertEquals("enqueued in the background", reader.readLine()); - } - - public void testNonHexadecimalChunkSize() throws Exception { - server.enqueue(new MockResponse() - .setBody("G\r\nxxxxxxxxxxxxxxxx\r\n0\r\n\r\n") - .clearHeaders() - .addHeader("Transfer-encoding: chunked")); - server.play(); - - URLConnection connection = server.getUrl("/").openConnection(); - InputStream in = connection.getInputStream(); + /** + * Test that MockWebServer blocks for a call to enqueue() if a request + * is made before a mock response is ready. + */ + @Test public void dispatchBlocksWaitingForEnqueue() throws Exception { + new Thread() { + @Override public void run() { try { - in.read(); - fail(); - } catch (IOException expected) { + Thread.sleep(1000); + } catch (InterruptedException ignored) { } + server.enqueue(new MockResponse().setBody("enqueued in the background")); + } + }.start(); + + URLConnection connection = server.getUrl("/").openConnection(); + InputStream in = connection.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + assertEquals("enqueued in the background", reader.readLine()); + } + + @Test public void nonHexadecimalChunkSize() throws Exception { + server.enqueue(new MockResponse() + .setBody("G\r\nxxxxxxxxxxxxxxxx\r\n0\r\n\r\n") + .clearHeaders() + .addHeader("Transfer-encoding: chunked")); + + URLConnection connection = server.getUrl("/").openConnection(); + InputStream in = connection.getInputStream(); + try { + in.read(); + fail(); + } catch (IOException expected) { + } + } + + @Test public void responseTimeout() throws Exception { + server.enqueue(new MockResponse() + .setBody("ABC") + .clearHeaders() + .addHeader("Content-Length: 4")); + server.enqueue(new MockResponse().setBody("DEF")); + + URLConnection urlConnection = server.getUrl("/").openConnection(); + urlConnection.setReadTimeout(1000); + InputStream in = urlConnection.getInputStream(); + assertEquals('A', in.read()); + assertEquals('B', in.read()); + assertEquals('C', in.read()); + try { + in.read(); // if Content-Length was accurate, this would return -1 immediately + fail(); + } catch (SocketTimeoutException expected) { } - public void testResponseTimeout() throws Exception { - server.enqueue(new MockResponse() - .setBody("ABC") - .clearHeaders() - .addHeader("Content-Length: 4")); - server.enqueue(new MockResponse() - .setBody("DEF")); - server.play(); + URLConnection urlConnection2 = server.getUrl("/").openConnection(); + InputStream in2 = urlConnection2.getInputStream(); + assertEquals('D', in2.read()); + assertEquals('E', in2.read()); + assertEquals('F', in2.read()); + assertEquals(-1, in2.read()); - URLConnection urlConnection = server.getUrl("/").openConnection(); - urlConnection.setReadTimeout(1000); - InputStream in = urlConnection.getInputStream(); - assertEquals('A', in.read()); - assertEquals('B', in.read()); - assertEquals('C', in.read()); - try { - in.read(); // if Content-Length was accurate, this would return -1 immediately - fail(); - } catch (SocketTimeoutException expected) { - } + assertEquals(0, server.takeRequest().getSequenceNumber()); + assertEquals(0, server.takeRequest().getSequenceNumber()); + } - URLConnection urlConnection2 = server.getUrl("/").openConnection(); - InputStream in2 = urlConnection2.getInputStream(); - assertEquals('D', in2.read()); - assertEquals('E', in2.read()); - assertEquals('F', in2.read()); - assertEquals(-1, in2.read()); - - assertEquals(0, server.takeRequest().getSequenceNumber()); - assertEquals(0, server.takeRequest().getSequenceNumber()); + @Test public void disconnectAtStart() throws Exception { + server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.DISCONNECT_AT_START)); + server.enqueue(new MockResponse()); // The jdk's HttpUrlConnection is a bastard. + server.enqueue(new MockResponse()); + try { + server.getUrl("/a").openConnection().getInputStream(); + } catch (IOException expected) { } + server.getUrl("/b").openConnection().getInputStream(); // Should succeed. + } - public void testDisconnectAtStart() throws Exception { - server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.DISCONNECT_AT_START)); - server.enqueue(new MockResponse()); // The jdk's HttpUrlConnection is a bastard. - server.enqueue(new MockResponse()); - server.play(); - try { - server.getUrl("/a").openConnection().getInputStream(); - } catch (IOException e) { - // Expected. - } - server.getUrl("/b").openConnection().getInputStream(); // Should succeed. - } + @Test public void streamingResponseBody() throws Exception { + InputStream responseBody = new ByteArrayInputStream("ABC".getBytes("UTF-8")); + server.enqueue(new MockResponse().setBody(responseBody, 3)); - public void testStreamingResponseBody() throws Exception { - InputStream responseBody = new ByteArrayInputStream("ABC".getBytes("UTF-8")); - server.enqueue(new MockResponse().setBody(responseBody, 3)); - server.play(); + InputStream in = server.getUrl("/").openConnection().getInputStream(); + assertEquals('A', in.read()); + assertEquals('B', in.read()); + assertEquals('C', in.read()); - InputStream in = server.getUrl("/").openConnection().getInputStream(); - assertEquals('A', in.read()); - assertEquals('B', in.read()); - assertEquals('C', in.read()); + assertEquals(-1, responseBody.read()); // The body is exhausted. + } - assertEquals(-1, responseBody.read()); // The body is exhausted. - } + /** + * Throttle the request body by sleeping 500ms after every 3 bytes. With a + * 6-byte request, this should yield one sleep for a total delay of 500ms. + */ + @Test public void throttleRequest() throws Exception { + server.enqueue(new MockResponse() + .throttleBody(3, 500, TimeUnit.MILLISECONDS)); - /** - * Throttle the request body by sleeping 500ms after every 3 bytes. With a - * 6-byte request, this should yield one sleep for a total delay of 500ms. - */ - public void testThrottleRequest() throws Exception { - server.enqueue(new MockResponse() - .throttleBody(3, 500, TimeUnit.MILLISECONDS)); - server.play(); + long startNanos = System.nanoTime(); + URLConnection connection = server.getUrl("/").openConnection(); + connection.setDoOutput(true); + connection.getOutputStream().write("ABCDEF".getBytes("UTF-8")); + InputStream in = connection.getInputStream(); + assertEquals(-1, in.read()); + long elapsedNanos = System.nanoTime() - startNanos; + long elapsedMillis = NANOSECONDS.toMillis(elapsedNanos); - long startNanos = System.nanoTime(); - URLConnection connection = server.getUrl("/").openConnection(); - connection.setDoOutput(true); - connection.getOutputStream().write("ABCDEF".getBytes("UTF-8")); - InputStream in = connection.getInputStream(); - assertEquals(-1, in.read()); - long elapsedNanos = System.nanoTime() - startNanos; - long elapsedMillis = NANOSECONDS.toMillis(elapsedNanos); + assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis >= 500); + assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis < 1000); + } - assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis >= 500); - assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis < 1000); - } + /** + * Throttle the response body by sleeping 500ms after every 3 bytes. With a + * 6-byte response, this should yield one sleep for a total delay of 500ms. + */ + @Test public void throttleResponse() throws Exception { + server.enqueue(new MockResponse() + .setBody("ABCDEF") + .throttleBody(3, 500, TimeUnit.MILLISECONDS)); - /** - * Throttle the response body by sleeping 500ms after every 3 bytes. With a - * 6-byte response, this should yield one sleep for a total delay of 500ms. - */ - public void testThrottleResponse() throws Exception { - server.enqueue(new MockResponse() - .setBody("ABCDEF") - .throttleBody(3, 500, TimeUnit.MILLISECONDS)); - server.play(); + long startNanos = System.nanoTime(); + URLConnection connection = server.getUrl("/").openConnection(); + InputStream in = connection.getInputStream(); + assertEquals('A', in.read()); + assertEquals('B', in.read()); + assertEquals('C', in.read()); + assertEquals('D', in.read()); + assertEquals('E', in.read()); + assertEquals('F', in.read()); + assertEquals(-1, in.read()); + long elapsedNanos = System.nanoTime() - startNanos; + long elapsedMillis = NANOSECONDS.toMillis(elapsedNanos); - long startNanos = System.nanoTime(); - URLConnection connection = server.getUrl("/").openConnection(); - InputStream in = connection.getInputStream(); - assertEquals('A', in.read()); - assertEquals('B', in.read()); - assertEquals('C', in.read()); - assertEquals('D', in.read()); - assertEquals('E', in.read()); - assertEquals('F', in.read()); - assertEquals(-1, in.read()); - long elapsedNanos = System.nanoTime() - startNanos; - long elapsedMillis = NANOSECONDS.toMillis(elapsedNanos); + assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis >= 500); + assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis < 1000); + } - assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis >= 500); - assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis < 1000); - } + /** + * Delay the response body by sleeping 1000ms. + */ + @Test public void delayResponse() throws IOException { + server.enqueue(new MockResponse() + .setBody("ABCDEF") + .setBodyDelayTimeMs(1000)); - /** - * Delay the response body by sleeping 1000ms. - */ - public void testDelayResponse() throws IOException { - server.enqueue(new MockResponse() - .setBody("ABCDEF") - .setBodyDelayTimeMs(1000)); - server.play(); + long startNanos = System.nanoTime(); + URLConnection connection = server.getUrl("/").openConnection(); + InputStream in = connection.getInputStream(); + assertEquals('A', in.read()); + assertEquals('B', in.read()); + assertEquals('C', in.read()); + assertEquals('D', in.read()); + assertEquals('E', in.read()); + assertEquals('F', in.read()); + assertEquals(-1, in.read()); + long elapsedNanos = System.nanoTime() - startNanos; + long elapsedMillis = NANOSECONDS.toMillis(elapsedNanos); - long startNanos = System.nanoTime(); - URLConnection connection = server.getUrl("/").openConnection(); - InputStream in = connection.getInputStream(); - assertEquals('A', in.read()); - assertEquals('B', in.read()); - assertEquals('C', in.read()); - assertEquals('D', in.read()); - assertEquals('E', in.read()); - assertEquals('F', in.read()); - assertEquals(-1, in.read()); - long elapsedNanos = System.nanoTime() - startNanos; - long elapsedMillis = NANOSECONDS.toMillis(elapsedNanos); - - assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis >= 1000); - assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis <= 1100); - } + assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis >= 1000); + assertTrue(String.format("Request + Response: %sms", elapsedMillis), elapsedMillis <= 1100); + } }