use of com.metamx.http.client.Request in project druid by druid-io.
the class JettyTest method testTimeouts.
@Test
// this test will deadlock if it hits an issue, so ignored by default
@Ignore
public void testTimeouts() throws Exception {
// test for request timeouts properly not locking up all threads
final Executor executor = Executors.newFixedThreadPool(100);
final AtomicLong count = new AtomicLong(0);
final CountDownLatch latch = new CountDownLatch(1000);
for (int i = 0; i < 10000; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
executor.execute(new Runnable() {
@Override
public void run() {
long startTime = System.currentTimeMillis();
long startTime2 = 0;
try {
ListenableFuture<StatusResponseHolder> go = client.go(new Request(HttpMethod.GET, new URL("http://localhost:" + port + "/slow/hello")), new StatusResponseHandler(Charset.defaultCharset()));
startTime2 = System.currentTimeMillis();
go.get();
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("Response time client" + (System.currentTimeMillis() - startTime) + "time taken for getting future" + (System.currentTimeMillis() - startTime2) + "Counter " + count.incrementAndGet());
latch.countDown();
}
}
});
}
});
}
latch.await();
}
use of com.metamx.http.client.Request in project druid by druid-io.
the class LookupCoordinatorManagerTest method testUpdateAllOnHostException.
@Test
public void testUpdateAllOnHostException() throws Exception {
final HttpResponseHandler<InputStream, InputStream> responseHandler = EasyMock.createStrictMock(HttpResponseHandler.class);
final URL url = LookupCoordinatorManager.getLookupsURL(HostAndPort.fromString("localhost"));
final SettableFuture<InputStream> future = SettableFuture.create();
future.set(new ByteArrayInputStream(new byte[0]));
EasyMock.expect(client.go(EasyMock.<Request>anyObject(), EasyMock.<SequenceInputStreamResponseHandler>anyObject(), EasyMock.<Duration>anyObject())).andReturn(future).once();
EasyMock.replay(client, responseHandler);
final LookupCoordinatorManager manager = new LookupCoordinatorManager(client, discoverer, mapper, configManager, lookupCoordinatorManagerConfig) {
@Override
HttpResponseHandler<InputStream, InputStream> makeResponseHandler(final AtomicInteger returnCode, final AtomicReference<String> reasonString) {
returnCode.set(500);
reasonString.set("");
return responseHandler;
}
};
expectedException.expect(new BaseMatcher<Throwable>() {
@Override
public boolean matches(Object o) {
return o instanceof IOException && ((IOException) o).getMessage().startsWith("Bad update request");
}
@Override
public void describeTo(Description description) {
}
});
try {
manager.updateAllOnHost(url, SINGLE_LOOKUP_MAP);
} finally {
EasyMock.verify(client, responseHandler);
}
}
use of com.metamx.http.client.Request in project druid by druid-io.
the class LookupCoordinatorManagerTest method testUpdateAllOnHostFailsWithFailedThings.
@Test
public void testUpdateAllOnHostFailsWithFailedThings() throws Exception {
final HttpResponseHandler<InputStream, InputStream> responseHandler = EasyMock.createStrictMock(HttpResponseHandler.class);
final String failedLookup = "failedLookup";
final URL url = LookupCoordinatorManager.getLookupsURL(HostAndPort.fromString("localhost"));
final SettableFuture<InputStream> future = SettableFuture.create();
future.set(new ByteArrayInputStream(StringUtils.toUtf8(mapper.writeValueAsString(ImmutableMap.of("status", "accepted", LookupModule.FAILED_UPDATES_KEY, ImmutableMap.of(failedLookup, ImmutableMap.of()))))));
EasyMock.expect(client.go(EasyMock.<Request>anyObject(), EasyMock.<SequenceInputStreamResponseHandler>anyObject(), EasyMock.<Duration>anyObject())).andReturn(future).once();
EasyMock.replay(client, responseHandler);
final LookupCoordinatorManager manager = new LookupCoordinatorManager(client, discoverer, mapper, configManager, lookupCoordinatorManagerConfig) {
@Override
HttpResponseHandler<InputStream, InputStream> makeResponseHandler(final AtomicInteger returnCode, final AtomicReference<String> reasonString) {
returnCode.set(200);
reasonString.set("");
return responseHandler;
}
};
expectedException.expectMessage("Lookups failed to update: [\"" + failedLookup + "\"]");
try {
manager.updateAllOnHost(url, SINGLE_LOOKUP_MAP);
} finally {
EasyMock.verify(client, responseHandler);
}
}
use of com.metamx.http.client.Request in project druid by druid-io.
the class LookupCoordinatorManagerTest method testDeleteAllTierMissing.
@Test
public void testDeleteAllTierMissing() throws Exception {
final HttpResponseHandler<InputStream, InputStream> responseHandler = EasyMock.createStrictMock(HttpResponseHandler.class);
final LookupCoordinatorManager manager = new LookupCoordinatorManager(client, discoverer, mapper, configManager, lookupCoordinatorManagerConfig) {
@Override
HttpResponseHandler<InputStream, InputStream> makeResponseHandler(final AtomicInteger returnCode, final AtomicReference<String> reasonString) {
returnCode.set(404);
reasonString.set("");
return responseHandler;
}
};
final HostAndPort hostAndPort = HostAndPort.fromParts("someHost", 8080);
final Collection<String> drop = ImmutableList.of("lookup1");
EasyMock.expect(discoverer.getNodes(LookupModule.getTierListenerPath(LOOKUP_TIER))).andReturn(ImmutableList.of(hostAndPort)).once();
final SettableFuture<InputStream> future = SettableFuture.create();
future.set(new ByteArrayInputStream(new byte[0]));
EasyMock.expect(client.go(EasyMock.<Request>anyObject(), EasyMock.<SequenceInputStreamResponseHandler>anyObject(), EasyMock.<Duration>anyObject())).andReturn(future).once();
EasyMock.replay(client, discoverer, responseHandler);
manager.deleteAllOnTier(LOOKUP_TIER, drop);
EasyMock.verify(client, discoverer, responseHandler);
}
use of com.metamx.http.client.Request in project druid by druid-io.
the class LookupCoordinatorManagerTest method testDeleteAllTierContinuesOnMissing.
@Test
public void testDeleteAllTierContinuesOnMissing() throws Exception {
final HttpResponseHandler<InputStream, InputStream> responseHandler = EasyMock.createStrictMock(HttpResponseHandler.class);
final AtomicInteger responseHandlerCalls = new AtomicInteger(0);
final LookupCoordinatorManager manager = new LookupCoordinatorManager(client, discoverer, mapper, configManager, lookupCoordinatorManagerConfig) {
@Override
HttpResponseHandler<InputStream, InputStream> makeResponseHandler(final AtomicInteger returnCode, final AtomicReference<String> reasonString) {
if (responseHandlerCalls.getAndIncrement() == 0) {
returnCode.set(404);
reasonString.set("Not Found");
} else {
returnCode.set(202);
reasonString.set("");
}
return responseHandler;
}
};
final HostAndPort hostAndPort = HostAndPort.fromParts("someHost", 8080);
final Collection<String> drop = ImmutableList.of("lookup1");
EasyMock.expect(discoverer.getNodes(LookupModule.getTierListenerPath(LOOKUP_TIER))).andReturn(ImmutableList.of(hostAndPort, hostAndPort)).once();
final SettableFuture<InputStream> future = SettableFuture.create();
future.set(new ByteArrayInputStream(new byte[0]));
EasyMock.expect(client.go(EasyMock.<Request>anyObject(), EasyMock.<SequenceInputStreamResponseHandler>anyObject(), EasyMock.<Duration>anyObject())).andReturn(future).times(2);
EasyMock.replay(client, discoverer, responseHandler);
manager.deleteAllOnTier(LOOKUP_TIER, drop);
EasyMock.verify(client, discoverer, responseHandler);
Assert.assertEquals(2, responseHandlerCalls.get());
}
Aggregations