package brave.spring.web; import brave.http.HttpClientBenchmarks; import brave.http.HttpTracing; import java.io.IOException; import java.util.Collections; import okhttp3.OkHttpClient; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; import org.springframework.http.client.OkHttp3ClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; public class RestTemplateBenchmarks extends HttpClientBenchmarks<RestTemplate> { OkHttpClient ok = new OkHttpClient(); @Override protected RestTemplate newClient(HttpTracing httpTracing) { OkHttp3ClientHttpRequestFactory factory = new OkHttp3ClientHttpRequestFactory(ok); RestTemplate result = new RestTemplate(factory); result.setInterceptors(Collections.singletonList( TracingClientHttpRequestInterceptor.create(httpTracing ))); return result; } @Override protected RestTemplate newClient() { return new RestTemplate(new OkHttp3ClientHttpRequestFactory(ok)); } @Override protected void get(RestTemplate client) throws Exception { client.getForObject(baseUrl(), String.class); } @Override protected void close(RestTemplate client) throws IOException { ok.dispatcher().executorService().shutdown(); } // Convenience main entry-point public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() .include(".*" + RestTemplateBenchmarks.class.getSimpleName() + ".*") .build(); new Runner(opt).run(); } }