X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-testtool%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Ftest%2Ftool%2Fclient%2Fstress%2FParameters.java;fp=opendaylight%2Fnetconf%2Fnetconf-testtool%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Ftest%2Ftool%2Fclient%2Fstress%2FParameters.java;h=6648bd4b5293510f5a40008a82d8d51c332828b4;hb=4e33bae3a75e833a95207ae9d8a99006aaccf360;hp=0000000000000000000000000000000000000000;hpb=9f1f923d51b8fe8df4ec570055c3d39eb79e8af6;p=controller.git 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 new file mode 100644 index 0000000000..6648bd4b52 --- /dev/null +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/client/stress/Parameters.java @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.netconf.test.tool.client.stress; + +import com.google.common.base.Preconditions; +import java.io.File; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; +import net.sourceforge.argparse4j.ArgumentParsers; +import net.sourceforge.argparse4j.annotation.Arg; +import net.sourceforge.argparse4j.inf.ArgumentParser; + +public class Parameters { + + @Arg(dest = "ip") + public String ip; + + @Arg(dest = "port") + public int port; + + @Arg(dest = "edit-count") + public int editCount; + + @Arg(dest = "edit-content") + public File editContent; + + @Arg(dest = "edit-batch-size") + public int editBatchSize; + + @Arg(dest = "debug") + public boolean debug; + + @Arg(dest = "legacy-framing") + public boolean legacyFraming; + + @Arg(dest = "exi") + public boolean exi; + + @Arg(dest = "async") + public boolean async; + + @Arg(dest = "ssh") + public boolean ssh; + + @Arg(dest = "msg-timeout") + public long msgTimeout; + + static ArgumentParser getParser() { + final ArgumentParser parser = ArgumentParsers.newArgumentParser("netconf stress client"); + + parser.description("Netconf stress client"); + + parser.addArgument("--ip") + .type(String.class) + .setDefault("127.0.0.1") + .type(String.class) + .help("Netconf server IP") + .dest("ip"); + + parser.addArgument("--port") + .type(Integer.class) + .setDefault(2830) + .type(Integer.class) + .help("Netconf server port") + .dest("port"); + + parser.addArgument("--edits") + .type(Integer.class) + .setDefault(50000) + .type(Integer.class) + .help("Netconf edit rpcs to be sent") + .dest("edit-count"); + + parser.addArgument("--edit-content") + .type(File.class) + .setDefault(new File("edit.txt")) + .type(File.class) + .dest("edit-content"); + + parser.addArgument("--edit-batch-size") + .type(Integer.class) + .required(false) + .setDefault(-1) + .type(Integer.class) + .dest("edit-batch-size"); + + parser.addArgument("--debug") + .type(Boolean.class) + .setDefault(false) + .help("Whether to use debug log level instead of INFO") + .dest("debug"); + + parser.addArgument("--legacy-framing") + .type(Boolean.class) + .setDefault(false) + .dest("legacy-framing"); + + parser.addArgument("--exi") + .type(Boolean.class) + .setDefault(false) + .dest("exi"); + + parser.addArgument("--async-requests") + .type(Boolean.class) + .setDefault(true) + .dest("async"); + + parser.addArgument("--msg-timeout") + .type(Integer.class) + .setDefault(60) + .dest("msg-timeout"); + + parser.addArgument("--ssh") + .type(Boolean.class) + .setDefault(false) + .dest("ssh"); + + // TODO add get-config option instead of edit + commit + // TODO different edit config content + + return parser; + } + + void validate() { + Preconditions.checkArgument(port > 0, "Port =< 0"); + Preconditions.checkArgument(editCount > 0, "Edit count =< 0"); + if (editBatchSize == -1) { + editBatchSize = editCount; + } else { + Preconditions.checkArgument(editBatchSize <= editCount, "Edit count =< 0"); + } + + Preconditions.checkArgument(editContent.exists(), "Edit content file missing"); + Preconditions.checkArgument(editContent.isDirectory() == false, "Edit content file is a dir"); + Preconditions.checkArgument(editContent.canRead(), "Edit content file is unreadable"); + // TODO validate + } + + public InetSocketAddress getInetAddress() { + try { + return new InetSocketAddress(InetAddress.getByName(ip), port); + } catch (final UnknownHostException e) { + throw new IllegalArgumentException("Unknown ip", e); + } + } +}