java类okhttp3.mockwebserver.SocketPolicy的实例源码

ConnectionReuseTest.java 文件源码 项目:GitHub 阅读 23 收藏 0 点赞 0 评论 0
@Test public void silentRetryWhenIdempotentRequestFailsOnReusedConnection() throws Exception {
  server.enqueue(new MockResponse().setBody("a"));
  server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.DISCONNECT_AFTER_REQUEST));
  server.enqueue(new MockResponse().setBody("b"));

  Request request = new Request.Builder()
      .url(server.url("/"))
      .build();

  Response responseA = client.newCall(request).execute();
  assertEquals("a", responseA.body().string());
  assertEquals(0, server.takeRequest().getSequenceNumber());

  Response responseB = client.newCall(request).execute();
  assertEquals("b", responseB.body().string());
  assertEquals(1, server.takeRequest().getSequenceNumber());
  assertEquals(0, server.takeRequest().getSequenceNumber());
}
ConnectionReuseTest.java 文件源码 项目:GitHub 阅读 24 收藏 0 点赞 0 评论 0
@Test public void staleConnectionNotReusedForNonIdempotentRequest() throws Exception {
  server.enqueue(new MockResponse().setBody("a")
      .setSocketPolicy(SocketPolicy.SHUTDOWN_OUTPUT_AT_END));
  server.enqueue(new MockResponse().setBody("b"));

  Request requestA = new Request.Builder()
      .url(server.url("/"))
      .build();
  Response responseA = client.newCall(requestA).execute();
  assertEquals("a", responseA.body().string());
  assertEquals(0, server.takeRequest().getSequenceNumber());

  // Give the socket a chance to become stale.
  Thread.sleep(250);

  Request requestB = new Request.Builder()
      .url(server.url("/"))
      .post(RequestBody.create(MediaType.parse("text/plain"), "b"))
      .build();
  Response responseB = client.newCall(requestB).execute();
  assertEquals("b", responseB.body().string());
  assertEquals(0, server.takeRequest().getSequenceNumber());
}
URLConnectionTest.java 文件源码 项目:GitHub 阅读 27 收藏 0 点赞 0 评论 0
@Test public void streamedBodyIsNotRetried() throws Exception {
  server.enqueue(new MockResponse()
      .setSocketPolicy(SocketPolicy.DISCONNECT_AFTER_REQUEST));

  urlFactory = new OkUrlFactory(defaultClient().newBuilder()
      .dns(new DoubleInetAddressDns())
      .build());
  HttpURLConnection connection = urlFactory.open(server.url("/").url());
  connection.setDoOutput(true);
  connection.setChunkedStreamingMode(100);
  OutputStream os = connection.getOutputStream();
  os.write("OutputStream is no fun.".getBytes("UTF-8"));
  os.close();

  try {
    connection.getResponseCode();
    fail();
  } catch (IOException expected) {
  }

  assertEquals(1, server.getRequestCount());
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 21 收藏 0 点赞 0 评论 0
@Test public void multipleConnectsForSingleCall() throws IOException {
  enableTlsWithTunnel(false);
  server.enqueue(new MockResponse()
      .setSocketPolicy(SocketPolicy.FAIL_HANDSHAKE));
  server.enqueue(new MockResponse());

  client = client.newBuilder()
      .dns(new DoubleInetAddressDns())
      .build();

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  Response response = call.execute();
  assertEquals(200, response.code());
  response.body().close();

  listener.removeUpToEvent(ConnectStart.class);
  listener.removeUpToEvent(ConnectFailed.class);
  listener.removeUpToEvent(ConnectStart.class);
  listener.removeUpToEvent(ConnectEnd.class);
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 19 收藏 0 点赞 0 评论 0
@Test public void failedSecureConnect() {
  enableTlsWithTunnel(false);
  server.enqueue(new MockResponse()
      .setSocketPolicy(SocketPolicy.FAIL_HANDSHAKE));

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  try {
    call.execute();
    fail();
  } catch (IOException expected) {
  }

  SecureConnectStart secureStart = listener.removeUpToEvent(SecureConnectStart.class);
  assertSame(call, secureStart.call);

  CallFailed callFailed = listener.removeUpToEvent(CallFailed.class);
  assertSame(call, callFailed.call);
  assertNotNull(callFailed.ioe);
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 20 收藏 0 点赞 0 评论 0
@Test public void secureConnectWithTunnel() throws IOException {
  enableTlsWithTunnel(true);
  server.enqueue(new MockResponse()
      .setSocketPolicy(SocketPolicy.UPGRADE_TO_SSL_AT_END));
  server.enqueue(new MockResponse());

  client = client.newBuilder()
      .proxy(server.toProxyAddress())
      .build();

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  Response response = call.execute();
  assertEquals(200, response.code());
  response.body().close();

  SecureConnectStart secureStart = listener.removeUpToEvent(SecureConnectStart.class);
  assertSame(call, secureStart.call);

  SecureConnectEnd secureEnd = listener.removeUpToEvent(SecureConnectEnd.class);
  assertSame(call, secureEnd.call);
  assertNotNull(secureEnd.handshake);
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 19 收藏 0 点赞 0 评论 0
@Test public void multipleSecureConnectsForSingleCall() throws IOException {
  enableTlsWithTunnel(false);
  server.enqueue(new MockResponse()
      .setSocketPolicy(SocketPolicy.FAIL_HANDSHAKE));
  server.enqueue(new MockResponse());

  client = client.newBuilder()
      .dns(new DoubleInetAddressDns())
      .build();

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  Response response = call.execute();
  assertEquals(200, response.code());
  response.body().close();

  listener.removeUpToEvent(SecureConnectStart.class);
  listener.removeUpToEvent(ConnectFailed.class);

  listener.removeUpToEvent(SecureConnectStart.class);
  listener.removeUpToEvent(SecureConnectEnd.class);
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 26 收藏 0 点赞 0 评论 0
private void responseBodyFail(Protocol expectedProtocol) throws IOException {
  // Use a 2 MiB body so the disconnect won't happen until the client has read some data.
  int responseBodySize = 2 * 1024 * 1024; // 2 MiB
  server.enqueue(new MockResponse()
      .setBody(new Buffer().write(new byte[responseBodySize]))
      .setSocketPolicy(SocketPolicy.DISCONNECT_DURING_RESPONSE_BODY));

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  Response response = call.execute();
  if (expectedProtocol == Protocol.HTTP_2) {
    // soft failure since client may not support depending on Platform
    assumeThat(response, matchesProtocol(Protocol.HTTP_2));
  }
  assertEquals(expectedProtocol, response.protocol());
  try {
    response.body.string();
    fail();
  } catch (IOException expected) {
  }

  CallFailed callFailed = listener.removeUpToEvent(CallFailed.class);
  assertNotNull(callFailed.ioe);
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 22 收藏 0 点赞 0 评论 0
@Ignore("the CallEnd event is omitted")
@Test public void emptyResponseBody() throws IOException {
  server.enqueue(new MockResponse()
      .setBody("")
      .setBodyDelay(1, TimeUnit.SECONDS)
      .setSocketPolicy(SocketPolicy.DISCONNECT_DURING_RESPONSE_BODY));

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  Response response = call.execute();
  response.body().close();

  List<String> expectedEvents = Arrays.asList("CallStart", "DnsStart", "DnsEnd",
      "ConnectStart", "ConnectEnd", "ConnectionAcquired", "RequestHeadersStart",
      "RequestHeadersEnd", "ResponseHeadersStart", "ResponseHeadersEnd", "ResponseBodyStart",
      "ResponseBodyEnd", "ConnectionReleased", "CallEnd");
  assertEquals(expectedEvents, listener.recordedEventTypes());
}
EventListenerTest.java 文件源码 项目:GitHub 阅读 24 收藏 0 点赞 0 评论 0
@Ignore("this reports CallFailed not CallEnd")
@Test public void responseBodyClosedClosedWithoutReadingAllData() throws IOException {
  server.enqueue(new MockResponse()
      .setBody("abc")
      .setBodyDelay(1, TimeUnit.SECONDS)
      .setSocketPolicy(SocketPolicy.DISCONNECT_DURING_RESPONSE_BODY));

  Call call = client.newCall(new Request.Builder()
      .url(server.url("/"))
      .build());
  Response response = call.execute();
  response.body().close();

  List<String> expectedEvents = Arrays.asList("CallStart", "DnsStart", "DnsEnd",
      "ConnectStart", "ConnectEnd", "ConnectionAcquired", "RequestHeadersStart",
      "RequestHeadersEnd", "ResponseHeadersStart", "ResponseHeadersEnd", "ResponseBodyStart",
      "ResponseBodyEnd", "ConnectionReleased", "CallEnd");
  assertEquals(expectedEvents, listener.recordedEventTypes());
}


问题


面经


文章

微信
公众号

扫码关注公众号