From 39d6c50a03b3ea011f20ec9c33aef9d8c544df5f Mon Sep 17 00:00:00 2001 From: phact Date: Mon, 18 May 2020 15:52:46 -0400 Subject: [PATCH 1/3] http plugin for scripts --- .../engine/extensions/http/HttpPlugin.java | 57 +++++++++++++++++++ .../extensions/http/HttpPluginData.java | 27 +++++++++ 2 files changed, 84 insertions(+) create mode 100644 engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java create mode 100644 engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java new file mode 100644 index 000000000..7905988f0 --- /dev/null +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java @@ -0,0 +1,57 @@ +package io.nosqlbench.engine.extensions.http; + +import jdk.jfr.ContentType; + +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 String get(String url) throws IOException, InterruptedException { + HttpRequest.Builder builder = HttpRequest.newBuilder(); + URI uri = URI.create(url); + HttpRequest request = builder + .uri(uri) + .build(); + + HttpResponse response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + + return response.body(); + } + + public 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 response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + + return response.body(); + } + +} diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java new file mode 100644 index 000000000..bfaf28171 --- /dev/null +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java @@ -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 { + @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"; + } +} From 3b6b88f9a57beee860759fc681e07f2820021eea Mon Sep 17 00:00:00 2001 From: phact Date: Mon, 18 May 2020 15:59:29 -0400 Subject: [PATCH 2/3] overload post for null payload & no content type --- .../java/io/nosqlbench/engine/extensions/http/HttpPlugin.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java index 7905988f0..e4d89b972 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java @@ -24,6 +24,10 @@ public class HttpPlugin { return response.body(); } + public String post(String url) throws IOException, InterruptedException { + return post(url, null, null); + } + public String post(String url, String data, String contentType) throws IOException, InterruptedException { HttpRequest.Builder builder = HttpRequest.newBuilder(); URI uri = URI.create(url); From de6c6b368f4a9ada7f362957d7244a1d989a71d8 Mon Sep 17 00:00:00 2001 From: phact Date: Tue, 19 May 2020 17:37:56 -0400 Subject: [PATCH 3/3] return types --- .../engine/extensions/http/HttpPlugin.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java index e4d89b972..5b8b13c18 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java @@ -1,7 +1,5 @@ package io.nosqlbench.engine.extensions.http; -import jdk.jfr.ContentType; - import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; @@ -11,7 +9,7 @@ import java.net.http.HttpResponse; public class HttpPlugin { private HttpClient client = HttpClient.newHttpClient(); - public String get(String url) throws IOException, InterruptedException { + public HttpResponse get(String url) throws IOException, InterruptedException { HttpRequest.Builder builder = HttpRequest.newBuilder(); URI uri = URI.create(url); HttpRequest request = builder @@ -21,14 +19,14 @@ public class HttpPlugin { HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - return response.body(); + return response; } - public String post(String url) throws IOException, InterruptedException { + public HttpResponse post(String url) throws IOException, InterruptedException { return post(url, null, null); } - public String post(String url, String data, String contentType) throws IOException, InterruptedException { + public HttpResponse post(String url, String data, String contentType) throws IOException, InterruptedException { HttpRequest.Builder builder = HttpRequest.newBuilder(); URI uri = URI.create(url); @@ -55,7 +53,7 @@ public class HttpPlugin { HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - return response.body(); + return response; } }