Java 类okhttp3.mockwebserver.Dispatcher 实例源码

项目:GitHub    文件:CallTest.java   
@Test public void canceledBeforeResponseReadSignalsOnFailure() throws Exception {
  Request requestA = new Request.Builder().url(server.url("/a")).build();
  final Call call = client.newCall(requestA);
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      call.cancel();
      return new MockResponse().setBody("A");
    }
  });

  call.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertFailure("Canceled", "stream was reset: CANCEL",
      "Socket closed");
}
项目:GitHub    文件:WebSocketHttpTest.java   
/**
 * There's no read timeout when reading the first byte of a new frame. But as soon as we start
 * reading a frame we enable the read timeout. In this test we have the server returning the first
 * byte of a frame but no more frames.
 */
@Test public void readTimeoutAppliesWithinFrames() throws IOException {
  webServer.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
      return upgradeResponse(request)
          .setBody(new Buffer().write(ByteString.decodeHex("81"))) // Truncated frame.
          .removeHeader("Content-Length")
          .setSocketPolicy(SocketPolicy.KEEP_OPEN);
    }
  });

  WebSocket webSocket = newWebSocket();
  clientListener.assertOpen();

  clientListener.assertFailure(SocketTimeoutException.class, "timeout");
  assertFalse(webSocket.close(1000, null));
}
项目:GitHub    文件:Benchmark.java   
private MockWebServer startServer() throws IOException {
  Logger.getLogger(MockWebServer.class.getName()).setLevel(Level.WARNING);
  MockWebServer server = new MockWebServer();

  if (tls) {
    SslClient sslClient = SslClient.localhost();
    server.useHttps(sslClient.socketFactory, false);
    server.setProtocols(protocols);
  }

  final MockResponse response = newResponse();
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      return response;
    }
  });

  server.start();
  return server;
}
项目:GitHub    文件:CallTest.java   
@Test public void canceledBeforeResponseReadSignalsOnFailure() throws Exception {
  Request requestA = new Request.Builder().url(server.url("/a")).build();
  final Call call = client.newCall(requestA);
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      call.cancel();
      return new MockResponse().setBody("A");
    }
  });

  call.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertFailure("Canceled", "stream was reset: CANCEL",
      "Socket closed");
}
项目:GitHub    文件:WebSocketHttpTest.java   
/**
 * There's no read timeout when reading the first byte of a new frame. But as soon as we start
 * reading a frame we enable the read timeout. In this test we have the server returning the first
 * byte of a frame but no more frames.
 */
@Test public void readTimeoutAppliesWithinFrames() throws IOException {
  webServer.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
      return upgradeResponse(request)
          .setBody(new Buffer().write(ByteString.decodeHex("81"))) // Truncated frame.
          .removeHeader("Content-Length")
          .setSocketPolicy(SocketPolicy.KEEP_OPEN);
    }
  });

  WebSocket webSocket = newWebSocket();
  clientListener.assertOpen();

  clientListener.assertFailure(SocketTimeoutException.class, "timeout", "Read timed out");
  assertFalse(webSocket.close(1000, null));
}
项目:GitHub    文件:Benchmark.java   
private MockWebServer startServer() throws IOException {
  Logger.getLogger(MockWebServer.class.getName()).setLevel(Level.WARNING);
  MockWebServer server = new MockWebServer();

  if (tls) {
    SslClient sslClient = SslClient.localhost();
    server.useHttps(sslClient.socketFactory, false);
    server.setProtocols(protocols);
  }

  final MockResponse response = newResponse();
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      return response;
    }
  });

  server.start();
  return server;
}
项目:PriorityOkHttp    文件:CallTest.java   
/**
 * This test puts a request in front of one that is to be canceled, so that it is canceled before
 * I/O takes place.
 */
@Test public void canceledBeforeIOSignalsOnFailure() throws Exception {
  client.dispatcher().setMaxRequests(1); // Force requests to be executed serially.

  Request requestA = new Request.Builder().url(server.url("/a")).build();
  Request requestB = new Request.Builder().url(server.url("/b")).build();
  final Call callA = client.newCall(requestA);
  final Call callB = client.newCall(requestB);

  server.setDispatcher(new Dispatcher() {
    char nextResponse = 'A';

    @Override public MockResponse dispatch(RecordedRequest request) {
      callB.cancel();
      return new MockResponse().setBody(Character.toString(nextResponse++));
    }
  });

  callA.enqueue(callback);
  callB.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertBody("A");
  // At this point we know the callback is ready, and that it will receive a cancel failure.
  callback.await(requestB.url()).assertFailure("Canceled");
}
项目:PriorityOkHttp    文件:CallTest.java   
@Test public void canceledBeforeResponseReadSignalsOnFailure() throws Exception {
  Request requestA = new Request.Builder().url(server.url("/a")).build();
  final Call call = client.newCall(requestA);
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      call.cancel();
      return new MockResponse().setBody("A");
    }
  });

  call.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertFailure("Canceled", "stream was reset: CANCEL",
      "Socket closed");
}
项目:PriorityOkHttp    文件:Benchmark.java   
private MockWebServer startServer() throws IOException {
  Logger.getLogger(MockWebServer.class.getName()).setLevel(Level.WARNING);
  MockWebServer server = new MockWebServer();

  if (tls) {
    SSLContext sslContext = SslContextBuilder.localhost();
    server.useHttps(sslContext.getSocketFactory(), false);
    server.setProtocols(protocols);
  }

  final MockResponse response = newResponse();
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      return response;
    }
  });

  server.start();
  return server;
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * This test show how to create CallAdapter.Factory without adding a reaction for errors.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testCompletes1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return MockWebServerUtils.getSuccessfulResponse();
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows, that when the server responds with different error
 * {@link retrofit2.HttpException} than
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategies} react to
 * ({@link java.net.SocketTimeoutException}) the execution ends immediately.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testCompletes2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            switch (mockWebServer.getRequestCount()) {
                case 1:
                    return new MockResponse().setResponseCode(500);
                case 2:
                    return new MockResponse().setResponseCode(404);
                case 3:
                    return MockWebServerUtils.getSuccessfulResponse();
                default:
                    return new MockResponse().setResponseCode(500);
            }
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setBase(2)
                    .setMaxRetries(3).build())
            .addBackoffStrategy(Simple.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    //four SocketTimeoutExceptions and 3 exponential backoff's
    assertTrue((endTime - startTime) <= (1) * MockWebServerUtils.ONE_SEC);
}
项目:RetrofitRxErrorHandler    文件:SimpleBackoffTest.java   
/**
 * Test demonstrates the simple usage of {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Simple}
 * backoff strategy. The server does not responds (every time {@link java.net.SocketTimeoutException}
 * occurrs). The backoff strategy is executed immediately after each error, so there should be
 * 4 times 10 second timeout.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffError1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setSocketPolicy(SocketPolicy.NO_RESPONSE);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Simple.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setMaxRetries(3).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    //four SocketTimeoutExceptions
    assertTrue((endTime - startTime) >= 4 * 10 * MockWebServerUtils.ONE_SEC);
}
项目:RetrofitRxErrorHandler    文件:SimpleBackoffTest.java   
/**
 * Test demonstrates the usage of {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Simple}
 * backoff strategy. The server responds with 500 server error every time. The backoff strategy
 * is executed and after {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Simple.Builder#setMaxRetries(int)}
 * is run out, the appropriate error is passed to client.
 * 4 times 10 second timeout.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffCompletes1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Simple.init()
                    .addHttpCode(500)
                    .setMaxRetries(300).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    testObserver.assertError(HttpException.class);
}
项目:RetrofitRxErrorHandler    文件:SimpleBackoffTest.java   
/**
 * The same as {@link #testBackoffCompletes1()} but with different assertion.
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffCompletes2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Simple.init()
                    .addHttpCode(500)
                    .setMaxRetries(300).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    assertEquals(1, testObserver.errorCount());
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffOneTime1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() == 1) {
                return new MockResponse().setResponseCode(500);
            } else if (mockWebServer.getRequestCount() == 2) {
                return MockWebServerUtils.getSuccessfulResponse();
            }
            return new MockResponse().setResponseCode(404);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    assertEquals(1, testObserver.valueCount());
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffTwoTimes() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() < 3) {
                return new MockResponse().setResponseCode(500);
            } else if (mockWebServer.getRequestCount() == 3) {
                return MockWebServerUtils.getSuccessfulResponse();
            }
            return new MockResponse().setResponseCode(404);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    assertEquals(1, testObserver.valueCount());
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffCompletes() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return MockWebServerUtils.getSuccessfulResponse();
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testSubscriber = observable.test();
    testSubscriber.awaitTerminalEvent();
    testSubscriber.assertComplete();
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffError1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    assertEquals(1, testObserver.errorCount());
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffError2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    assertTrue((endTime - startTime) >= 13 * MockWebServerUtils.ONE_SEC);
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * This test show how to create CallAdapter.Factory without adding a reaction for errors.
 * <br></br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testCompletes1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return MockWebServerUtils.getSuccessfulResponse();
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestSubscriber testSubscriber = new TestSubscriber();
    observable.subscribe(testSubscriber);
    testSubscriber.awaitTerminalEvent();
    testSubscriber.assertCompleted();
}
项目:RetrofitRxErrorHandler    文件:SimpleBackoffTest.java   
/**
 * Test demonstrates the usage of {@link com.rzagorski.retrofitrxerrorhandler.backoff.strategies.Simple}
 * backoff strategy. The server responds with 500 server error every time. The backoff strategy
 * is executed and after {@link com.rzagorski.retrofitrxerrorhandler.backoff.strategies.Simple.Builder#setMaxRetries(int)}
 * is run out, the appropriate error is passed to client.
 * 4 times 10 second timeout.
 * <br></br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffCompletes1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Simple.init()
                    .addHttpCode(500)
                    .setMaxRetries(300).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestSubscriber testSubscriber = new TestSubscriber();
    observable.subscribe(testSubscriber);
    testSubscriber.awaitTerminalEvent();
    testSubscriber.assertError(HttpException.class);
}
项目:RetrofitRxErrorHandler    文件:SimpleBackoffTest.java   
/**
 * The same as {@link #testBackoffCompletes1()} but with different assertion.
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffCompletes2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Simple.init()
                    .addHttpCode(500)
                    .setMaxRetries(300).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestSubscriber testSubscriber = new TestSubscriber();
    observable.subscribe(testSubscriber);
    testSubscriber.awaitTerminalEvent();
    assertEquals(testSubscriber.getOnErrorEvents().size(), 1);
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffCompletes() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return MockWebServerUtils.getSuccessfulResponse();
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestSubscriber testSubscriber = new TestSubscriber();
    observable.subscribe(testSubscriber);
    testSubscriber.awaitTerminalEvent();
    testSubscriber.assertCompleted();
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffError1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    Observable observable = github.repos("square");
    TestSubscriber testSubscriber = new TestSubscriber();
    observable.subscribe(testSubscriber);
    testSubscriber.awaitTerminalEvent();
    assertTrue(testSubscriber.getOnErrorEvents().size() == 1);
}
项目:RetrofitRxErrorHandler    文件:ExponentialBackoffTest.java   
@Test
public void testBackoffError2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestSubscriber testSubscriber = new TestSubscriber();
    observable.subscribe(testSubscriber);
    testSubscriber.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    assertTrue((endTime - startTime) >= 13 * MockWebServerUtils.ONE_SEC);
}
项目:Okhttp    文件:CallTest.java   
@Test public void canceledBeforeResponseReadSignalsOnFailure() throws Exception {
  Request requestA = new Request.Builder().url(server.url("/a")).build();
  final Call call = client.newCall(requestA);
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      call.cancel();
      return new MockResponse().setBody("A");
    }
  });

  call.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertFailure("Canceled", "stream was reset: CANCEL",
      "Socket closed");
}
项目:Okhttp    文件:Benchmark.java   
private MockWebServer startServer() throws IOException {
  Logger.getLogger(MockWebServer.class.getName()).setLevel(Level.WARNING);
  MockWebServer server = new MockWebServer();

  if (tls) {
    SslClient sslClient = SslClient.localhost();
    server.useHttps(sslClient.socketFactory, false);
    server.setProtocols(protocols);
  }

  final MockResponse response = newResponse();
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      return response;
    }
  });

  server.start();
  return server;
}
项目:lazybot    文件:RoomApiTest.java   
@Test
public void sendMessage() throws IOException {
    server.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            final String body = request.getBody().readUtf8();
            receivedNotification = JacksonUtils.deserialize(body, Notification.class);
            return new MockResponse();
        }
    });
    server.start();

    final RoomApiHttp http = getRoomApi(server, (oauthId, oauthSecret) -> getValidOAuthToken());
    http.sendMessage("hello", null);
    assertThat(receivedNotification, is(new Notification("hello", null)));
}
项目:lazybot    文件:OAuthApiTest.java   
@Test
public void requestToken() throws IOException {
    final RequestTokenResponse fakeResponse = new RequestTokenResponse();
    fakeResponse.setAccessToken("token!");
    server.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            final String body = request.getBody().readUtf8();
            assertThat(body, is("grant_type=client_credentials&scope=scope1+scope2"));
            return new MockResponse().setResponseCode(200).setBody(JacksonUtils.serialize(fakeResponse));
        }
    });
    server.start();

    final OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new LoggingInterceptor()).build();
    final HipChatConfig hipChatConfig = new HipChatConfig();
    hipChatConfig.setHipChatApiUrl(server.url("").toString());
    hipChatConfig.setScopes(new HashSet<>(Arrays.asList("scope1", "scope2")));
    final OAuthApiHttp http = new OAuthApiHttp(client, hipChatConfig);
    final RequestTokenResponse response = http.requestToken("id", "secret");

    assertThat(response, is(fakeResponse));
}
项目:jus    文件:Benchmark.java   
private MockWebServer startServer(States.GenericState state) throws IOException {
  Logger.getLogger(MockWebServer.class.getName()).setLevel(Level.WARNING);
  MockWebServer server = new MockWebServer();

  if (state.tls) {
    SslClient sslClient = SslClient.localhost();
    server.useHttps(sslClient.socketFactory, false);
    server.setProtocols(state.protocols);
  }

  final MockResponse response = newResponse(state);
  server.setDispatcher(new Dispatcher() {
    @Override public MockResponse dispatch(RecordedRequest request) {
      return response;
    }
  });

  server.start();
  return server;
}
项目:GitHub    文件:CallTest.java   
/**
 * This test puts a request in front of one that is to be canceled, so that it is canceled before
 * I/O takes place.
 */
@Test public void canceledBeforeIOSignalsOnFailure() throws Exception {
  // Force requests to be executed serially.
  okhttp3.Dispatcher dispatcher = new okhttp3.Dispatcher(client.dispatcher().executorService());
  dispatcher.setMaxRequests(1);
  client = client.newBuilder()
      .dispatcher(dispatcher)
      .build();

  Request requestA = new Request.Builder().url(server.url("/a")).build();
  Request requestB = new Request.Builder().url(server.url("/b")).build();
  final Call callA = client.newCall(requestA);
  final Call callB = client.newCall(requestB);

  server.setDispatcher(new Dispatcher() {
    char nextResponse = 'A';

    @Override public MockResponse dispatch(RecordedRequest request) {
      callB.cancel();
      return new MockResponse().setBody(Character.toString(nextResponse++));
    }
  });

  callA.enqueue(callback);
  callB.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertBody("A");
  // At this point we know the callback is ready, and that it will receive a cancel failure.
  callback.await(requestB.url()).assertFailure("Canceled", "Socket closed");
}
项目:GitHub    文件:CallTest.java   
/**
 * This test puts a request in front of one that is to be canceled, so that it is canceled before
 * I/O takes place.
 */
@Test public void canceledBeforeIOSignalsOnFailure() throws Exception {
  // Force requests to be executed serially.
  okhttp3.Dispatcher dispatcher = new okhttp3.Dispatcher(client.dispatcher().executorService());
  dispatcher.setMaxRequests(1);
  client = client.newBuilder()
      .dispatcher(dispatcher)
      .build();

  Request requestA = new Request.Builder().url(server.url("/a")).build();
  Request requestB = new Request.Builder().url(server.url("/b")).build();
  final Call callA = client.newCall(requestA);
  final Call callB = client.newCall(requestB);

  server.setDispatcher(new Dispatcher() {
    char nextResponse = 'A';

    @Override public MockResponse dispatch(RecordedRequest request) {
      callB.cancel();
      return new MockResponse().setBody(Character.toString(nextResponse++));
    }
  });

  callA.enqueue(callback);
  callB.enqueue(callback);
  assertEquals("/a", server.takeRequest().getPath());

  callback.await(requestA.url()).assertBody("A");
  // At this point we know the callback is ready, and that it will receive a cancel failure.
  callback.await(requestB.url()).assertFailure("Canceled", "Socket closed");
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of two
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategies}.
 * Shows that the delay is greater than 3 exponential backoff strategy invocation, that reacts
 * to {@link retrofit2.HttpException} and 3 simple strategies, that reacts to {@link java.net.SocketTimeoutException}
 * <br>
 * Shows that every backoff strategy is invoked as many times as in
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Exponential.Builder#setMaxRetries(int)}
 * or in {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Simple.Builder#setMaxRetries(int)}
 * independently.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffError1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() % 2 == 0) {
                return new MockResponse().setResponseCode(500);
            } else {
                return new MockResponse().setSocketPolicy(SocketPolicy.NO_RESPONSE);
            }
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(HttpException.class)
                    .setBase(2)
                    .setMaxRetries(3).build())
            .addBackoffStrategy(Simple.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    //four SocketTimeoutExceptions and 3 exponential backoff's
    assertTrue((endTime - startTime) >= (1 + 2 + 4 + 8) * MockWebServerUtils.ONE_SEC + 4 * 10 * MockWebServerUtils.ONE_SEC);
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of two
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategies}.
 * Shows that the delay is greater than 3 exponential backoff strategy invocation, that reacts
 * to 500 server error and 3 simple strategies, that reacts to {@link java.net.SocketTimeoutException}
 * <br>
 * Shows that every backoff strategy is invoked as many times as in
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Exponential.Builder#setMaxRetries(int)}
 * or in {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Simple.Builder#setMaxRetries(int)}
 * independently.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffError2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() % 2 == 0) {
                return new MockResponse().setResponseCode(500);
            } else {
                return new MockResponse().setSocketPolicy(SocketPolicy.NO_RESPONSE);
            }
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addHttpCode(500)
                    .setBase(2)
                    .setMaxRetries(3).build())
            .addBackoffStrategy(Simple.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setMaxRetries(3).build())
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    //four SocketTimeoutExceptions and 3 exponential backoff's
    assertTrue((endTime - startTime) >= (1 + 2 + 4 + 8) * MockWebServerUtils.ONE_SEC + 4 * 10 * MockWebServerUtils.ONE_SEC);
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of one
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategy}.
 * Shows that there is minimal delay, if the response from server is different than strategy
 * reacts to.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffError3() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setBase(2)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    assertTrue((endTime - startTime) <= 1 * 1000L);
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of two
 * {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategies}.
 * Shows that there is minimal delay, if the response from server is different than strategies
 * react to.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackoffError4() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            return new MockResponse().setResponseCode(500);
        }
    });
    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setBase(2)
                    .setMaxRetries(3).build())
            .addBackoffStrategy(Exponential.init()
                    .addHttpCode(404)
                    .build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));

    long startTime = System.currentTimeMillis();
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    long endTime = System.currentTimeMillis();
    System.out.println((endTime - startTime));
    assertTrue((endTime - startTime) <= MockWebServerUtils.ONE_SEC);
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of backup `Observable`. Checks if successful response is passed to
 * `Subscriber` even if backup `Observable` is invoked.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackupObservable1() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() == 1) {
                return new MockResponse().setResponseCode(404);
            } else if (mockWebServer.getRequestCount() > 1) {
                return MockWebServerUtils.getSuccessfulResponse();
            }
            return new MockResponse().setResponseCode(500);
        }
    });

    Observable<Boolean> backupObservable = Observable.just(Boolean.TRUE);

    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addHttpCode(404)
                    .addObservable(backupObservable)
                    .setBase(2)
                    .setMaxRetries(3)
                    .build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of backup `Observable`. Checks if it is invoked at least one time.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackupObservable2() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() <= 3) {
                return new MockResponse().setResponseCode(404);
            } else if (mockWebServer.getRequestCount() > 3) {
                return MockWebServerUtils.getSuccessfulResponse();
            }
            return new MockResponse().setResponseCode(500);
        }
    });

    Observable<Boolean> backupObservable = Observable.just(Boolean.TRUE);
    TestObservable testBackupObservable = new TestObservable();
    backupObservable = testBackupObservable.wrap(backupObservable);

    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addHttpCode(404)
                    .addObservable(backupObservable)
                    .setBase(2)
                    .setMaxRetries(3)
                    .build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    testObserver.awaitTerminalEvent();
    testBackupObservable.assertStarted();
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of backup `Observable`. Checks if it completes at least one time.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackupObservable4() throws Exception {
    final int REQUEST_COUNT = 3;
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() <= REQUEST_COUNT) {
                return new MockResponse().setResponseCode(404);
            } else if (mockWebServer.getRequestCount() > REQUEST_COUNT) {
                return MockWebServerUtils.getSuccessfulResponse();
            }
            return new MockResponse().setResponseCode(500);
        }
    });

    Observable<Boolean> backupObservable = Observable.just(Boolean.TRUE);
    TestObservable testBackupObservable = new TestObservable();
    backupObservable = testBackupObservable.wrap(backupObservable);

    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addHttpCode(404)
                    .addObservable(backupObservable)
                    .setBase(2)
                    .setMaxRetries(3)
                    .build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    testBackupObservable.assertCompleted();
}
项目:RetrofitRxErrorHandler    文件:CommonBackoffTest.java   
/**
 * Test shows the usage of backup `Observable`. Checks if successful response is passed to
 * `Subscriber` even if backup `Observable` is invoked and it does not emits any elements.
 * <br>
 * Test created by Robert Zagorski on 19.10.2016
 */
@Test
public void testBackupObservable5() throws Exception {
    mockWebServer.setDispatcher(new Dispatcher() {
        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
            if (mockWebServer.getRequestCount() == 1) {
                return new MockResponse().setResponseCode(404);
            } else if (mockWebServer.getRequestCount() > 1) {
                return MockWebServerUtils.getSuccessfulResponse();
            }
            return new MockResponse().setResponseCode(500);
        }
    });

    Observable<Boolean> backupObservable = Observable.empty();

    RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
            .addBackoffStrategy(Exponential.init()
                    .addHttpCode(404)
                    .addObservable(backupObservable)
                    .setBase(2)
                    .setMaxRetries(3)
                    .build())
            .setLoggingEnabled(true)
            .build();
    GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
            new RxErrorHandingFactory(rxCallAdapter));
    Observable observable = github.repos("square");
    TestObserver testObserver = observable.test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
}