<build>
<plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>stress-client dependency copy</id>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcpkix-jdk15on</artifactId>
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <overWrite>true</overWrite>
+ <destFileName>bcpkix-jdk15on.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk15on</artifactId>
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <overWrite>true</overWrite>
+ <destFileName>bcprov-jdk15on.jar</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
</excludes>
</filter>
</filters>
+ <artifactSet>
+ <excludes>
+ <exclude>org.bouncycastle:*</exclude>
+ </excludes>
+ </artifactSet>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>org.opendaylight.controller.netconf.test.tool.client.stress.StressClient</mainClass>
+ <manifestEntries>
+ <Main-Class>org.opendaylight.controller.netconf.test.tool.client.stress.StressClient</Main-Class>
+ <Class-Path>. lib lib/bcprov-jdk15on.jar lib/bcpkix-jdk15on.jar</Class-Path>
+ </manifestEntries>
</transformer>
</transformers>
<shadedArtifactAttached>true</shadedArtifactAttached>
@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;
.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)
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;
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;
private static long macStart = 0xAABBCCDD0000L;
public static void main(final String[] args) {
+
final Parameters params = parseArgs(args, Parameters.getParser());
params.validate();
} 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) {
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;
});
}
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();