package brave.okhttp3;
import brave.http.HttpClientBenchmarks;
import brave.http.HttpTracing;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
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;
public class OkHttpClientBenchmarks extends HttpClientBenchmarks<Call.Factory> {
@Override protected Call.Factory newClient(HttpTracing httpTracing) {
return TracingCallFactory.create(httpTracing, new OkHttpClient());
}
@Override protected Call.Factory newClient() {
return new OkHttpClient();
}
@Override protected void get(Call.Factory client) throws Exception {
client.newCall(new Request.Builder().url(baseUrl()).build()).execute().body().close();
}
@Override protected void close(Call.Factory client) throws IOException {
OkHttpClient ok;
if (client instanceof OkHttpClient) {
ok = (OkHttpClient) client;
} else {
ok = ((TracingCallFactory) client).ok;
}
ok.dispatcher().executorService().shutdown();
}
// Convenience main entry-point
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(".*" + OkHttpClientBenchmarks.class.getSimpleName() + ".*")
.build();
new Runner(opt).run();
}
}