public MockResourceContext() { this.requestHeaders = new HashMap<>(); this.requestContext = new RequestContext(); }
/** * Creates new ParSeqRestClient with default configuration. * * @deprecated Please use {@link ParSeqRestliClientBuilder} to create instances. */ @Deprecated public ParSeqRestClient(final Client client) { ArgumentUtil.requireNotNull(client, "client"); _client = client; _requestConfigProvider = RequestConfigProvider.build(new ParSeqRestliClientConfigBuilder().build(), () -> Optional.empty()); _requestContextProvider = request -> new RequestContext(); _d2RequestTimeoutEnabled = false; }
request -> new RequestContext() : _requestContextProvider;
/** * Creates new ParSeqRestClient with default configuration. * * @deprecated Please use {@link ParSeqRestliClientBuilder} to create instances. */ @Deprecated public ParSeqRestClient(final RestClient client) { ArgumentUtil.requireNotNull(client, "client"); _client = client; _requestConfigProvider = RequestConfigProvider.build(new ParSeqRestliClientConfigBuilder().build(), () -> Optional.empty()); _requestContextProvider = request -> new RequestContext(); _d2RequestTimeoutEnabled = false; }
private <T> RequestContext createRequestContext(Request<T> request) { RequestContext requestContext = new RequestContext(); requestContext.putLocalAttr("method", request.getMethod()); return requestContext; }
private <T> RequestContext createRequestContext(Request<T> request) { RequestContext requestContext = new RequestContext(); requestContext.putLocalAttr("method", request.getMethod()); return requestContext; }
@Test(dataProvider = "operationsData") public void testCompressionOperations(String compressionConfig, String[] operations, boolean headerShouldBePresent) throws URISyntaxException { StreamRequest streamRequest = new StreamRequestBuilder(new URI(URI)).build(EntityStreams.emptyStream()); ClientStreamCompressionFilter clientCompressionFilter = new ClientStreamCompressionFilter(StreamEncodingType.IDENTITY.getHttpName(), new CompressionConfig(Integer.MAX_VALUE), ACCEPT_COMPRESSIONS, new CompressionConfig(Integer.MAX_VALUE), Arrays.asList(compressionConfig.split(",")), Executors.newCachedThreadPool() ); for (String operation: operations) { RequestContext context = new RequestContext(); context.putLocalAttr(R2Constants.OPERATION, operation); clientCompressionFilter.onStreamRequest(streamRequest, context, Collections.<String, String>emptyMap(), new HeaderCaptureFilter(HttpConstants.ACCEPT_ENCODING, headerShouldBePresent)); } }
@Test(dataProvider = "requestCompressionData") public void testRequestCompressionRules(CompressionConfig requestCompressionConfig, CompressionOption requestCompressionOverride, boolean headerShouldBePresent) throws CompressionException, URISyntaxException { ClientCompressionFilter clientCompressionFilter = new ClientCompressionFilter(EncodingType.SNAPPY.getHttpName(), requestCompressionConfig, ACCEPT_COMPRESSIONS, new CompressionConfig(Integer.MAX_VALUE), Collections.<String>emptyList()); // The entity should be compressible for this test. int original = 100; byte[] entity = new byte[original]; Arrays.fill(entity, (byte)'A'); RestRequest restRequest = new RestRequestBuilder(new URI(URI)).setMethod(RestMethod.POST).setEntity(entity).build(); int compressed = EncodingType.SNAPPY.getCompressor().deflate(new ByteArrayInputStream(entity)).length; RequestContext context = new RequestContext(); context.putLocalAttr(R2Constants.REQUEST_COMPRESSION_OVERRIDE, requestCompressionOverride); int entityLength = headerShouldBePresent ? compressed : original; String expectedContentEncoding = headerShouldBePresent ? EncodingType.SNAPPY.getHttpName() : null; clientCompressionFilter.onRestRequest(restRequest, context, Collections.<String, String>emptyMap(), new HeaderCaptureFilter(HttpConstants.CONTENT_ENCODING, expectedContentEncoding, entityLength)); }
@Test(dataProvider = "responseCompressionData") public void testResponseCompressionRules(CompressionConfig responseCompressionConfig, CompressionOption responseCompressionOverride, String expectedAcceptEncoding, String expectedCompressionThreshold, String operation) throws CompressionException, URISyntaxException { ClientCompressionFilter clientCompressionFilter = new ClientCompressionFilter(EncodingType.SNAPPY.getHttpName(), new CompressionConfig(Integer.MAX_VALUE), ACCEPT_COMPRESSIONS, responseCompressionConfig, Arrays.asList(ClientCompressionHelper.COMPRESS_ALL_RESPONSES_INDICATOR)); RestRequest restRequest = new RestRequestBuilder(new URI(URI)).build(); RequestContext context = new RequestContext(); if (operation != null) { context.putLocalAttr(R2Constants.OPERATION, operation); } context.putLocalAttr(R2Constants.RESPONSE_COMPRESSION_OVERRIDE, responseCompressionOverride); clientCompressionFilter.onRestRequest(restRequest, context, Collections.<String, String>emptyMap(), new HeaderCaptureFilter(HttpConstants.ACCEPT_ENCODING, expectedAcceptEncoding)); clientCompressionFilter.onRestRequest(restRequest, context, Collections.<String, String>emptyMap(), new HeaderCaptureFilter(HttpConstants.HEADER_RESPONSE_COMPRESSION_THRESHOLD, expectedCompressionThreshold)); }
@Test(dataProvider = "headersData") public void testResponseCompressionRules(String acceptEncoding, int compressionThreshold, EncodingType expectedContentEncoding) throws CompressionException, URISyntaxException { ServerCompressionFilter serverCompressionFilter = new ServerCompressionFilter(ACCEPT_COMPRESSIONS); RequestContext context = new RequestContext(); context.putLocalAttr(HttpConstants.ACCEPT_ENCODING, acceptEncoding); context.putLocalAttr(HttpConstants.HEADER_RESPONSE_COMPRESSION_THRESHOLD, compressionThreshold); int originalLength = 100; byte[] entity = new byte[originalLength]; Arrays.fill(entity, (byte) 'A'); int compressedLength = (expectedContentEncoding == null) ? originalLength : expectedContentEncoding.getCompressor().deflate(new ByteArrayInputStream(entity)).length; String expectedContentEncodingName = (expectedContentEncoding == null) ? null : expectedContentEncoding.getHttpName(); RestResponse restResponse = new RestResponseBuilder().setEntity(entity).build(); serverCompressionFilter.onRestResponse(restResponse, context, Collections.<String, String>emptyMap(), new HeaderCaptureFilter(HttpConstants.CONTENT_ENCODING, expectedContentEncodingName, compressedLength)); } }
RequestContext context = new RequestContext(); if (operation != null)
RequestContext context = new RequestContext(); if (operation != null)
@Test public void testLongerTimeoutFromContext() { setInboundRequestContext(new InboundRequestContextBuilder() .setName("withD2Timeout") .build()); GetRequest<Greeting> request = new GreetingsBuilders().get().id(1L).build(); RequestContext context = new RequestContext(); context.putLocalAttr(R2Constants.REQUEST_TIMEOUT, 12000); Task<?> task = _parseqClient.createTask(request, context); runAndWait(getTestClassName() + ".testTimeoutRequest", task); assertFalse(hasTask("withTimeout", task.getTrace())); verifyRequestContextTimeout(request, 12000, null); }
@Test public void testTighterTimeoutFromContext() { setInboundRequestContext(new InboundRequestContextBuilder() .setName("withD2Timeout") .build()); GetRequest<Greeting> request = new GreetingsBuilders().get().id(1L).build(); RequestContext context = new RequestContext(); context.putLocalAttr(R2Constants.REQUEST_TIMEOUT, 4000); Task<?> task = _parseqClient.createTask(request, context); runAndWait(getTestClassName() + ".testTimeoutRequest", task); assertFalse(hasTask("withTimeout", task.getTrace())); verifyRequestContextTimeout(request, 4000, null); }
@Override public <T> ResponseFuture<T> sendRequest(Request<T> request, ErrorHandlingBehavior errorHandlingBehavior) { return sendRequest(request, new RequestContext(), errorHandlingBehavior); }
@Override public void sendRequest(MultiplexedRequest multiplexedRequest, Callback<MultiplexedResponse> callback) { sendRequest(multiplexedRequest, new RequestContext(), callback); }
/** * handle a {@link com.linkedin.r2.message.rest.RestRequest}. * @see TransportDispatcher#handleRestRequest * * @param req the request to be handled. * @param callback the callback to be invoked with the response or error. */ public void handleRequest(RestRequest req, TransportCallback<RestResponse> callback) { handleRequest(req, new RequestContext(), callback); }
@Override public Future<RestResponse> restRequest(RestRequest request) { return restRequest(request, new RequestContext()); }
@Override public <T> ResponseFuture<T> sendRequest(RequestBuilder<? extends Request<T>> requestBuilder) { return sendRequest(requestBuilder.build(), new RequestContext()); }
@Override public <T> void sendRequest(Request<T> request, Callback<Response<T>> callback) { RequestContext requestContext = new RequestContext(); doEvaluateDisruptContext(request, requestContext); _client.sendRequest(request, requestContext, callback); }