From: Tomas Cere Date: Tue, 5 May 2015 09:21:18 +0000 (+0200) Subject: Add AuthHandler to stresstool X-Git-Tag: release/beryllium~589 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=1d1cbbb083071505ee4fa2204d5d42e74d82c9f9;hp=da93ea3a0b9211c51ec3cbb595e05e8b15d459d4 Add AuthHandler to stresstool Stop bundling BouncyCastle into strestool uber-jar, JCE certificate gets wiped this way and Oracle JDK refuses to use it. Instead export them into target/lib dir and setup stresstool jar classpath to point to this directory. Change-Id: I3c7ab9ea0f5faba2f02f4e0cfa21adda6bce2e4e Signed-off-by: Tomas Cere --- diff --git a/opendaylight/netconf/netconf-testtool/pom.xml b/opendaylight/netconf/netconf-testtool/pom.xml index 0d98fcac77..30b1cbf50a 100644 --- a/opendaylight/netconf/netconf-testtool/pom.xml +++ b/opendaylight/netconf/netconf-testtool/pom.xml @@ -136,6 +136,36 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + stress-client dependency copy + + copy + + + + + org.bouncycastle + bcpkix-jdk15on + ${project.build.directory}/lib + true + bcpkix-jdk15on.jar + + + org.bouncycastle + bcprov-jdk15on + ${project.build.directory}/lib + true + bcprov-jdk15on.jar + + + + + + org.apache.maven.plugins maven-shade-plugin @@ -187,10 +217,18 @@ + + + org.bouncycastle:* + + - org.opendaylight.controller.netconf.test.tool.client.stress.StressClient + + org.opendaylight.controller.netconf.test.tool.client.stress.StressClient + . lib lib/bcprov-jdk15on.jar lib/bcpkix-jdk15on.jar + true diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/Parameters.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/Parameters.java index 8a9a915a08..84766ad75f 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/Parameters.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/Parameters.java @@ -49,6 +49,12 @@ public class Parameters { @Arg(dest = "ssh") public boolean ssh; + @Arg(dest = "username") + public String username; + + @Arg(dest = "password") + public String password; + @Arg(dest = "msg-timeout") public long msgTimeout; @@ -128,6 +134,16 @@ public class Parameters { .setDefault(false) .dest("ssh"); + parser.addArgument("--username") + .type(String.class) + .setDefault("admin") + .dest("username"); + + parser.addArgument("--password") + .type(String.class) + .setDefault("admin") + .dest("password"); + parser.addArgument("--tcp-header") .type(String.class) .required(false) diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClient.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClient.java index 2916ec52f7..e03de59f2c 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClient.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClient.java @@ -16,6 +16,8 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.util.HashedWheelTimer; import io.netty.util.Timer; import java.io.IOException; +import java.security.Provider; +import java.security.Security; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -26,8 +28,10 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; +import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl; +import org.opendaylight.controller.netconf.nettyutil.handler.ssh.client.AsyncSshHandler; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.opendaylight.controller.sal.connect.api.RemoteDevice; import org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator; @@ -85,6 +89,7 @@ public final class StressClient { private static long macStart = 0xAABBCCDD0000L; public static void main(final String[] args) { + final Parameters params = parseArgs(args, Parameters.getParser()); params.validate(); @@ -169,6 +174,10 @@ public final class StressClient { } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.warn("Unable to close executor properly", e); } + //stop the underlying ssh thread that gets spawned if we use ssh + if (params.ssh) { + AsyncSshHandler.DEFAULT_CLIENT.stop(); + } } static NetconfMessage prepareMessage(final int id, final String editContentString) { diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClientCallable.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClientCallable.java index a4c5c5702d..a37fcd722a 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClientCallable.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/StressClientCallable.java @@ -18,6 +18,7 @@ import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl; import org.opendaylight.controller.netconf.client.NetconfClientSession; import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguration; import org.opendaylight.controller.netconf.client.conf.NetconfClientConfigurationBuilder; +import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.LoginPassword; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.controller.sal.connect.api.RemoteDevice; import org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator; @@ -92,6 +93,7 @@ public class StressClientCallable implements Callable{ }); } netconfClientConfigurationBuilder.withProtocol(params.ssh ? NetconfClientConfiguration.NetconfClientProtocol.SSH : NetconfClientConfiguration.NetconfClientProtocol.TCP); + netconfClientConfigurationBuilder.withAuthHandler(new LoginPassword(params.username, params.password)); netconfClientConfigurationBuilder.withConnectionTimeoutMillis(20000L); netconfClientConfigurationBuilder.withReconnectStrategy(new NeverReconnectStrategy(GlobalEventExecutor.INSTANCE, 5000)); return netconfClientConfigurationBuilder.build();