Java 类org.apache.http.client.methods.HttpExecutionAware 实例源码
项目:vscrawler
文件:ProxyFeedBackClientExecChain.java
@Override
public CloseableHttpResponse execute(HttpRoute route, HttpRequestWrapper request, HttpClientContext clientContext,
HttpExecutionAware execAware) throws IOException, HttpException {
Proxy proxy = (Proxy) clientContext.getAttribute(VSCrawlerConstant.VSCRAWLER_AVPROXY_KEY);
if (proxy != null) {
proxy.recordUsage();
}
try {
return delegate.execute(route, request, clientContext, execAware);
} catch (IOException ioe) {
if (proxy != null) {
proxy.recordFailed();
}
throw ioe;
}
}
项目:purecloud-iot
文件:TestProtocolDeviations.java
@Test
public void testPassesOnOrigin401ResponseWithoutWWWAuthenticateHeader() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HTTP_1_1, 401, "Unauthorized"));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, HttpRequestWrapper.wrap(request), context, null);
verifyMocks();
Assert.assertSame(originResponse, result);
}
项目:purecloud-iot
文件:CachingExec.java
private CloseableHttpResponse revalidateCacheEntry(
final HttpRoute route,
final HttpRequestWrapper request,
final HttpClientContext context,
final HttpExecutionAware execAware,
final HttpCacheEntry entry,
final Date now) throws HttpException {
try {
if (asynchRevalidator != null
&& !staleResponseNotAllowed(request, entry, now)
&& validityPolicy.mayReturnStaleWhileRevalidating(entry, now)) {
log.trace("Serving stale with asynchronous revalidation");
final CloseableHttpResponse resp = generateCachedResponse(request, context, entry, now);
asynchRevalidator.revalidateCacheEntry(this, route, request, context, execAware, entry);
return resp;
}
return revalidateCacheEntry(route, request, context, execAware, entry);
} catch (final IOException ioex) {
return handleRevalidationFailure(request, context, entry, now);
}
}
项目:purecloud-iot
文件:CachingExec.java
private CloseableHttpResponse handleCacheMiss(
final HttpRoute route,
final HttpRequestWrapper request,
final HttpClientContext context,
final HttpExecutionAware execAware) throws IOException, HttpException {
final HttpHost target = context.getTargetHost();
recordCacheMiss(target, request);
if (!mayCallBackend(request)) {
return Proxies.enhanceResponse(
new BasicHttpResponse(
HttpVersion.HTTP_1_1, HttpStatus.SC_GATEWAY_TIMEOUT, "Gateway Timeout"));
}
final Map<String, Variant> variants = getExistingCacheVariants(target, request);
if (variants != null && !variants.isEmpty()) {
return negotiateResponseFromVariants(route, request, context,
execAware, variants);
}
return callBackend(route, request, context, execAware);
}
项目:purecloud-iot
文件:TestProtocolDeviations.java
@Test
public void testPassesOnOrigin407WithoutAProxyAuthenticateHeader() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HTTP_1_1, 407, "Proxy Authentication Required"));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, HttpRequestWrapper.wrap(request), context, null);
verifyMocks();
Assert.assertSame(originResponse, result);
}
项目:purecloud-iot
文件:AsynchronousValidator.java
/**
* Schedules an asynchronous revalidation
*/
public synchronized void revalidateCacheEntry(
final CachingExec cachingExec,
final HttpRoute route,
final HttpRequestWrapper request,
final HttpClientContext context,
final HttpExecutionAware execAware,
final HttpCacheEntry entry) {
// getVariantURI will fall back on getURI if no variants exist
final String uri = cacheKeyGenerator.getVariantURI(context.getTargetHost(), request, entry);
if (!queued.contains(uri)) {
final int consecutiveFailedAttempts = failureCache.getErrorCount(uri);
final AsynchronousValidationRequest revalidationRequest =
new AsynchronousValidationRequest(
this, cachingExec, route, request, context, execAware, entry, uri, consecutiveFailedAttempts);
try {
schedulingStrategy.schedule(revalidationRequest);
queued.add(uri);
} catch (final RejectedExecutionException ree) {
log.debug("Revalidation for [" + uri + "] not scheduled: " + ree);
}
}
}
项目:purecloud-iot
文件:TestProtocolRecommendations.java
private void testDoesNotModifyHeaderOnRequests(final String headerName)
throws Exception {
final String headerValue = HttpTestUtils.getCanonicalHeaderValue(request, headerName);
final Capture<HttpRequestWrapper> cap = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.capture(cap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
assertEquals(headerValue,
HttpTestUtils.getCanonicalHeaderValue(cap.getValue(),
headerName));
}
项目:purecloud-iot
文件:TestProtocolExec.java
@Test(expected = HttpException.class)
public void testPostProcessHttpException() throws Exception {
final HttpRoute route = new HttpRoute(target);
final HttpRequestWrapper request = HttpRequestWrapper.wrap(new HttpGet("/test"));
final HttpClientContext context = HttpClientContext.create();
final CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class);
Mockito.when(requestExecutor.execute(
Mockito.eq(route),
Mockito.<HttpRequestWrapper>any(),
Mockito.<HttpClientContext>any(),
Mockito.<HttpExecutionAware>any())).thenReturn(response);
Mockito.doThrow(new HttpException("Ooopsie")).when(httpProcessor).process(
Mockito.same(response), Mockito.<HttpContext>any());
try {
protocolExec.execute(route, request, context, execAware);
} catch (final Exception ex) {
Mockito.verify(response).close();
throw ex;
}
}
项目:purecloud-iot
文件:TestServiceUnavailableRetryExec.java
@Test(expected = RuntimeException.class)
public void testStrategyRuntimeException() throws Exception {
final HttpRoute route = new HttpRoute(target);
final HttpRequestWrapper request = HttpRequestWrapper.wrap(new HttpGet("/test"));
final HttpClientContext context = HttpClientContext.create();
final CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class);
Mockito.when(requestExecutor.execute(
Mockito.eq(route),
Mockito.<HttpRequestWrapper>any(),
Mockito.<HttpClientContext>any(),
Mockito.<HttpExecutionAware>any())).thenReturn(response);
Mockito.doThrow(new RuntimeException("Ooopsie")).when(retryStrategy).retryRequest(
Mockito.<HttpResponse>any(),
Mockito.anyInt(),
Mockito.<HttpContext>any());
try {
retryExec.execute(route, request, context, execAware);
} catch (final Exception ex) {
Mockito.verify(response).close();
throw ex;
}
}
项目:purecloud-iot
文件:TestProtocolDeviations.java
@Test
public void testPassesOnOrigin405WithoutAllowHeader() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HTTP_1_1, 405, "Method Not Allowed"));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, HttpRequestWrapper.wrap(request), context, null);
verifyMocks();
Assert.assertSame(originResponse, result);
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testHigherMajorProtocolVersionsOnRequestSwitchToTunnelBehavior() throws Exception {
// tunnel behavior: I don't muck with request or response in
// any way
request = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", new ProtocolVersion("HTTP", 2, 13)));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
eqRequest(request),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertSame(originResponse, result);
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testHigher1_XProtocolVersionsDowngradeTo1_1() throws Exception {
request = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", new ProtocolVersion("HTTP", 1, 2)));
final HttpRequestWrapper downgraded = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", HttpVersion.HTTP_1_1));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
eqRequest(downgraded),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertTrue(HttpTestUtils.semanticallyTransparent(originResponse, result));
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testRequestsWithLowerProtocolVersionsGetUpgradedTo1_1() throws Exception {
request = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", new ProtocolVersion("HTTP", 1, 0)));
final HttpRequestWrapper upgraded = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", HttpVersion.HTTP_1_1));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
eqRequest(upgraded),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertTrue(HttpTestUtils.semanticallyTransparent(originResponse, result));
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testLowerOriginResponsesUpgradedToOurVersion1_1() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 2), HttpStatus.SC_OK, "OK"));
originResponse.setHeader("Date", DateUtils.formatDate(new Date()));
originResponse.setHeader("Server", "MockOrigin/1.0");
originResponse.setEntity(body);
// not testing this internal behavior in this test, just want
// to check the protocol version that comes out the other end
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertEquals(HttpVersion.HTTP_1_1, result.getProtocolVersion());
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testResponseToA1_0RequestShouldUse1_1() throws Exception {
request = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", new ProtocolVersion("HTTP", 1, 0)));
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertEquals(HttpVersion.HTTP_1_1, result.getProtocolVersion());
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testForwardsUnknownHeadersOnRequestsFromHigherProtocolVersions() throws Exception {
request = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", new ProtocolVersion("HTTP", 1, 2)));
request.removeHeaders("Connection");
request.addHeader("X-Unknown-Header", "some-value");
final HttpRequestWrapper downgraded = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", HttpVersion.HTTP_1_1));
downgraded.removeHeaders("Connection");
downgraded.addHeader("X-Unknown-Header", "some-value");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
eqRequest(downgraded),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testTransferCodingsAreNotSentToAnHTTP_1_0Client() throws Exception {
originResponse.setHeader("Transfer-Encoding", "identity");
request = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/foo", new ProtocolVersion("HTTP", 1, 0)));
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertNull(result.getFirstHeader("TE"));
Assert.assertNull(result.getFirstHeader("Transfer-Encoding"));
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
private void testOrderOfMultipleHeadersIsPreservedOnRequests(final String h, final HttpRequestWrapper request)
throws Exception {
final Capture<HttpRequestWrapper> reqCapture = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.capture(reqCapture),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
final HttpRequest forwarded = reqCapture.getValue();
Assert.assertNotNull(forwarded);
final String expected = HttpTestUtils.getCanonicalHeaderValue(request, h);
final String actual = HttpTestUtils.getCanonicalHeaderValue(forwarded, h);
if (!actual.contains(expected)) {
Assert.assertEquals(expected, actual);
}
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
private void testOrderOfMultipleHeadersIsPreservedOnResponses(final String h) throws Exception {
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertNotNull(result);
Assert.assertEquals(HttpTestUtils.getCanonicalHeaderValue(originResponse, h), HttpTestUtils
.getCanonicalHeaderValue(result, h));
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
private void testUnknownResponseStatusCodeIsNotCached(final int code) throws Exception {
emptyMockCacheExpectsNoPuts();
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HttpVersion.HTTP_1_1, code, "Moo"));
originResponse.setHeader("Date", DateUtils.formatDate(new Date()));
originResponse.setHeader("Server", "MockOrigin/1.0");
originResponse.setHeader("Cache-Control", "max-age=3600");
originResponse.setEntity(body);
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
// in particular, there were no storage calls on the cache
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testUnknownHeadersOnRequestsAreForwarded() throws Exception {
request.addHeader("X-Unknown-Header", "blahblah");
final Capture<HttpRequestWrapper> reqCap = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.capture(reqCap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
final HttpRequest forwarded = reqCap.getValue();
final Header[] hdrs = forwarded.getHeaders("X-Unknown-Header");
Assert.assertEquals(1, hdrs.length);
Assert.assertEquals("blahblah", hdrs[0].getValue());
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void test200ResponseToOPTIONSWithNoBodyShouldIncludeContentLengthZero() throws Exception {
request = HttpRequestWrapper.wrap(new BasicHttpRequest("OPTIONS", "/", HttpVersion.HTTP_1_1));
originResponse.setEntity(null);
originResponse.setHeader("Content-Length", "0");
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
final Header contentLength = result.getFirstHeader("Content-Length");
Assert.assertNotNull(contentLength);
Assert.assertEquals("0", contentLength.getValue());
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testDecrementsMaxForwardsWhenForwardingOPTIONSRequest() throws Exception {
request = HttpRequestWrapper.wrap(new BasicHttpRequest("OPTIONS", "*", HttpVersion.HTTP_1_1));
request.setHeader("Max-Forwards", "7");
final Capture<HttpRequestWrapper> cap = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.capture(cap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
final HttpRequest captured = cap.getValue();
Assert.assertEquals("6", captured.getFirstHeader("Max-Forwards").getValue());
}
项目:purecloud-iot
文件:TestProtocolExec.java
@Test
public void testFundamentals() throws Exception {
final HttpRoute route = new HttpRoute(target);
final HttpRequestWrapper request = HttpRequestWrapper.wrap(new HttpGet("/test"));
final HttpClientContext context = HttpClientContext.create();
final CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class);
Mockito.when(requestExecutor.execute(
Mockito.eq(route),
Mockito.<HttpRequestWrapper>any(),
Mockito.<HttpClientContext>any(),
Mockito.<HttpExecutionAware>any())).thenReturn(response);
protocolExec.execute(route, request, context, execAware);
Mockito.verify(httpProcessor).process(request, context);
Mockito.verify(requestExecutor).execute(route, request, context, execAware);
Mockito.verify(httpProcessor).process(response, context);
Assert.assertEquals(new HttpHost("foo", 80), context.getTargetHost());
Assert.assertEquals(target, context.getTargetHost());
Assert.assertEquals(route, context.getHttpRoute());
Assert.assertSame(request, context.getRequest());
Assert.assertSame(response, context.getResponse());
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testResponseToAHEADRequestMustNotHaveABody() throws Exception {
request = HttpRequestWrapper.wrap(new BasicHttpRequest("HEAD", "/", HttpVersion.HTTP_1_1));
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertTrue(result.getEntity() == null || result.getEntity().getContentLength() == 0);
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testResponsesToPOSTWithoutCacheControlOrExpiresAreNotCached() throws Exception {
emptyMockCacheExpectsNoPuts();
final BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/",
HttpVersion.HTTP_1_1);
post.setHeader("Content-Length", "128");
post.setEntity(HttpTestUtils.makeBody(128));
originResponse.removeHeaders("Cache-Control");
originResponse.removeHeaders("Expires");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, HttpRequestWrapper.wrap(post), context, null);
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testResponsesToPUTsAreNotCached() throws Exception {
emptyMockCacheExpectsNoPuts();
final BasicHttpEntityEnclosingRequest put = new BasicHttpEntityEnclosingRequest("PUT", "/",
HttpVersion.HTTP_1_1);
put.setEntity(HttpTestUtils.makeBody(128));
put.addHeader("Content-Length", "128");
originResponse.setHeader("Cache-Control", "max-age=3600");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, HttpRequestWrapper.wrap(put), context, null);
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testResponsesToDELETEsAreNotCached() throws Exception {
emptyMockCacheExpectsNoPuts();
request = HttpRequestWrapper.wrap(new BasicHttpRequest("DELETE", "/", HttpVersion.HTTP_1_1));
originResponse.setHeader("Cache-Control", "max-age=3600");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testResponsesToTRACEsAreNotCached() throws Exception {
emptyMockCacheExpectsNoPuts();
request = HttpRequestWrapper.wrap(new BasicHttpRequest("TRACE", "/", HttpVersion.HTTP_1_1));
originResponse.setHeader("Cache-Control", "max-age=3600");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void test204ResponsesDoNotContainMessageBodies() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_NO_CONTENT, "No Content"));
originResponse.setEntity(HttpTestUtils.makeBody(entityLength));
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertTrue(result.getEntity() == null || result.getEntity().getContentLength() == 0);
}
项目:purecloud-iot
文件:TestProtocolExec.java
@Test(expected = RuntimeException.class)
public void testPostProcessRuntimeException() throws Exception {
final HttpRoute route = new HttpRoute(target);
final HttpRequestWrapper request = HttpRequestWrapper.wrap(new HttpGet("/test"));
final HttpClientContext context = HttpClientContext.create();
final CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class);
Mockito.when(requestExecutor.execute(
Mockito.eq(route),
Mockito.<HttpRequestWrapper>any(),
Mockito.<HttpClientContext>any(),
Mockito.<HttpExecutionAware>any())).thenReturn(response);
Mockito.doThrow(new RuntimeException("Ooopsie")).when(httpProcessor).process(
Mockito.same(response), Mockito.<HttpContext>any());
try {
protocolExec.execute(route, request, context, execAware);
} catch (final Exception ex) {
Mockito.verify(response).close();
throw ex;
}
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void test303ResponsesAreNotCached() throws Exception {
emptyMockCacheExpectsNoPuts();
request = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_SEE_OTHER, "See Other"));
originResponse.setHeader("Date", DateUtils.formatDate(new Date()));
originResponse.setHeader("Server", "MockServer/1.0");
originResponse.setHeader("Cache-Control", "max-age=3600");
originResponse.setHeader("Content-Type", "application/x-cachingclient-test");
originResponse.setHeader("Location", "http://foo.example.com/other");
originResponse.setEntity(HttpTestUtils.makeBody(entityLength));
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void test304ResponseWithDateHeaderForwardedFromOriginIncludesDateHeader()
throws Exception {
request.setHeader("If-None-Match", "\"etag\"");
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_NOT_MODIFIED,
"Not Modified"));
originResponse.setHeader("Date", DateUtils.formatDate(new Date()));
originResponse.setHeader("Server", "MockServer/1.0");
originResponse.setHeader("ETag", "\"etag\"");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
verifyMocks();
Assert.assertNotNull(result.getFirstHeader("Date"));
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testMustIncludeWWWAuthenticateHeaderOnAnOrigin401Response() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HttpVersion.HTTP_1_1, 401, "Unauthorized"));
originResponse.setHeader("WWW-Authenticate", "x-scheme x-param");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
if (result.getStatusLine().getStatusCode() == 401) {
Assert.assertNotNull(result.getFirstHeader("WWW-Authenticate"));
}
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testMustIncludeProxyAuthenticateHeaderFromAnOrigin407Response() throws Exception {
originResponse = Proxies.enhanceResponse(
new BasicHttpResponse(HttpVersion.HTTP_1_1, 407, "Proxy Authentication Required"));
originResponse.setHeader("Proxy-Authenticate", "x-scheme x-param");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.isA(HttpRequestWrapper.class),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
final HttpResponse result = impl.execute(route, request, context, null);
if (result.getStatusLine().getStatusCode() == 407) {
Assert.assertNotNull(result.getFirstHeader("Proxy-Authenticate"));
}
verifyMocks();
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
private HttpResponse testRequestWithWeakETagValidatorIsNotAllowed(final String header)
throws Exception {
final Capture<HttpRequestWrapper> cap = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.capture(cap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse).times(0, 1);
replayMocks();
final HttpResponse response = impl.execute(route, request, context, null);
verifyMocks();
// it's probably ok to return a 400 (Bad Request) to this client
if (cap.hasCaptured()) {
final HttpRequest forwarded = cap.getValue();
final Header h = forwarded.getFirstHeader(header);
if (h != null) {
Assert.assertFalse(h.getValue().startsWith("W/"));
}
}
return response;
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
private void testDoesNotModifyHeaderOnRequest(final String header, final String value) throws Exception {
final BasicHttpEntityEnclosingRequest req =
new BasicHttpEntityEnclosingRequest("POST","/",HttpVersion.HTTP_1_1);
req.setEntity(HttpTestUtils.makeBody(128));
req.setHeader("Content-Length","128");
req.setHeader(header,value);
final Capture<HttpRequestWrapper> cap = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
EasyMock.capture(cap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, HttpRequestWrapper.wrap(req), context, null);
verifyMocks();
final HttpRequest captured = cap.getValue();
Assert.assertEquals(value, captured.getFirstHeader(header).getValue());
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testViaHeaderOnRequestProperlyRecordsClientProtocol()
throws Exception {
request = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_0));
request.removeHeaders("Via");
final Capture<HttpRequestWrapper> cap = new Capture<HttpRequestWrapper>();
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.capture(cap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
final HttpRequest captured = cap.getValue();
final String via = captured.getFirstHeader("Via").getValue();
final String protocol = via.split("\\s+")[0];
final String[] protoParts = protocol.split("/");
if (protoParts.length > 1) {
Assert.assertTrue("http".equalsIgnoreCase(protoParts[0]));
}
Assert.assertEquals("1.0",protoParts[protoParts.length-1]);
}
项目:purecloud-iot
文件:TestProtocolRequirements.java
@Test
public void testProperlyFormattedViaHeaderIsAddedToRequests() throws Exception {
final Capture<HttpRequestWrapper> cap = new Capture<HttpRequestWrapper>();
request.removeHeaders("Via");
EasyMock.expect(
mockBackend.execute(
EasyMock.isA(HttpRoute.class),
EasyMock.capture(cap),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(originResponse);
replayMocks();
impl.execute(route, request, context, null);
verifyMocks();
final HttpRequest captured = cap.getValue();
final String via = captured.getFirstHeader("Via").getValue();
assertValidViaHeader(via);
}
项目:java-apache-httpclient
文件:TracingClientExec.java
@Override
public CloseableHttpResponse execute(
HttpRoute route,
HttpRequestWrapper request,
HttpClientContext clientContext,
HttpExecutionAware execAware) throws IOException, HttpException {
ActiveSpan localSpan = clientContext.getAttribute(ACTIVE_SPAN, ActiveSpan.class);
CloseableHttpResponse response = null;
try {
if (localSpan == null) {
localSpan = handleLocalSpan(request, clientContext);
}
return (response = handleNetworkProcessing(localSpan, route, request, clientContext, execAware));
} catch (Exception e) {
localSpan.deactivate();
throw e;
} finally {
if (response != null) {
/**
* This exec runs after {@link org.apache.http.impl.execchain.RedirectExec} which loops
* until there is no redirect or reaches max redirect count.
* {@link RedirectStrategy} is used to decide whether localSpan should be finished or not.
* If there is a redirect localSpan is not finished and redirect is logged.
*/
Integer redirectCount = clientContext.getAttribute(REDIRECT_COUNT, Integer.class);
if (!redirectHandlingDisabled &&
clientContext.getRequestConfig().isRedirectsEnabled() &&
redirectStrategy.isRedirected(request, response, clientContext) &&
++redirectCount < clientContext.getRequestConfig().getMaxRedirects()) {
clientContext.setAttribute(REDIRECT_COUNT, redirectCount);
} else {
localSpan.deactivate();
}
}
}
}