final CountDownLatch latch = new CountDownLatch(1);
final AtomicReference<Class<? extends TimeoutException>> response = new AtomicReference<Class<? extends TimeoutException>>();
Client client = ClientFactory.getDefault().newClient();
Options o = client.newOptionsBuilder().reconnect(false).requestTimeoutInSeconds(5).build();
RequestBuilder request = client.newRequestBuilder()
.method(Request.METHOD.GET)
.uri(targetUrl + "/suspend")
.encoder(new Encoder<String, String>() {
@Override
public String encode(String s) {
return "<-" + s.toString() + "->";
}
})
.transport(transport());
Socket socket = client.create(o);
socket.on(new Function<TimeoutException>() {
@Override
public void on(TimeoutException t) {
response.set(t.getClass());
latch.countDown();
}
}).open(request.build());
latch.await(5, TimeUnit.SECONDS);
socket.close();
assertEquals(response.get(), TimeoutException.class);