package glaze; import glaze.Glaze; import glaze.client.Response; import glaze.client.async.DefaultAsyncClient; import glaze.client.handlers.ErrorHandler; import glaze.test.http.BaseHttpTest; import glaze.test.http.Condition; import glaze.util.TypeHelper; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import org.apache.http.HttpStatus; import org.apache.http.impl.nio.conn.PoolingClientAsyncConnectionManager; import org.testng.Assert; import org.testng.annotations.Test; public class TestAsyncClose extends BaseHttpTest { @Test(timeOut = 5000) public void asyncMapClose() throws InterruptedException, ExecutionException { server.expect(Condition.when("GET").respond(HttpStatus.SC_FORBIDDEN)); DefaultAsyncClient client = new DefaultAsyncClient(); try { final PoolingClientAsyncConnectionManager cman = (PoolingClientAsyncConnectionManager) client.getHttpClient().getConnectionManager(); Assert.assertEquals(cman.getTotalStats().getLeased(), 0); Future<Map<String, Object>> out = Glaze.Get(baseUrl + "/").withErrorHandler(new ErrorHandler() { @Override public void onError(Response response) { Assert.assertEquals(cman.getTotalStats().getLeased(), 1); Assert.assertEquals(response.status(), HttpStatus.SC_FORBIDDEN); } }).mapAsync(client, TypeHelper.plainMap()); Assert.assertNull(out.get()); Assert.assertEquals(cman.getTotalStats().getLeased(), 0); } finally { client.shutdown(); } } // TODO test send ErrorHandler when implemented }