@Test(groups = { "standalone", "default_provider" }) public void testDeriveOverrideURL() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl("http://invalid.url").build(); SimpleAsyncHttpClient derived = client.derive().setUrl(getTargetUrl()).build(); try { ByteArrayOutputStream o = new ByteArrayOutputStream(10); InputStreamBodyGenerator generator = new InputStreamBodyGenerator(new ByteArrayInputStream(MY_MESSAGE.getBytes())); OutputStreamBodyConsumer consumer = new OutputStreamBodyConsumer(o); Future<Response> future = derived.post(generator, consumer); Response response = future.get(); assertEquals(response.getStatusCode(), 200); assertEquals(o.toString(), MY_MESSAGE); } finally { client.close(); derived.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testNullUrl() throws Exception { SimpleAsyncHttpClient client = null; try { client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).build().derive().build(); } finally { if (client != null) client.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testCloseMasterInvalidDerived() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl()).build(); SimpleAsyncHttpClient derived = client.derive().build(); client.close(); try { derived.get().get(); fail("Expected closed AHC"); // expected -- Seems to me that this behavior conflicts with the requirements of Future.get() } catch (ExecutionException e) { assertTrue(e.getCause() instanceof IOException); } finally { client.close(); derived.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testCloseDerivedValidMaster() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setUrl(getTargetUrl()).build(); try { SimpleAsyncHttpClient derived = client.derive().build(); derived.get().get(); derived.close(); Response response = client.get().get(); assertEquals(response.getStatusCode(), 200); } finally { client.close(); } }
@Test(groups = { "standalone", "default_provider" }) public void testDerive() throws Exception { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).build(); SimpleAsyncHttpClient derived = client.derive().build(); try { assertNotSame(derived, client); } finally { client.close(); derived.close(); } }