Java 类io.reactivex.netty.protocol.http.client.HttpClientRequest 实例源码
项目:tusRx
文件:EndToEndTest.java
@Test
public void testConcurrentPatch() throws InterruptedException {
HttpClientRequest<ByteBuf, ByteBuf> post = post(100L);
Observable<byte[]> slowContent = Observable.just("hello ".getBytes()).repeat()
.zipWith(Observable.interval(50, TimeUnit.MILLISECONDS).startWith(0L), (data, nop) -> data).take(10);
Observable<byte[]> fastContent = Observable.just("goodbye ".getBytes()).repeat()
.zipWith(Observable.interval(10, TimeUnit.MILLISECONDS).startWith(0L), (data, nop) -> data).take(10);
Iterator<HttpClientResponse<ByteBuf>> iterator = post.map(this::getLocation)
.flatMap(location -> Observable.merge(
patch(location, 0 , slowContent),
patch(location, 0, fastContent).delay(120, TimeUnit.MILLISECONDS)))
.toBlocking().getIterator();
// the first response should be the failure
assertThat(iterator.next()).isNotNull()
.extracting(HttpClientResponse::getStatus).containsExactly(HttpResponseStatus.BAD_REQUEST);
// the second one should be sucessfull
assertThat(iterator.next()).isNotNull()
.extracting(HttpClientResponse::getStatus).containsExactly(HttpResponseStatus.NO_CONTENT);
}
项目:ge-export
文件:Application.java
protected static Observable<JsonNode> buildEventStream(String buildId, String lastEventId) {
AtomicReference<String> _lastBuildEventId = new AtomicReference<>(null);
HttpClientRequest<ByteBuf, ByteBuf> request = HTTP_CLIENT
.createGet("/build-export/v1/build/" + buildId + "/events?eventTypes=" + EventProcessor.EVENT_TYPES)
.setKeepAlive(true);
if (BASIC_AUTH != null) {
request = request.addHeader("Authorization", "Basic " + BASIC_AUTH);
}
if (lastEventId != null) {
request = request.addHeader("Last-Event-ID", lastEventId);
}
return request
.flatMap(HttpClientResponse::getContentAsServerSentEvents)
.doOnNext(serverSentEvent -> _lastBuildEventId.set(serverSentEvent.getEventIdAsString()))
.doOnSubscribe(() -> LOGGER.info("Streaming events for build: " + buildId))
.filter(serverSentEvent -> serverSentEvent.getEventTypeAsString().equals("BuildEvent"))
.map(Application::parse)
.onErrorResumeNext(t -> {
LOGGER.info("Error streaming build events of build " + buildId + ", resuming from event id" + _lastBuildEventId.get() + "...");
return buildEventStream(buildId, _lastBuildEventId.get());
});
}
项目:wildfly-swarm
文件:SecuredTransportFactory.java
@Override
public HttpClient<ByteBuf, ByteBuf> newHttpClient(final IClientConfig config) {
final List<ExecutionListener<HttpClientRequest<ByteBuf>, HttpClientResponse<ByteBuf>>> listeners = new ArrayList<>();
listeners.add(createBearerHeaderAdder());
final PipelineConfiguratorComposite<HttpClientResponse<ByteBuf>, HttpClientRequest<ByteBuf>> pipelineConfigurator = new PipelineConfiguratorComposite<HttpClientResponse<ByteBuf>,
HttpClientRequest<ByteBuf>>(new HttpClientPipelineConfigurator<ByteBuf, ByteBuf>(),
new HttpObjectAggregationConfigurator(maxChunkSize));
final LoadBalancingHttpClient<ByteBuf, ByteBuf> client = LoadBalancingHttpClient.<ByteBuf, ByteBuf>builder()
.withClientConfig(config)
.withExecutorListeners(listeners)
.withRetryHandler(getDefaultHttpRetryHandlerWithConfig(config))
.withPipelineConfigurator(pipelineConfigurator)
.withPoolCleanerScheduler(RibbonTransport.poolCleanerScheduler)
.build();
return client;
}
项目:vizceral-hystrix
文件:ZmonMonitoringSystem.java
private Observable<JsonNode> get(String url)
{
return rxNetty.submit(withHeaders(HttpClientRequest.create(HttpMethod.GET, configuration.getPath() + url)))
.flatMap(clientResponse ->
{
if (clientResponse.getStatus().code() == 200)
{
return clientResponse.getContent();
}
else
{
logger.error("Got http {} from zmon", clientResponse.getStatus().code());
return Observable.empty();
}
})
.flatMap(this::parse);
}
项目:microservices-dashboard-server
文件:OAuth2TokenStrategy.java
@Override
public void apply(HttpClientRequest<ByteBuf> request, Authentication auth) {
logger.info("OAuth2TokenStrategy called for auth: " + auth + " and request: " + request);
if (auth != null) {
if (auth instanceof OAuth2Authentication) {
Object details = auth.getDetails();
if (details instanceof OAuth2AuthenticationDetails) {
logger.info("OAuth2 authentication details found");
OAuth2AuthenticationDetails oauth = (OAuth2AuthenticationDetails) details;
String accessToken = oauth.getTokenValue();
String tokenType = oauth.getTokenType() == null ? "Bearer" : oauth.getTokenType();
request.withHeader("Authorization", tokenType + " " + accessToken);
} else {
logger.info("No OAuth2 authentication details found");
}
}
} else {
logger.warn("OAuth2TokenStrategy enabled, but inbound request does not contain a Spring Security Authentication context");
}
}
项目:microservices-dashboard-server
文件:NettyServiceCaller.java
/**
* Calls the remote service using the provided request, applies error handling and
* converts the response into a {@link Map}. The entire request and response are
* executed and handled in a hot observable.
*
* @param serviceId the id of the service for which the request is made
* @param request the request which has to be executed using RxNetty
* @return an {@link Observable} emitting the JSON response as a Map with String keys
* and Object values.
*/
public Observable<Map<String, Object>> retrieveJsonFromRequest(String serviceId, HttpClientRequest<ByteBuf> request) {
RxClient.ServerInfo serverInfo = getServerInfoFromRequestOrClient(request, rxClient);
return rxClient.submit(serverInfo, request)
.publish().autoConnect()
.doOnError(el -> errorHandler.handleNodeError(serviceId, format("Error retrieving node(s) for url {0} with headers {1}: {2}",
request.getUri(), request.getHeaders().entries(), el), el))
.filter(r -> {
if (r.getStatus().code() < 400) {
return true;
} else {
errorHandler.handleNodeWarning(serviceId, "Exception " + r.getStatus() + " for url " + request.getUri() + " with headers " + r.getHeaders().entries());
return false;
}
})
.flatMap(AbstractHttpContentHolder::getContent)
.map(data -> data.toString(Charset.defaultCharset()))
.map(response -> {
JacksonJsonParser jsonParser = new JacksonJsonParser();
return jsonParser.parseMap(response);
})
.doOnNext(r -> logger.info("Json retrieved from call: {}", r))
.onErrorResumeNext(Observable.empty());
}
项目:microservices-dashboard-server
文件:IndexesAggregator.java
private Observable<Node> getIndexFromServiceInstance(ServiceInstance serviceInstance, final Object outboundSecurityObject) {
final String url = uriResolver.resolveHomePageUrl(serviceInstance);
final String serviceId = serviceInstance.getServiceId().toLowerCase();
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet(url);
applyOutboundSecurityStrategyOnRequest(request, outboundSecurityObject);
for (Map.Entry<String, String> header : properties.getRequestHeaders().entrySet()) {
request.withHeader(header.getKey(), header.getValue());
}
return caller.retrieveJsonFromRequest(serviceId, request)
.map(JSONObject::new)
.concatMap(source -> indexToNodeConverter.convert(serviceInstance.getServiceId().toLowerCase(), url, source))
.filter(node -> !properties.getFilteredServices().contains(node.getId()))
.doOnNext(el -> logger.info("Index node {} discovered in url: {}", el.getId(), url))
.doOnError(e -> logger.error("Error while fetching node: ", e))
.doOnCompleted(() -> logger.info("Completed emissions of an index node observable for url: " + url))
.onErrorResumeNext(Observable.empty());
}
项目:microservices-dashboard-server
文件:HealthIndicatorsAggregator.java
protected Observable<Node> getHealthNodesFromService(String serviceId, String url, final Object outboundSecurityObject) {
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet(url);
applyOutboundSecurityStrategyOnRequest(request, outboundSecurityObject);
for (Entry<String, String> header : properties.getRequestHeaders().entrySet()) {
request.withHeader(header.getKey(), header.getValue());
}
return caller.retrieveJsonFromRequest(serviceId, request)
.flatMap(el -> healthToNodeConverter.convertToNodes(serviceId, el))
.filter(node -> !properties.getFilteredServices().contains(node.getId()))
//TODO: .map(node -> springCloudEnricher.enrich(node))
.doOnNext(el -> logger.info("Health node {} discovered in url: {}", el.getId(), url))
.doOnError(e -> logger.error("Error during healthnode fetching: ", e))
.doOnCompleted(() -> logger.info("Completed emission of a health node observable from url: " + url))
.onErrorResumeNext(Observable.empty());
}
项目:microservices-dashboard-server
文件:PactsAggregatorTest.java
@SuppressWarnings("unchecked")
@Test
public void getPactUrlsNotFound() throws InterruptedException {
HttpClientResponse<ByteBuf> urlsNotFoundResponse = mock(HttpClientResponse.class);
when(urlsNotFoundResponse.getContent()).thenReturn(null);
when(urlsNotFoundResponse.getStatus()).thenReturn(HttpResponseStatus.NOT_FOUND);
HttpResponseHeaders httpResponseHeaders = mock(HttpResponseHeaders.class);
when(httpResponseHeaders.entries()).thenReturn(newArrayList());
when(urlsNotFoundResponse.getHeaders()).thenReturn(httpResponseHeaders);
when(rxClient.submit(any(RxClient.ServerInfo.class), any(HttpClientRequest.class)))
.thenReturn(Observable.just(urlsNotFoundResponse));
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
pactsAggregator.aggregateNodes().toBlocking().subscribe(testSubscriber);
testSubscriber.assertNoErrors();
List<Node> nodes = testSubscriber.getOnNextEvents();
assertThat(nodes).isEmpty();
verify(publisher).publishEvent(any(SystemEvent.class));
}
项目:microservices-dashboard-server
文件:PactsAggregatorTest.java
@SuppressWarnings("unchecked")
@Test
public void onErrorWhenGettingNodeOne() {
HttpClientResponse<ByteBuf> urlsResponse = mock(HttpClientResponse.class);
ByteBuf byteBuf = (new PooledByteBufAllocator()).directBuffer();
ByteBufUtil.writeUtf8(byteBuf, onePactSource);
when(urlsResponse.getContent()).thenReturn(Observable.just(byteBuf));
when(urlsResponse.getStatus()).thenReturn(HttpResponseStatus.OK);
when(rxClient.submit(any(RxClient.ServerInfo.class), any(HttpClientRequest.class)))
.thenReturn(Observable.just(urlsResponse), Observable.error(new RuntimeException()));
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
pactsAggregator.aggregateNodes().toBlocking().subscribe(testSubscriber);
testSubscriber.assertError(RuntimeException.class);
verify(publisher).publishEvent(any(SystemEvent.class));
}
项目:microservices-dashboard-server
文件:MappingsAggregatorTest.java
@SuppressWarnings({"rawtypes", "unchecked"})
@Test
public void shouldGetMappingNodesFromService() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Map retrievedMap = new HashMap();
Observable retrievedMapObservable = Observable.just(retrievedMap);
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
mockStatic(MappingsToNodeConverter.class);
PowerMockito.when(MappingsToNodeConverter.convertToNodes(anyString(), anyMap()))
.thenReturn(Observable.from(correctNodes()));
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getMappingNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
List<Node> nodes = testSubscriber.getOnNextEvents();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
assertThat(nodes).containsOnly(new Node("Node1"), new Node("Node2"));
}
项目:microservices-dashboard-server
文件:MappingsAggregatorTest.java
@SuppressWarnings({"rawtypes", "unchecked"})
@Test
public void shouldReturnEmptyObservableOnEmptySourceObservable() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Observable retrievedMapObservable = Observable.empty();
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getMappingNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
testSubscriber.assertNoValues();
testSubscriber.assertCompleted();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
}
项目:microservices-dashboard-server
文件:MappingsAggregatorTest.java
@SuppressWarnings({"rawtypes", "unchecked"})
@Test
public void shouldReturnEmptyObservableOnErroneousConversion() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Map retrievedMap = new HashMap();
Observable retrievedMapObservable = Observable.just(retrievedMap).publish().autoConnect();
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
mockStatic(MappingsToNodeConverter.class);
PowerMockito.when(MappingsToNodeConverter.convertToNodes(anyString(), anyMap()))
.thenThrow(new RuntimeException("Error1"));
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getMappingNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
testSubscriber.getOnNextEvents();
testSubscriber.assertNoValues();
testSubscriber.assertCompleted();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
}
项目:microservices-dashboard-server
文件:IndexesAggregatorTest.java
@Test
@SuppressWarnings("unchecked")
public void emptyObservableFromIndexCallShouldReturnZeroNodes() throws InterruptedException {
when(discoveryClient.getServices()).thenReturn(Collections.singletonList("service"));
ServiceInstance instance = mock(ServiceInstance.class);
when(discoveryClient.getInstances("service")).thenReturn(Collections.singletonList(instance));
when(instance.getServiceId()).thenReturn("service");
when(instance.getUri()).thenReturn(URI.create("http://localhost:8089/service"));
when(caller.retrieveJsonFromRequest(eq("service"), any(HttpClientRequest.class))).thenReturn(Observable.empty());
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
indexesAggregator.aggregateNodes().toBlocking().subscribe(testSubscriber);
List<Node> nodes = testSubscriber.getOnNextEvents();
assertThat(nodes).hasSize(0);
}
项目:microservices-dashboard-server
文件:HealthIndicatorsAggregatorTest.java
@Test
public void shouldGetHealthNodesFromService() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Map retrievedMap = new HashMap();
Observable retrievedMapObservable = Observable.just(retrievedMap);
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
when(converter.convertToNodes(anyString(), anyMap()))
.thenReturn(Observable.from(correctNodes()));
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getHealthNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
List<Node> nodes = testSubscriber.getOnNextEvents();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
assertThat(nodes).containsOnly(new Node("Node1"), new Node("Node2"));
}
项目:microservices-dashboard-server
文件:HealthIndicatorsAggregatorTest.java
@Test
public void shouldReturnEmptyObservableOnEmptySourceObservable() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Observable retrievedMapObservable = Observable.empty();
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getHealthNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
testSubscriber.assertNoValues();
testSubscriber.assertCompleted();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
}
项目:microservices-dashboard-server
文件:HealthIndicatorsAggregatorTest.java
@Test
public void shouldReturnEmptyObservableOnErroneousSourceObservable() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Map retrievedMap = new HashMap();
Observable retrievedMapObservable = Observable.just(retrievedMap).publish().autoConnect();
retrievedMapObservable.map(o -> o.toString());
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getHealthNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
testSubscriber.assertNoValues();
testSubscriber.assertCompleted();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
}
项目:microservices-dashboard-server
文件:HealthIndicatorsAggregatorTest.java
@Test
public void shouldReturnEmptyObservableOnExceptionsInSourceObservable() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Map retrievedMap = new HashMap();
Observable retrievedMapObservable = Observable.just(retrievedMap);
retrievedMapObservable.doOnNext(o -> {
throw new IllegalArgumentException();
});
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getHealthNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
testSubscriber.getOnNextEvents();
testSubscriber.assertNoValues();
testSubscriber.assertCompleted();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
}
项目:microservices-dashboard-server
文件:HealthIndicatorsAggregatorTest.java
@Test
public void shouldReturnEmptyObservableOnErroneousConversion() {
when(properties.getRequestHeaders()).thenReturn(requestHeaders());
Map retrievedMap = new HashMap();
Observable retrievedMapObservable = Observable.just(retrievedMap).publish().autoConnect();
when(caller.retrieveJsonFromRequest(anyString(), any(HttpClientRequest.class)))
.thenReturn(retrievedMapObservable);
when(converter.convertToNodes(anyString(), anyMap()))
.thenThrow(new RuntimeException("Error1"));
TestSubscriber<Node> testSubscriber = new TestSubscriber<>();
aggregator.getHealthNodesFromService("testService", "testUrl", null).toBlocking().subscribe(testSubscriber);
testSubscriber.getOnNextEvents();
testSubscriber.assertNoValues();
testSubscriber.assertCompleted();
verify(caller, times(1)).retrieveJsonFromRequest(eq("testService"), requestCaptor.capture());
assertThat(requestCaptor.getValue().getHeaders().entries()).usingElementComparator(stringEntryComparator())
.containsExactlyElementsOf(requestHeaders().entrySet());
}
项目:mesos-rxjava
文件:MesosClientTest.java
@Test
public void testUserAgentContains_MesosRxJavaCore_RxNetty() throws Exception {
final String clientName = "unit-tests";
final MesosClient<String, String> client = MesosClientBuilder.<String, String>newBuilder()
.sendCodec(StringMessageCodec.UTF8_STRING)
.receiveCodec(StringMessageCodec.UTF8_STRING)
.mesosUri(URI.create("http://localhost:12345"))
.applicationUserAgentEntry(literal(clientName, "latest"))
.subscribe("subscribe")
.processStream(events -> events.map(e -> Optional.<SinkOperation<String>>empty()))
.build();
final HttpClientRequest<ByteBuf> request = client.createPost
.call("ACK")
.toBlocking()
.first();
final Map<String, String> headers = headersToMap(request.getHeaders());
assertThat(headers).containsKeys("User-Agent");
final String ua = headers.get("User-Agent");
assertThat(ua).startsWith(String.format("%s/%s", clientName, "latest"));
assertThat(ua).contains("mesos-rxjava-client/");
}
项目:mesos-rxjava
文件:MesosClientTest.java
@Test
public void testRequestUriFromPassedUri() throws Exception {
final Func1<String, Observable<HttpClientRequest<ByteBuf>>> createPost = MesosClient.curryCreatePost(
URI.create("http://localhost:12345/glavin/api/v1/scheduler"),
StringMessageCodec.UTF8_STRING,
StringMessageCodec.UTF8_STRING,
new UserAgent(
literal("testing", "latest")
),
new AtomicReference<>(null)
);
final HttpClientRequest<ByteBuf> request = createPost.call("something")
.toBlocking()
.first();
assertThat(request.getUri()).isEqualTo("/glavin/api/v1/scheduler");
}
项目:mesos-rxjava
文件:MesosClientTest.java
@Test
public void testMesosStreamIdAddedToRequestWhenNonNull() throws Exception {
final Func1<String, Observable<HttpClientRequest<ByteBuf>>> createPost = MesosClient.curryCreatePost(
URI.create("http://localhost:12345/api/v1/scheduler"),
StringMessageCodec.UTF8_STRING,
StringMessageCodec.UTF8_STRING,
new UserAgent(
literal("testing", "latest")
),
new AtomicReference<>("streamId")
);
final HttpClientRequest<ByteBuf> request = createPost.call("something")
.toBlocking()
.first();
final Map<String, String> headers = headersToMap(request.getHeaders());
assertThat(headers).containsKeys("Mesos-Stream-Id");
assertThat(headers.get("Mesos-Stream-Id")).isEqualTo("streamId");
}
项目:mesos-rxjava
文件:MesosClientTest.java
@Test
public void testMesosStreamIdNotPresentWhenNull() throws Exception {
final Func1<String, Observable<HttpClientRequest<ByteBuf>>> createPost = MesosClient.curryCreatePost(
URI.create("http://localhost:12345/api/v1/scheduler"),
StringMessageCodec.UTF8_STRING,
StringMessageCodec.UTF8_STRING,
new UserAgent(
literal("testing", "latest")
),
new AtomicReference<>(null)
);
final HttpClientRequest<ByteBuf> request = createPost.call("something")
.toBlocking()
.first();
final Map<String, String> headers = headersToMap(request.getHeaders());
assertThat(headers).doesNotContainKeys("Mesos-Stream-Id");
}
项目:ARCHIVE-wildfly-swarm
文件:SecuredTransportFactory.java
@Override
public HttpClient<ByteBuf, ByteBuf> newHttpClient(final IClientConfig config) {
final List<ExecutionListener<HttpClientRequest<ByteBuf>, HttpClientResponse<ByteBuf>>> listeners = new ArrayList<>();
listeners.add(createBearerHeaderAdder());
final PipelineConfiguratorComposite<HttpClientResponse<ByteBuf>, HttpClientRequest<ByteBuf>> pipelineConfigurator = new PipelineConfiguratorComposite<HttpClientResponse<ByteBuf>,
HttpClientRequest<ByteBuf>>(new HttpClientPipelineConfigurator<ByteBuf, ByteBuf>(),
new HttpObjectAggregationConfigurator(maxChunkSize));
final LoadBalancingHttpClient<ByteBuf, ByteBuf> client = LoadBalancingHttpClient.<ByteBuf, ByteBuf>builder()
.withClientConfig(config)
.withExecutorListeners(listeners)
.withRetryHandler(getDefaultHttpRetryHandlerWithConfig(config))
.withPipelineConfigurator(pipelineConfigurator)
.withPoolCleanerScheduler(RibbonTransport.poolCleanerScheduler)
.build();
return client;
}
项目:elasticsearch-http
文件:IndicesExistsActionHandler.java
public void execute(IndicesExistsRequest request, final ActionListener<IndicesExistsResponse> listener) {
logger.debug("indices exists request {}", request);
try {
RequestUriBuilder uriBuilder = new RequestUriBuilder(Strings.arrayToCommaDelimitedString(request.indices()));
uriBuilder.addQueryParameter("local", request.local());
uriBuilder.addIndicesOptions(request);
indicesAdminClient.getHttpClient().submit(HttpClientRequest.<ByteBuf>create(HttpMethod.HEAD, uriBuilder.toString()))
.flatMap(HANDLES_404)
.flatMap(new Func1<HttpClientResponse<ByteBuf>, Observable<IndicesExistsResponse>>() {
@Override
public Observable<IndicesExistsResponse> call(final HttpClientResponse<ByteBuf> response) {
return IndicesExistsResponse.parse(response.getStatus().code());
}
})
.single()
.subscribe(new ListenerCompleterObserver<>(listener));
} catch (Exception e) {
listener.onFailure(e);
}
}
项目:elasticsearch-http
文件:ClearScrollActionHandler.java
public void execute(ClearScrollRequest request, final ActionListener<ClearScrollResponse> listener) {
logger.debug("clear scroll request {}", request);
try {
RequestUriBuilder uriBuilder = new RequestUriBuilder()
.addEndpoint("_search/scroll");
uriBuilder.addQueryParameter("scroll_id", Strings.collectionToCommaDelimitedString(request.getScrollIds()));
httpClient.getHttpClient().submit(HttpClientRequest.createDelete(uriBuilder.toString()))
.flatMap(HANDLES_404)
.flatMap(new Func1<HttpClientResponse<ByteBuf>, Observable<ClearScrollResponse>>() {
@Override
public Observable<ClearScrollResponse> call(final HttpClientResponse<ByteBuf> response) {
return response.getContent().flatMap(new Func1<ByteBuf, Observable<ClearScrollResponse>>() {
@Override
public Observable<ClearScrollResponse> call(ByteBuf byteBuf) {
return ClearScrollResponse.parse(response.getStatus().code());
}
});
}
})
.single()
.subscribe(new ListenerCompleterObserver<>(listener));
} catch (Exception e) {
listener.onFailure(e);
}
}
项目:atlas-oss-plugin
文件:RxHttp.java
private static HttpClientRequest<ByteBuf> compress(
HttpClientRequest<ByteBuf> req, byte[] entity) {
if (entity.length >= MIN_COMPRESS_SIZE) {
req.withHeader(HttpHeaders.Names.CONTENT_ENCODING, HttpHeaders.Values.GZIP);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (GZIPOutputStream gzip = new GZIPOutputStream(baos)) {
gzip.write(entity);
} catch (IOException e) {
// This isn't expected to occur
throw new RuntimeException("failed to gzip request payload", e);
}
req.withContent(baos.toByteArray());
} else {
req.withContent(entity);
}
return req;
}
项目:Prana
文件:HealthCheckHandler.java
private Observable<HttpClientResponse<ByteBuf>> getResponse(String externalHealthCheckURL) {
String host = "localhost";
int port = DEFAULT_APPLICATION_PORT;
String path = "/healthcheck";
try {
URL url = new URL(externalHealthCheckURL);
host = url.getHost();
port = url.getPort();
path = url.getPath();
} catch (MalformedURLException e) {
//continue
}
Integer timeout = DynamicProperty.getInstance("prana.host.healthcheck.timeout").getInteger(DEFAULT_CONNECTION_TIMEOUT);
HttpClient<ByteBuf, ByteBuf> httpClient = RxNetty.<ByteBuf, ByteBuf>newHttpClientBuilder(host, port)
.pipelineConfigurator(PipelineConfigurators.<ByteBuf, ByteBuf>httpClientConfigurator())
.channelOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, timeout)
.build();
return httpClient.submit(HttpClientRequest.createGet(path));
}
项目:Prana
文件:TestUtils.java
public static String getResponse(HttpClientRequest<ByteBuf> request, HttpClient<ByteBuf, ByteBuf> client) {
return client.submit(request).flatMap(new Func1<HttpClientResponse<ByteBuf>, Observable<String>>() {
@Override
public Observable<String> call(HttpClientResponse<ByteBuf> response) {
return response.getContent().map(new Func1<ByteBuf, String>() {
@Override
public String call(ByteBuf byteBuf) {
return byteBuf.toString(Charset.defaultCharset());
}
});
}
}).onErrorFlatMap(new Func1<OnErrorThrowable, Observable<String>>() {
@Override
public Observable<String> call(OnErrorThrowable onErrorThrowable) {
throw onErrorThrowable;
}
}).toBlocking().first();
}
项目:ribbon
文件:HttpResourceObservableCommand.java
public HttpResourceObservableCommand(HttpClient<ByteBuf, ByteBuf> httpClient,
HttpClientRequest<ByteBuf> httpRequest, String hystrixCacheKey,
Map<String, Object> requestProperties,
FallbackHandler<T> fallbackHandler,
ResponseValidator<HttpClientResponse<ByteBuf>> validator,
Class<? extends T> classType,
HystrixObservableCommand.Setter setter) {
super(setter);
this.httpClient = httpClient;
this.fallbackHandler = fallbackHandler;
this.validator = validator;
this.httpRequest = httpRequest;
this.hystrixCacheKey = hystrixCacheKey;
this.classType = classType;
this.requestProperties = requestProperties;
}
项目:ribbon
文件:LoadBalancingHttpClient.java
protected LoadBalancingHttpClient(Builder<I, O> builder) {
super(builder.lb, builder.config, new RequestSpecificRetryHandler(true, true, builder.retryHandler, null), builder.pipelineConfigurator, builder.poolCleanerScheduler);
requestIdHeaderName = getProperty(IClientConfigKey.Keys.RequestIdHeaderName, null, null);
requestIdProvider = (requestIdHeaderName != null)
? new HttpRequestIdProvider(requestIdHeaderName, RxContexts.DEFAULT_CORRELATOR)
: null;
this.listeners = new CopyOnWriteArrayList<ExecutionListener<HttpClientRequest<I>, HttpClientResponse<O>>>(builder.listeners);
defaultCommandBuilder = LoadBalancerCommand.<HttpClientResponse<O>>builder()
.withLoadBalancerContext(lbContext)
.withListeners(this.listeners)
.withClientConfig(builder.config)
.withRetryHandler(builder.retryHandler)
.build();
this.responseToErrorPolicy = builder.responseToErrorPolicy;
this.backoffStrategy = builder.backoffStrategy;
}
项目:ribbon
文件:NettyClientTest.java
@Test
public void testObservable() throws Exception {
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet(SERVICE_URI + "testAsync/person");
LoadBalancingHttpClient<ByteBuf, ByteBuf> observableClient = RibbonTransport.newHttpClient();
Observable<HttpClientResponse<ByteBuf>> response = observableClient.submit(request);
Person person = getPersonObservable(response).toBlocking().single();
assertEquals(EmbeddedResources.defaultPerson, person);
final HttpClientListener listener = observableClient.getListener();
assertEquals(1, listener.getPoolAcquires());
assertEquals(1, listener.getConnectionCount());
waitUntilTrueOrTimeout(1000, new Func0<Boolean>() {
@Override
public Boolean call() {
return listener.getPoolReleases() == 1;
}
});
}
项目:ribbon
文件:NettyClientTest.java
@Test
public void testSubmitToAbsoluteURI() throws Exception {
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet(SERVICE_URI + "testAsync/person");
LoadBalancingHttpClient<ByteBuf, ByteBuf> observableClient = RibbonTransport.newHttpClient();
// final List<Person> result = Lists.newArrayList();
Observable<HttpClientResponse<ByteBuf>> response = observableClient.submit(request);
Person person = getPersonObservable(response).toBlocking().single();
assertEquals(EmbeddedResources.defaultPerson, person);
// need to sleep to wait until connection is released
final HttpClientListener listener = observableClient.getListener();
assertEquals(1, listener.getConnectionCount());
assertEquals(1, listener.getPoolAcquires());
waitUntilTrueOrTimeout(1000, new Func0<Boolean>() {
@Override
public Boolean call() {
return listener.getPoolReleases() == 1;
}
});
}
项目:ribbon
文件:NettyClientTest.java
@Test
public void testPoolReuse() throws Exception {
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet(SERVICE_URI + "testAsync/person");
LoadBalancingHttpClient<ByteBuf, ByteBuf> observableClient = RibbonTransport.newHttpClient(
IClientConfig.Builder.newBuilder().withDefaultValues()
.withMaxAutoRetries(1)
.withMaxAutoRetriesNextServer(1).build());
Observable<HttpClientResponse<ByteBuf>> response = observableClient.submit(request);
Person person = getPersonObservable(response).toBlocking().single();
assertEquals(EmbeddedResources.defaultPerson, person);
response = observableClient.submit(request);
person = getPersonObservable(response).toBlocking().single();
assertEquals(EmbeddedResources.defaultPerson, person);
final HttpClientListener listener = observableClient.getListener();
assertEquals(2, listener.getPoolAcquires());
waitUntilTrueOrTimeout(1000, new Func0<Boolean>() {
@Override
public Boolean call() {
return listener.getPoolReleases() == 2;
}
});
assertEquals(1, listener.getConnectionCount());
assertEquals(1, listener.getPoolReuse());
}
项目:ribbon
文件:NettyClientTest.java
@Test
public void testPostWithByteBuf() throws Exception {
Person myPerson = new Person("netty", 5);
ObjectMapper mapper = new ObjectMapper();
byte[] raw = mapper.writeValueAsBytes(myPerson);
ByteBuf buffer = Unpooled.copiedBuffer(raw);
HttpClientRequest<ByteBuf> request = HttpClientRequest.createPost(SERVICE_URI + "testAsync/person")
.withHeader("Content-type", "application/json")
.withHeader("Content-length", String.valueOf(raw.length))
.withContent(buffer);
LoadBalancingHttpClient<ByteBuf, ByteBuf> observableClient = RibbonTransport.newHttpClient(
DefaultClientConfigImpl.getClientConfigWithDefaultValues().set(CommonClientConfigKey.ReadTimeout, 10000));
Observable<HttpClientResponse<ByteBuf>> response = observableClient.submit(request);
Person person = getPersonObservable(response).toBlocking().single();
assertEquals(myPerson, person);
}
项目:ribbon
文件:NettyClientTest.java
@Test
public void testStreamWithLoadBalancer() throws Exception {
// NettyHttpLoadBalancerErrorHandler errorHandler = new NettyHttpLoadBalancerErrorHandler(1, 3, true);
// IClientConfig config = DefaultClientConfigImpl.getClientConfigWithDefaultValues().withProperty(CommonClientConfigKey.ConnectTimeout, "1000");
IClientConfig config = IClientConfig.Builder.newBuilder().withRetryOnAllOperations(true)
.withMaxAutoRetries(1)
.withMaxAutoRetriesNextServer(3)
.build();
BaseLoadBalancer lb = new BaseLoadBalancer(new DummyPing(), new AvailabilityFilteringRule());
LoadBalancingHttpClient<ByteBuf, ServerSentEvent> lbObservables = (LoadBalancingHttpClient<ByteBuf, ServerSentEvent>) RibbonTransport.newSSEClient(lb, config);
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet("/testAsync/personStream");
List<Person> result = Lists.newArrayList();
Server goodServer = new Server("localhost:" + port);
Server badServer = new Server("localhost:12245");
List<Server> servers = Lists.newArrayList(badServer, badServer, badServer, goodServer);
lb.setServersList(servers);
result = getPersonListFromResponse(lbObservables.submit(request, null, null));
assertEquals(EmbeddedResources.entityStream, result);
}
项目:ribbon
文件:SimpleGet.java
@edu.umd.cs.findbugs.annotations.SuppressWarnings
public static void main(String[] args) throws Exception {
LoadBalancingHttpClient<ByteBuf, ByteBuf> client = RibbonTransport.newHttpClient();
HttpClientRequest<ByteBuf> request = HttpClientRequest.createGet("http://www.google.com/");
final CountDownLatch latch = new CountDownLatch(1);
client.submit(request)
.toBlocking()
.forEach(new Action1<HttpClientResponse<ByteBuf>>() {
@Override
public void call(HttpClientResponse<ByteBuf> t1) {
System.out.println("Status code: " + t1.getStatus());
t1.getContent().subscribe(new Action1<ByteBuf>() {
@Override
public void call(ByteBuf content) {
System.out.println("Response content: " + content.toString(Charset.defaultCharset()));
latch.countDown();
}
});
}
});
latch.await(2, TimeUnit.SECONDS);
}
项目:ribbon
文件:RxMovieTransportExample.java
private Observable<Void> registerMovie(Movie movie) {
HttpClientRequest<ByteBuf> httpRequest = HttpClientRequest.createPost("/movies")
.withHeader("X-Platform-Version", "xyz")
.withHeader("X-Auth-Token", "abc")
.withRawContentSource(Observable.just(movie), new RxMovieTransformer());
return client.submit(httpRequest).flatMap(new Func1<HttpClientResponse<ByteBuf>, Observable<Void>>() {
@Override
public Observable<Void> call(HttpClientResponse<ByteBuf> httpClientResponse) {
if (httpClientResponse.getStatus().code() / 100 != 2) {
return Observable.error(new RuntimeException(
format("HTTP request failed (status code=%s)", httpClientResponse.getStatus())));
}
return Observable.empty();
}
});
}
项目:ribbon
文件:RxMovieTransportExample.java
private Observable<Void> updateRecommendation(String user, Movie movie) {
HttpClientRequest<ByteBuf> httpRequest = HttpClientRequest.createPost(format("/users/%s/recommendations", user))
.withHeader("X-Platform-Version", "xyz")
.withHeader("X-Auth-Token", "abc")
.withRawContentSource(Observable.just(movie.getId()), new StringTransformer());
return client.submit(httpRequest).flatMap(new Func1<HttpClientResponse<ByteBuf>, Observable<Void>>() {
@Override
public Observable<Void> call(HttpClientResponse<ByteBuf> httpClientResponse) {
if (httpClientResponse.getStatus().code() / 100 != 2) {
return Observable.error(new RuntimeException(
format("HTTP request failed (status code=%s)", httpClientResponse.getStatus())));
}
return Observable.empty();
}
});
}