From c69f5d377666c80bdf5c03b0c1b96ccab89bd6e5 Mon Sep 17 00:00:00 2001 From: Jakub Morvay Date: Wed, 9 Dec 2015 16:47:37 +0100 Subject: [PATCH] Bug 4725 - RestPerfClient: Add support for authentication. Add HTTP basic authentication support to RestPerfClient. Change-Id: Idc9537b1e4018abe672bec38a3291a40251d53e8 Signed-off-by: Jakub Morvay --- .../test/tool/client/http/perf/Parameters.java | 9 +++++++++ .../client/http/perf/PerfClientCallable.java | 17 ++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java b/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java index 32bb6a36b9..8ef49f3511 100644 --- a/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java +++ b/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java @@ -13,6 +13,7 @@ import java.io.File; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; +import java.util.ArrayList; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.annotation.Arg; import net.sourceforge.argparse4j.inf.ArgumentParser; @@ -49,6 +50,9 @@ public class Parameters { @Arg(dest = "throttle") public int throttle; + @Arg(dest = "auth") + public ArrayList auth; + static ArgumentParser getParser() { final ArgumentParser parser = ArgumentParsers.newArgumentParser("netconf stress client"); @@ -113,6 +117,11 @@ public class Parameters { "with mutltiple threads this gets divided among all threads") .dest("throttle"); + parser.addArgument("--auth") + .nargs(2) + .help("Username and password for HTTP basic authentication in order username password.") + .dest("auth"); + return parser; } diff --git a/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java b/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java index e073fbcb26..fed504abb0 100644 --- a/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java +++ b/opendaylight/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java @@ -10,6 +10,7 @@ package org.opendaylight.netconf.test.tool.client.http.perf; import com.ning.http.client.AsyncHttpClient; import com.ning.http.client.AsyncHttpClientConfig; +import com.ning.http.client.Realm; import com.ning.http.client.Request; import java.util.ArrayList; import java.util.concurrent.Callable; @@ -36,12 +37,22 @@ public class PerfClientCallable implements Callable{ .build()); this.payloads = new ArrayList<>(); for (DestToPayload payload : payloads) { - this.payloads.add(asyncHttpClient.preparePost(payload.getDestination()) + AsyncHttpClient.BoundRequestBuilder requestBuilder = asyncHttpClient.preparePost(payload.getDestination()) .addHeader("content-type", "application/json") .addHeader("Accept", "application/xml") .setBody(payload.getPayload()) - .setRequestTimeout(Integer.MAX_VALUE) - .build()); + .setRequestTimeout(Integer.MAX_VALUE); + + if(params.auth != null) { + requestBuilder.setRealm(new Realm.RealmBuilder() + .setScheme(Realm.AuthScheme.BASIC) + .setPrincipal(params.auth.get(0)) + .setPassword(params.auth.get(1)) + .setUsePreemptiveAuth(true) + .build()); + } + + this.payloads.add(requestBuilder.build()); } executionStrategy = getExecutionStrategy(); } -- 2.36.6