Merge pull request #144 from nosqlbench/http-script-plugin

http plugin for scripts
This commit is contained in:
Sebastián Estévez 2020-05-19 17:38:52 -04:00 committed by GitHub
commit 03a1ac88d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,59 @@
package io.nosqlbench.engine.extensions.http;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpPlugin {
private HttpClient client = HttpClient.newHttpClient();
public HttpResponse<String> get(String url) throws IOException, InterruptedException {
HttpRequest.Builder builder = HttpRequest.newBuilder();
URI uri = URI.create(url);
HttpRequest request = builder
.uri(uri)
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
return response;
}
public HttpResponse<String> post(String url) throws IOException, InterruptedException {
return post(url, null, null);
}
public HttpResponse<String> post(String url, String data, String contentType) throws IOException, InterruptedException {
HttpRequest.Builder builder = HttpRequest.newBuilder();
URI uri = URI.create(url);
HttpRequest request;
if (data == null && contentType == null || contentType == null){
request = builder
.uri(uri)
.POST(HttpRequest.BodyPublishers.noBody())
.build();
} else if (data == null) {
request = builder
.uri(uri)
.header("Content-Type", contentType)
.POST(HttpRequest.BodyPublishers.noBody())
.build();
} else {
request = builder
.uri(uri)
.header("Content-Type", contentType)
.POST(HttpRequest.BodyPublishers.ofString(data))
.build();
}
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
return response;
}
}

View File

@ -0,0 +1,27 @@
package io.nosqlbench.engine.extensions.http;
import com.codahale.metrics.MetricRegistry;
import io.nosqlbench.engine.api.extensions.ScriptingPluginInfo;
import io.nosqlbench.engine.extensions.optimizers.BobyqaOptimizerPlugin;
import io.nosqlbench.nb.annotations.Service;
import org.slf4j.Logger;
import javax.script.ScriptContext;
@Service(ScriptingPluginInfo.class)
public class HttpPluginData implements ScriptingPluginInfo<HttpPlugin> {
@Override
public String getDescription() {
return "use http get and post in scripts";
}
@Override
public HttpPlugin getExtensionObject(Logger logger, MetricRegistry metricRegistry, ScriptContext scriptContext) {
return new HttpPlugin();
}
@Override
public String getBaseVariableName() {
return "http";
}
}