1
0
mirror of https://github.com/square/okhttp.git synced 2026-01-18 20:40:58 +03:00

Merge pull request #1217 from square/jw/mws-style

Update MWS test style to match project.
This commit is contained in:
Jesse Wilson
2014-12-21 11:04:32 -05:00

View File

@@ -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<String> headers = Arrays.asList(
"User-Agent: okhttp",
"Cookie: s=square",
"Cookie: a=android",
"X-Whitespace: left",
"X-Whitespace:right ",
"X-Whitespace: both "
);
List<Integer> 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<String> headers = Arrays.asList(
"User-Agent: okhttp",
"Cookie: s=square",
"Cookie: a=android",
"X-Whitespace: left",
"X-Whitespace:right ",
"X-Whitespace: both "
);
List<Integer> 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 <a
* href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3">100
* Status</a> expect the server to send an interim response with status code
* 100 before they send their payload.
*
* <h4>Note</h4>
*
* 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 <a
* href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3">100
* Status</a> expect the server to send an interim response with status code
* 100 before they send their payload.
*
* <h4>Note</h4>
*
* 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);
}
}