package com.github.kristofa.brave.resteasy;
import com.github.kristofa.brave.http.ITHttpClient;
import com.github.kristofa.brave.http.SpanNameProvider;
import java.io.IOException;
import javax.ws.rs.core.UriBuilder;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClients;
import org.jboss.resteasy.client.ClientRequestFactory;
import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
import org.junit.AssumptionViolatedException;
import org.junit.Test;
public class ITBraveClientExecutionInterceptor extends ITHttpClient<ClientRequestFactory> {
@Override protected ClientRequestFactory newClient(int port) {
return configureClient(port, BraveClientExecutionInterceptor.create(brave));
}
ClientRequestFactory configureClient(int port, BraveClientExecutionInterceptor interceptor) {
HttpClient httpClient = HttpClients.custom().disableAutomaticRetries().build();
ApacheHttpClient4Executor clientExecutor = new ApacheHttpClient4Executor(httpClient);
ClientRequestFactory crf = new ClientRequestFactory(clientExecutor,
UriBuilder.fromUri("http://localhost:" + port).build());
crf.getPrefixInterceptors().getExecutionInterceptorList().add(interceptor);
return crf;
}
@Override protected ClientRequestFactory newClient(int port, SpanNameProvider spanNameProvider) {
return configureClient(port, BraveClientExecutionInterceptor.builder(brave)
.spanNameProvider(spanNameProvider).build());
}
@Override protected void closeClient(ClientRequestFactory client) throws IOException {
// noop
}
@Override protected void get(ClientRequestFactory client, String pathIncludingQuery)
throws Exception {
client.createRelativeRequest(pathIncludingQuery).get().releaseConnection();
}
@Override protected void getAsync(ClientRequestFactory client, String pathIncludingQuery) {
throw new AssumptionViolatedException("TODO: how does resteasy 1.x do async?");
}
@Override
@Test(expected = AssertionError.class) // doesn't yet add error tag on exception
public void addsErrorTagOnTransportException() throws Exception {
super.addsErrorTagOnTransportException();
}
}