package glaze;
import glaze.Glaze;
import glaze.client.Response;
import glaze.client.handlers.DefaultResponseHandler;
import glaze.client.handlers.ErrorHandler;
import glaze.client.sync.DefaultSyncClient;
import glaze.client.sync.SyncClient;
import glaze.test.http.BaseHttpTest;
import glaze.test.http.Condition;
import glaze.util.TypeHelper;
import java.util.Map;
import org.apache.http.HttpStatus;
import org.apache.http.impl.conn.PoolingClientConnectionManager;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestClose extends BaseHttpTest
{
@Test(timeOut = 5000)
public void synMapClose()
{
server.expect(Condition.when("GET").respond(HttpStatus.SC_FORBIDDEN));
SyncClient client = new DefaultSyncClient();
try {
final PoolingClientConnectionManager cman = (PoolingClientConnectionManager) client.getHttpClient().getConnectionManager();
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
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);
}
}).map(client, TypeHelper.plainMap());
Assert.assertNull(out);
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
} finally {
client.shutdown();
}
}
@Test(timeOut = 5000)
public void synSendClose()
{
server.expect(Condition.when("GET").respond(HttpStatus.SC_FORBIDDEN));
SyncClient client = new DefaultSyncClient();
try {
final PoolingClientConnectionManager cman = (PoolingClientConnectionManager) client.getHttpClient().getConnectionManager();
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
Response 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);
}
}).send(client);
Assert.assertNull(out);
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
} finally {
client.shutdown();
}
}
@Test(timeOut = 5000)
public void synSendHandlerClose()
{
server.expect(Condition.when("GET").respond(HttpStatus.SC_FORBIDDEN));
SyncClient client = new DefaultSyncClient();
try {
final PoolingClientConnectionManager cman = (PoolingClientConnectionManager) client.getHttpClient().getConnectionManager();
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
Response out = Glaze.Get(baseUrl + "/").withHandler(new DefaultResponseHandler()
{
@Override
public Response onError(Response response)
{
Assert.assertEquals(cman.getTotalStats().getLeased(), 1);
Assert.assertEquals(response.status(), HttpStatus.SC_FORBIDDEN);
return null;
}
@Override
protected Response onResponse(Response response)
{
Assert.fail("response OK invocation");
return null;
}
}).execute(client);
Assert.assertNull(out);
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
} finally {
client.shutdown();
}
}
@Test(timeOut = 5000)
public void synSendHandlerOkClose()
{
server.expect(Condition.when("GET").respond(HttpStatus.SC_ACCEPTED));
SyncClient client = new DefaultSyncClient();
try {
final PoolingClientConnectionManager cman = (PoolingClientConnectionManager) client.getHttpClient().getConnectionManager();
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
Response out = Glaze.Get(baseUrl + "/").withHandler(new DefaultResponseHandler()
{
@Override
public Response onError(Response response)
{
Assert.fail("response ERROR invocation");
return null;
}
@Override
protected Response onResponse(Response response)
{
Assert.assertEquals(cman.getTotalStats().getLeased(), 1);
Assert.assertEquals(response.status(), HttpStatus.SC_ACCEPTED);
return null;
}
}).execute(client);
Assert.assertNull(out);
Assert.assertEquals(cman.getTotalStats().getLeased(), 0);
} finally {
client.shutdown();
}
}
}