From dffe3d87e10e92d53c8fa175266eff388d5d88d7 Mon Sep 17 00:00:00 2001 From: Ivan Hrasko Date: Mon, 15 May 2017 10:52:02 +0200 Subject: [PATCH] Bug 8153: enforce check-style rules for netconf - netconf-testool Change-Id: Ic7e772768596d7e9e66e74896029f72caadeff9e Signed-off-by: Ivan Hrasko --- netconf/tools/netconf-testtool/pom.xml | 7 + .../test/tool/DummyMonitoringService.java | 14 +- .../netconf/test/tool/Execution.java | 13 +- .../netconf/test/tool/FakeCapability.java | 3 +- .../opendaylight/netconf/test/tool/Main.java | 105 +++++++------- .../test/tool/MdsalOperationProvider.java | 23 +-- .../test/tool/NetconfDeviceSimulator.java | 132 ++++++++++-------- .../netconf/test/tool/ScaleUtil.java | 92 ++++++------ .../test/tool/SimulatedOperationProvider.java | 23 +-- .../netconf/test/tool/TestToolUtils.java | 12 +- .../test/tool/TesttoolNegotiationFactory.java | 20 +-- .../netconf/test/tool/TesttoolParameters.java | 86 +++++++----- .../http/perf/AsyncExecutionStrategy.java | 3 +- .../tool/client/http/perf/Parameters.java | 15 +- .../client/http/perf/PerfClientCallable.java | 8 +- .../tool/client/http/perf/RestPerfClient.java | 82 ++++++++--- .../http/perf/SyncExecutionStrategy.java | 3 +- .../stress/AbstractExecutionStrategy.java | 3 +- .../client/stress/AsyncExecutionStrategy.java | 16 ++- .../stress/ConfigurableClientDispatcher.java | 38 +++-- .../test/tool/client/stress/StressClient.java | 85 +++++------ .../client/stress/StressClientCallable.java | 45 +++--- .../client/stress/SyncExecutionStrategy.java | 14 +- .../test/tool/customrpc/RpcMapping.java | 8 +- .../test/tool/rpc/SimulatedCommit.java | 3 +- .../tool/rpc/SimulatedCreateSubscription.java | 16 ++- .../tool/rpc/SimulatedDiscardChanges.java | 5 +- .../test/tool/rpc/SimulatedEditConfig.java | 5 +- .../netconf/test/tool/rpc/SimulatedGet.java | 7 +- .../test/tool/rpc/SimulatedGetConfig.java | 23 ++- .../netconf/test/tool/rpc/SimulatedLock.java | 5 +- .../test/tool/rpc/SimulatedUnLock.java | 3 +- 32 files changed, 525 insertions(+), 392 deletions(-) diff --git a/netconf/tools/netconf-testtool/pom.xml b/netconf/tools/netconf-testtool/pom.xml index c7223539fc..464a6aa7d3 100644 --- a/netconf/tools/netconf-testtool/pom.xml +++ b/netconf/tools/netconf-testtool/pom.xml @@ -368,6 +368,13 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + + checkstyle.violationSeverity=error + + diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/DummyMonitoringService.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/DummyMonitoringService.java index d9ba507b80..5ece664e17 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/DummyMonitoringService.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/DummyMonitoringService.java @@ -35,11 +35,10 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.mon import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.Schema.Location.Enumeration; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.SchemaBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.SchemaKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session; public class DummyMonitoringService implements NetconfMonitoringService { - private static final Sessions EMPTY_SESSIONS = new SessionsBuilder().setSession(Collections.emptyList()).build(); + private static final Sessions EMPTY_SESSIONS = new SessionsBuilder().setSession(Collections.emptyList()).build(); private static final Function CAPABILITY_URI_FUNCTION = new Function() { @Nullable @Override @@ -58,7 +57,8 @@ public class DummyMonitoringService implements NetconfMonitoringService { .setFormat(Yang.class) .setVersion(capability.getRevision().get()) .setLocation(Collections.singletonList(new Location(Enumeration.NETCONF))) - .setKey(new SchemaKey(Yang.class, capability.getModuleName().get(), capability.getRevision().get())).build(); + .setKey(new SchemaKey(Yang.class, capability.getModuleName().get(), capability.getRevision().get())) + .build(); } }; @@ -74,13 +74,14 @@ public class DummyMonitoringService implements NetconfMonitoringService { Set moduleCapabilities = Sets.newHashSet(); this.capabilityMultiMap = ArrayListMultimap.create(); for (Capability cap : capabilities) { - if(cap.getModuleName().isPresent()) { + if (cap.getModuleName().isPresent()) { capabilityMultiMap.put(cap.getModuleName().get(), cap); moduleCapabilities.add(cap); } } - this.schemas = new SchemasBuilder().setSchema(Lists.newArrayList(Collections2.transform(moduleCapabilities, CAPABILITY_SCHEMA_FUNCTION))).build(); + this.schemas = new SchemasBuilder().setSchema( + Lists.newArrayList(Collections2.transform(moduleCapabilities, CAPABILITY_SCHEMA_FUNCTION))).build(); } @Override @@ -121,7 +122,8 @@ public class DummyMonitoringService implements NetconfMonitoringService { return capability.getCapabilitySchema().get(); } } - throw new IllegalArgumentException("Module with name: " + moduleName + " and revision: " + revision + " does not exist"); + throw new IllegalArgumentException( + "Module with name: " + moduleName + " and revision: " + revision + " does not exist"); } @Override diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Execution.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Execution.java index 3cf3653822..e55f2de636 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Execution.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Execution.java @@ -39,7 +39,7 @@ public class Execution implements Callable { private final String destination; private final String payload; - public DestToPayload(String destination, String payload) { + DestToPayload(String destination, String payload) { this.destination = destination; this.payload = payload; } @@ -96,8 +96,8 @@ public class Execution implements Callable { Response response = asyncHttpClient.executeRequest(request).get(); if (response.getStatusCode() != 200 && response.getStatusCode() != 204) { if (response.getStatusCode() == 409) { - LOG.warn("Request failed, status code: {} - one or more of the devices" + - " is already configured, skipping the whole batch", response.getStatusCode()); + LOG.warn("Request failed, status code: {} - one or more of the devices" + + " is already configured, skipping the whole batch", response.getStatusCode()); } else { LOG.warn("Status code: {}", response.getStatusCode()); LOG.warn("url: {}", request.getUrl()); @@ -127,10 +127,11 @@ public class Execution implements Callable { super.onStatusReceived(status); if (status.getStatusCode() != 200 && status.getStatusCode() != 204) { if (status.getStatusCode() == 409) { - LOG.warn("Request failed, status code: {} - one or more of the devices" + - " is already configured, skipping the whole batch", status.getStatusCode()); + LOG.warn("Request failed, status code: {} - one or more of the devices" + + " is already configured, skipping the whole batch", status.getStatusCode()); } else { - LOG.warn("Request failed, status code: {}", status.getStatusCode() + status.getStatusText()); + LOG.warn("Request failed, status code: {}", + status.getStatusCode() + status.getStatusText()); LOG.warn("request: {}", request.toString()); } } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/FakeCapability.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/FakeCapability.java index 11ddbdb05c..92512d4451 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/FakeCapability.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/FakeCapability.java @@ -41,7 +41,8 @@ public class FakeCapability extends BasicCapability { } /** - l* + * Get empty capability schema. + * * @return empty schema source to trigger schema resolution exception. */ @Override diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Main.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Main.java index 6035656c0a..6217e6590c 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Main.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/Main.java @@ -18,7 +18,6 @@ import com.google.common.io.ByteStreams; import com.google.common.io.CharStreams; import com.google.common.io.Files; import java.io.File; -import java.io.FileFilter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; @@ -43,13 +42,14 @@ import org.slf4j.LoggerFactory; public final class Main { - private static final Logger LOG = LoggerFactory.getLogger(Main.class); - + + @SuppressWarnings("checkstyle:IllegalCatch") public static void main(final String[] args) { final TesttoolParameters params = TesttoolParameters.parseArgs(args, TesttoolParameters.getParser()); params.validate(); - final ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + final ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory + .getLogger(Logger.ROOT_LOGGER_NAME); root.setLevel(params.debug ? Level.DEBUG : Level.INFO); final NetconfDeviceSimulator netconfDeviceSimulator = new NetconfDeviceSimulator(params.threadPoolSize); @@ -61,7 +61,8 @@ public final class Main { System.exit(1); } if (params.controllerDestination != null) { - final ArrayList> allThreadsPayloads = params.getThreadsPayloads(openDevices); + final ArrayList> allThreadsPayloads = params + .getThreadsPayloads(openDevices); final ArrayList executions = new ArrayList<>(); for (ArrayList payloads : allThreadsPayloads) { executions.add(new Execution(params, payloads)); @@ -70,7 +71,7 @@ public final class Main { final Stopwatch time = Stopwatch.createStarted(); List> futures = executorService.invokeAll(executions, params.timeOut, TimeUnit.SECONDS); int threadNum = 0; - for(Future future : futures){ + for (Future future : futures) { threadNum++; if (future.isCancelled()) { LOG.info("{}. thread timed out.",threadNum); @@ -128,7 +129,7 @@ public final class Main { private final File etcDir; private final File loadOrderCfgFile; - public ConfigGenerator(final File directory, final List openDevices) { + ConfigGenerator(final File directory, final List openDevices) { this.configDir = new File(directory, ETC_OPENDAYLIGHT_KARAF_PATH); this.etcDir = new File(directory, ETC_KARAF_PATH); this.loadOrderCfgFile = new File(etcDir, ORG_OPS4J_PAX_URL_MVN_CFG); @@ -143,12 +144,8 @@ public final class Main { Preconditions.checkState(configDir.mkdirs(), "Unable to create directory " + configDir); } - for (final File file : configDir.listFiles(new FileFilter() { - @Override - public boolean accept(final File pathname) { - return !pathname.isDirectory() && pathname.getName().startsWith(SIM_DEVICE_CFG_PREFIX); - } - })) { + for (final File file : configDir.listFiles(pathname -> + !pathname.isDirectory() && pathname.getName().startsWith(SIM_DEVICE_CFG_PREFIX))) { Preconditions.checkState(file.delete(), "Unable to clean previous generated file %s", file); } @@ -157,13 +154,15 @@ public final class Main { String configBlueprint = CharStreams.toString(new InputStreamReader(stream, StandardCharsets.UTF_8)); final String before = configBlueprint.substring(0, configBlueprint.indexOf("")); - final String middleBlueprint = configBlueprint.substring(configBlueprint.indexOf(""), configBlueprint.indexOf("")); - final String after = configBlueprint.substring(configBlueprint.indexOf("") + "".length()); + final String middleBlueprint = configBlueprint.substring( + configBlueprint.indexOf(""), configBlueprint.indexOf("")); + final String after = configBlueprint.substring( + configBlueprint.indexOf("") + "".length()); int connectorCount = 0; Integer batchStart = null; - StringBuilder b = new StringBuilder(); - b.append(before); + StringBuilder builder = new StringBuilder(); + builder.append(before); final List generatedConfigs = Lists.newArrayList(); @@ -173,20 +172,25 @@ public final class Main { } for (int i = 0; i < devicesPerPort; i++) { - final String name = String.valueOf(openDevice) + SIM_DEVICE_SUFFIX + (i == 0 ? "" : "-" + String.valueOf(i)); - String configContent = String.format(middleBlueprint, name, address, String.valueOf(openDevice), String.valueOf(!useSsh)); - configContent = String.format("%s%s%d%s\n%s\n", configContent, "", generateConfigsTimeout, "", ""); - - b.append(configContent); + final String name = String.valueOf(openDevice) + + SIM_DEVICE_SUFFIX + (i == 0 ? "" : "-" + String.valueOf(i)); + String configContent = String.format( + middleBlueprint, name, address, String.valueOf(openDevice), String.valueOf(!useSsh)); + configContent = String.format( + "%s%s%d%s\n%s\n", configContent, "", + generateConfigsTimeout, "", ""); + + builder.append(configContent); connectorCount++; if (connectorCount == batchSize) { - b.append(after); - final File to = new File(configDir, String.format(SIM_DEVICE_CFG_PREFIX + "%d-%d.xml", batchStart, openDevice)); + builder.append(after); + final File to = new File( + configDir, String.format(SIM_DEVICE_CFG_PREFIX + "%d-%d.xml", batchStart, openDevice)); generatedConfigs.add(to); - Files.write(b.toString(), to, StandardCharsets.UTF_8); + Files.write(builder.toString(), to, StandardCharsets.UTF_8); connectorCount = 0; - b = new StringBuilder(); - b.append(before); + builder = new StringBuilder(); + builder.append(before); batchStart = null; } } @@ -194,10 +198,11 @@ public final class Main { // Write remaining if (connectorCount != 0) { - b.append(after); - final File to = new File(configDir, String.format(SIM_DEVICE_CFG_PREFIX + "%d-%d.xml", batchStart, openDevices.get(openDevices.size() - 1))); + builder.append(after); + final File to = new File(configDir, String.format( + SIM_DEVICE_CFG_PREFIX + "%d-%d.xml", batchStart, openDevices.get(openDevices.size() - 1))); generatedConfigs.add(to); - Files.write(b.toString(), to, StandardCharsets.UTF_8); + Files.write(builder.toString(), to, StandardCharsets.UTF_8); } LOG.info("Config files generated in {}", configDir); @@ -207,7 +212,6 @@ public final class Main { } } - public void updateFeatureFile(final List generated) { for (final File fileFeatures : ncFeatureFiles) { try { @@ -228,9 +232,9 @@ public final class Main { cf.setLocation("file:" + generatedName); feature.getConfigfile().add(cf); - } } } + } JaxbUtil.marshal(f, new FileWriter(fileFeatures)); LOG.info("Feature file {} updated", fileFeatures); } catch (JAXBException | IOException e) { @@ -239,39 +243,29 @@ public final class Main { } } - - private static List getFeatureFile(final File distroFolder, final String featureName, final String suffix) { + private static List getFeatureFile(final File distroFolder, final String featureName, + final String suffix) { checkExistingDir(distroFolder, String.format("Folder %s does not exist", distroFolder)); - final File systemDir = checkExistingDir(new File(distroFolder, "system"), String.format("Folder %s does not contain a karaf distro, folder system is missing", distroFolder)); + final File systemDir = checkExistingDir(new File(distroFolder, "system"), + String.format("Folder %s does not contain a karaf distro, folder system is missing", distroFolder)); //check if beryllium path exists, if it doesnt check for lithium and fail/succeed after File netconfConnectorFeaturesParentDir = new File(systemDir, "org/opendaylight/netconf/" + featureName); if (!netconfConnectorFeaturesParentDir.exists() || !netconfConnectorFeaturesParentDir.isDirectory()) { - netconfConnectorFeaturesParentDir = checkExistingDir(new File(systemDir, "org/opendaylight/controller/" + featureName), String.format("Karaf distro in %s does not contain netconf-connector features", distroFolder)); + netconfConnectorFeaturesParentDir = checkExistingDir(new File(systemDir, + "org/opendaylight/controller/" + featureName), + String.format("Karaf distro in %s does not contain netconf-connector features", distroFolder)); } // Find newest version for features final File newestVersionDir = Collections.max( - Lists.newArrayList(netconfConnectorFeaturesParentDir.listFiles(new FileFilter() { - @Override - public boolean accept(final File pathname) { - return pathname.isDirectory(); - } - })), new Comparator() { - @Override - public int compare(final File o1, final File o2) { - return o1.getName().compareTo(o2.getName()); - } - }); + Lists.newArrayList(netconfConnectorFeaturesParentDir.listFiles(File::isDirectory)), + Comparator.comparing(File::getName)); - return Lists.newArrayList(newestVersionDir.listFiles(new FileFilter() { - @Override - public boolean accept(final File pathname) { - return pathname.getName().contains(featureName) - && Files.getFileExtension(pathname.getName()).equals(suffix); - } - })); + return Lists.newArrayList(newestVersionDir.listFiles( + pathname -> pathname.getName().contains(featureName) + && Files.getFileExtension(pathname.getName()).equals(suffix))); } private static File checkExistingDir(final File folder, final String msg) { @@ -282,7 +276,8 @@ public final class Main { public void changeLoadOrder() { try { - Files.write(ByteStreams.toByteArray(getClass().getResourceAsStream("/" + ORG_OPS4J_PAX_URL_MVN_CFG)), loadOrderCfgFile); + Files.write(ByteStreams.toByteArray(getClass().getResourceAsStream( + "/" + ORG_OPS4J_PAX_URL_MVN_CFG)), loadOrderCfgFile); LOG.info("Load order changed to prefer local bundles/features by rewriting file {}", loadOrderCfgFile); } catch (IOException e) { throw new RuntimeException("Unable to rewrite features file " + loadOrderCfgFile, e); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java index 767a8ef83f..071085ddf8 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java @@ -71,9 +71,10 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { private final SchemaContext schemaContext; private SchemaSourceProvider sourceProvider; - public MdsalOperationProvider(final SessionIdProvider idProvider, - final Set caps, - final SchemaContext schemaContext, final SchemaSourceProvider sourceProvider) { + MdsalOperationProvider(final SessionIdProvider idProvider, + final Set caps, + final SchemaContext schemaContext, + final SchemaSourceProvider sourceProvider) { this.caps = caps; this.schemaContext = schemaContext; this.sourceProvider = sourceProvider; @@ -97,7 +98,8 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { @Override public NetconfOperationService createService(String netconfSessionIdForReporting) { - return new MdsalOperationService(Long.parseLong(netconfSessionIdForReporting), schemaContext, caps, sourceProvider); + return new MdsalOperationService(Long.parseLong(netconfSessionIdForReporting), schemaContext, + caps, sourceProvider); } static class MdsalOperationService implements NetconfOperationService { @@ -108,9 +110,10 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { private final DOMDataBroker dataBroker; private SchemaSourceProvider sourceProvider; - public MdsalOperationService(final long currentSessionId, - final SchemaContext schemaContext, - final Set caps, final SchemaSourceProvider sourceProvider) { + MdsalOperationService(final long currentSessionId, + final SchemaContext schemaContext, + final Set caps, + final SchemaSourceProvider sourceProvider) { this.currentSessionId = currentSessionId; this.schemaContext = schemaContext; this.caps = caps; @@ -123,7 +126,8 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { @Override public Set getNetconfOperations() { - TransactionProvider transactionProvider = new TransactionProvider(dataBroker, String.valueOf(currentSessionId)); + TransactionProvider transactionProvider = new TransactionProvider( + dataBroker, String.valueOf(currentSessionId)); CurrentSchemaContext currentSchemaContext = new CurrentSchemaContext(schemaService, sourceProvider); ContainerNode netconf = createNetconfState(); @@ -149,7 +153,8 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { final Commit commit = new Commit(String.valueOf(currentSessionId), transactionProvider); final Lock lock = new Lock(String.valueOf(currentSessionId)); final Unlock unLock = new Unlock(String.valueOf(currentSessionId)); - final DiscardChanges discardChanges = new DiscardChanges(String.valueOf(currentSessionId), transactionProvider); + final DiscardChanges discardChanges = new DiscardChanges( + String.valueOf(currentSessionId), transactionProvider); return Sets.newHashSet(get, getConfig, editConfig, commit, lock, unLock, discardChanges); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java index 2850b5a65f..6e01531dc7 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java @@ -8,7 +8,6 @@ package org.opendaylight.netconf.test.tool; -import com.google.common.base.Function; import com.google.common.base.MoreObjects; import com.google.common.base.Optional; import com.google.common.collect.Collections2; @@ -89,13 +88,15 @@ public class NetconfDeviceSimulator implements Closeable { private boolean sendFakeSchema = false; - public NetconfDeviceSimulator(final int ThreadPoolSize) { + public NetconfDeviceSimulator(final int threadPoolSize) { this(new NioEventLoopGroup(), new HashedWheelTimer(), - Executors.newScheduledThreadPool(ThreadPoolSize, new ThreadFactoryBuilder().setNameFormat("netconf-ssh-server-mina-timers-%d").build()), - ThreadUtils.newFixedThreadPool("netconf-ssh-server-nio-group", ThreadPoolSize)); + Executors.newScheduledThreadPool(threadPoolSize, + new ThreadFactoryBuilder().setNameFormat("netconf-ssh-server-mina-timers-%d").build()), + ThreadUtils.newFixedThreadPool("netconf-ssh-server-nio-group", threadPoolSize)); } - private NetconfDeviceSimulator(final NioEventLoopGroup eventExecutors, final HashedWheelTimer hashedWheelTimer, final ScheduledExecutorService minaTimerExecutor, final ExecutorService nioExecutor) { + private NetconfDeviceSimulator(final NioEventLoopGroup eventExecutors, final HashedWheelTimer hashedWheelTimer, + final ScheduledExecutorService minaTimerExecutor, final ExecutorService nioExecutor) { this.nettyThreadgroup = eventExecutors; this.hashedWheelTimer = hashedWheelTimer; this.minaTimerExecutor = minaTimerExecutor; @@ -103,48 +104,48 @@ public class NetconfDeviceSimulator implements Closeable { } private NetconfServerDispatcherImpl createDispatcher(final Set capabilities, - final SchemaSourceProvider sourceProvider, - final TesttoolParameters params) { + final SchemaSourceProvider sourceProvider, final TesttoolParameters params) { - final Set transformedCapabilities = Sets.newHashSet(Collections2.transform(capabilities, new Function() { - @Override - public Capability apply(final Capability input) { - if (sendFakeSchema) { - sendFakeSchema = false; - return new FakeCapability((YangModuleCapability) input); - } else { - return input; - } + final Set transformedCapabilities = Sets.newHashSet(Collections2.transform(capabilities, input -> { + if (sendFakeSchema) { + sendFakeSchema = false; + return new FakeCapability((YangModuleCapability) input); + } else { + return input; } })); transformedCapabilities.add(new BasicCapability("urn:ietf:params:netconf:capability:candidate:1.0")); final NetconfMonitoringService monitoringService1 = new DummyMonitoringService(transformedCapabilities); final SessionIdProvider idProvider = new SessionIdProvider(); - final NetconfOperationServiceFactory aggregatedNetconfOperationServiceFactory = createOperationServiceFactory(sourceProvider, params, transformedCapabilities, monitoringService1, idProvider); + final NetconfOperationServiceFactory aggregatedNetconfOperationServiceFactory = createOperationServiceFactory( + sourceProvider, params, transformedCapabilities, monitoringService1, idProvider); final Set serverCapabilities = params.exi ? NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES - : Sets.newHashSet(XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0, XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_1); + : Sets.newHashSet(XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0, + XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_1); final NetconfServerSessionNegotiatorFactory serverNegotiatorFactory = new TesttoolNegotiationFactory( - hashedWheelTimer, aggregatedNetconfOperationServiceFactory, idProvider, params.generateConfigsTimeout, monitoringService1, serverCapabilities); + hashedWheelTimer, aggregatedNetconfOperationServiceFactory, idProvider, params.generateConfigsTimeout, + monitoringService1, serverCapabilities); - final NetconfServerDispatcherImpl.ServerChannelInitializer serverChannelInitializer = new NetconfServerDispatcherImpl.ServerChannelInitializer( - serverNegotiatorFactory); + final NetconfServerDispatcherImpl.ServerChannelInitializer serverChannelInitializer = + new NetconfServerDispatcherImpl.ServerChannelInitializer(serverNegotiatorFactory); return new NetconfServerDispatcherImpl(serverChannelInitializer, nettyThreadgroup, nettyThreadgroup); } - private NetconfOperationServiceFactory createOperationServiceFactory(final SchemaSourceProvider sourceProvider, - final TesttoolParameters params, - final Set transformedCapabilities, - final NetconfMonitoringService monitoringService1, - final SessionIdProvider idProvider) { - final AggregatedNetconfOperationServiceFactory aggregatedNetconfOperationServiceFactory = new AggregatedNetconfOperationServiceFactory(); + private NetconfOperationServiceFactory createOperationServiceFactory( + final SchemaSourceProvider sourceProvider, final TesttoolParameters params, + final Set transformedCapabilities, final NetconfMonitoringService monitoringService1, + final SessionIdProvider idProvider) { + final AggregatedNetconfOperationServiceFactory aggregatedNetconfOperationServiceFactory = + new AggregatedNetconfOperationServiceFactory(); final NetconfOperationServiceFactory operationProvider; if (params.mdSal) { - operationProvider = new MdsalOperationProvider(idProvider, transformedCapabilities, schemaContext, sourceProvider); + operationProvider = new MdsalOperationProvider( + idProvider, transformedCapabilities, schemaContext, sourceProvider); } else { operationProvider = new SimulatedOperationProvider(idProvider, transformedCapabilities, Optional.fromNullable(params.notificationFile), @@ -165,18 +166,14 @@ public class NetconfDeviceSimulator implements Closeable { } public List start(final TesttoolParameters params) { - LOG.info("Starting {}, {} simulated devices starting on port {}", params.deviceCount, params.ssh ? "SSH" : "TCP", params.startingPort); + LOG.info("Starting {}, {} simulated devices starting on port {}", + params.deviceCount, params.ssh ? "SSH" : "TCP", params.startingPort); final SharedSchemaRepository schemaRepo = new SharedSchemaRepository("netconf-simulator"); final Set capabilities = parseSchemasToModuleCapabilities(params, schemaRepo); final NetconfServerDispatcherImpl dispatcher = createDispatcher(capabilities, - new SchemaSourceProvider() { - @Override - public CheckedFuture getSource(final SourceIdentifier sourceIdentifier) { - return schemaRepo.getSchemaSource(sourceIdentifier, YangTextSchemaSource.class); - } - }, params); + sourceIdentifier -> schemaRepo.getSchemaSource(sourceIdentifier, YangTextSchemaSource.class), params); int currentPort = params.startingPort; @@ -193,20 +190,21 @@ public class NetconfDeviceSimulator implements Closeable { final InetSocketAddress address = getAddress(params.ip, currentPort); final ChannelFuture server; - if(params.ssh) { + if (params.ssh) { final InetSocketAddress bindingAddress = InetSocketAddress.createUnresolved("0.0.0.0", currentPort); final LocalAddress tcpLocalAddress = new LocalAddress(address.toString()); server = dispatcher.createLocalServer(tcpLocalAddress); try { - final SshProxyServer sshServer = new SshProxyServer(minaTimerExecutor, nettyThreadgroup, nioExecutor); + final SshProxyServer sshServer = new SshProxyServer( + minaTimerExecutor, nettyThreadgroup, nioExecutor); sshServer.bind(getSshConfiguration(bindingAddress, tcpLocalAddress, keyPairProvider)); sshWrappers.add(sshServer); } catch (final BindException e) { LOG.warn("Cannot start simulated device on {}, port already in use. Skipping.", address); // Close local server and continue server.cancel(true); - if(server.isDone()) { + if (server.isDone()) { server.channel().close(); } continue; @@ -248,8 +246,9 @@ public class NetconfDeviceSimulator implements Closeable { openDevices.add(currentPort - 1); } - if(openDevices.size() == params.deviceCount) { - LOG.info("All simulated devices started successfully from port {} to {}", params.startingPort, currentPort - 1); + if (openDevices.size() == params.deviceCount) { + LOG.info("All simulated devices started successfully from port {} to {}", + params.startingPort, currentPort - 1); } else if (openDevices.size() == 0) { LOG.warn("No simulated devices started."); } else { @@ -259,7 +258,8 @@ public class NetconfDeviceSimulator implements Closeable { return openDevices; } - private SshProxyServerConfiguration getSshConfiguration(final InetSocketAddress bindingAddress, final LocalAddress tcpLocalAddress, final PEMGeneratorHostKeyProvider keyPairProvider) throws IOException { + private SshProxyServerConfiguration getSshConfiguration(final InetSocketAddress bindingAddress, + final LocalAddress tcpLocalAddress, final PEMGeneratorHostKeyProvider keyPairProvider) throws IOException { return new SshProxyServerConfigurationBuilder() .setBindingAddress(bindingAddress) .setLocalAddress(tcpLocalAddress) @@ -284,7 +284,8 @@ public class NetconfDeviceSimulator implements Closeable { } } - private Set parseSchemasToModuleCapabilities(final TesttoolParameters params, final SharedSchemaRepository consumer) { + private Set parseSchemasToModuleCapabilities(final TesttoolParameters params, + final SharedSchemaRepository consumer) { final Set loadedSources = Sets.newHashSet(); consumer.registerSchemaSourceListener(TextToASTTransformer.create(consumer, consumer)); @@ -304,8 +305,9 @@ public class NetconfDeviceSimulator implements Closeable { public void schemaSourceUnregistered(final PotentialSchemaSource potentialSchemaSource) {} }); - if(params.schemasDir != null) { - final FilesystemSchemaSourceCache cache = new FilesystemSchemaSourceCache<>(consumer, YangTextSchemaSource.class, params.schemasDir); + if (params.schemasDir != null) { + final FilesystemSchemaSourceCache cache = new FilesystemSchemaSourceCache<>( + consumer, YangTextSchemaSource.class, params.schemasDir); consumer.registerSchemaSourceListener(cache); } @@ -331,41 +333,46 @@ public class NetconfDeviceSimulator implements Closeable { return capabilities; } - private void addModuleCapability(final SharedSchemaRepository consumer, final Set capabilities, final Module module) { + private void addModuleCapability(final SharedSchemaRepository consumer, final Set capabilities, + final Module module) { final SourceIdentifier moduleSourceIdentifier = SourceIdentifier.create(module.getName(), - (SimpleDateFormatUtil.DEFAULT_DATE_REV == module.getRevision() ? Optional.absent() : + (SimpleDateFormatUtil.DEFAULT_DATE_REV == module.getRevision() ? Optional.absent() : Optional.of(module.getQNameModule().getFormattedRevision()))); try { - final String moduleContent = new String(consumer.getSchemaSource(moduleSourceIdentifier, YangTextSchemaSource.class) - .checkedGet().read()); + final String moduleContent = new String( + consumer.getSchemaSource(moduleSourceIdentifier, YangTextSchemaSource.class).checkedGet().read()); capabilities.add(new YangModuleCapability(module, moduleContent)); //IOException would be thrown in creating SchemaContext already - } catch (SchemaSourceException |IOException e) { - throw new RuntimeException("Cannot retrieve schema source for module " + moduleSourceIdentifier.toString() + " from schema repository", e); + } catch (SchemaSourceException | IOException e) { + throw new RuntimeException("Cannot retrieve schema source for module " + + moduleSourceIdentifier.toString() + " from schema repository", e); } } private void addDefaultSchemas(final SharedSchemaRepository consumer) { - SourceIdentifier sId = RevisionSourceIdentifier.create("ietf-netconf-monitoring", "2010-10-04"); - registerSource(consumer, "/META-INF/yang/ietf-netconf-monitoring.yang", sId); + SourceIdentifier srcId = RevisionSourceIdentifier.create("ietf-netconf-monitoring", "2010-10-04"); + registerSource(consumer, "/META-INF/yang/ietf-netconf-monitoring.yang", srcId); - sId = RevisionSourceIdentifier.create("ietf-netconf-monitoring-extension", "2013-12-10"); - registerSource(consumer, "/META-INF/yang/ietf-netconf-monitoring-extension.yang", sId); + srcId = RevisionSourceIdentifier.create("ietf-netconf-monitoring-extension", "2013-12-10"); + registerSource(consumer, "/META-INF/yang/ietf-netconf-monitoring-extension.yang", srcId); - sId = RevisionSourceIdentifier.create("ietf-yang-types", "2013-07-15"); - registerSource(consumer, "/META-INF/yang/ietf-yang-types@2013-07-15.yang", sId); + srcId = RevisionSourceIdentifier.create("ietf-yang-types", "2013-07-15"); + registerSource(consumer, "/META-INF/yang/ietf-yang-types@2013-07-15.yang", srcId); - sId = RevisionSourceIdentifier.create("ietf-inet-types", "2013-07-15"); - registerSource(consumer, "/META-INF/yang/ietf-inet-types@2013-07-15.yang", sId); + srcId = RevisionSourceIdentifier.create("ietf-inet-types", "2013-07-15"); + registerSource(consumer, "/META-INF/yang/ietf-inet-types@2013-07-15.yang", srcId); } - private void registerSource(final SharedSchemaRepository consumer, final String resource, final SourceIdentifier sourceId) { + private void registerSource(final SharedSchemaRepository consumer, final String resource, + final SourceIdentifier sourceId) { consumer.registerSchemaSource(new SchemaSourceProvider() { @Override - public CheckedFuture getSource(final SourceIdentifier sourceIdentifier) { + public CheckedFuture getSource( + final SourceIdentifier sourceIdentifier) { return Futures.immediateCheckedFuture(new YangTextSchemaSource(sourceId) { @Override - protected MoreObjects.ToStringHelper addToStringAttributes(final MoreObjects.ToStringHelper toStringHelper) { + protected MoreObjects.ToStringHelper addToStringAttributes( + final MoreObjects.ToStringHelper toStringHelper) { return toStringHelper; } @@ -375,7 +382,8 @@ public class NetconfDeviceSimulator implements Closeable { } }); } - }, PotentialSchemaSource.create(sourceId, YangTextSchemaSource.class, PotentialSchemaSource.Costs.IMMEDIATE.getValue())); + }, PotentialSchemaSource.create( + sourceId, YangTextSchemaSource.class, PotentialSchemaSource.Costs.IMMEDIATE.getValue())); } private static InetSocketAddress getAddress(final String ip, final int port) { diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/ScaleUtil.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/ScaleUtil.java index 4ded4bb52e..e28d936f6d 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/ScaleUtil.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/ScaleUtil.java @@ -36,19 +36,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ScaleUtil { - private static Logger RESULTS_LOG ; - private static final ScheduledExecutorService executor = new LoggingWrapperExecutor(4); + private static final ScheduledExecutorService EXECUTOR = new LoggingWrapperExecutor(4); + private static final Semaphore SEMAPHORE = new Semaphore(0); + private static final Stopwatch STOPWATCH = Stopwatch.createUnstarted(); - private static final int deviceStep = 1000; - private static final long retryDelay = 10l; - private static final long timeout = 20l; + private static final long TIMEOUT = 20L; + private static final long RETRY_DELAY = 10L; + private static final int DEVICE_STEP = 1000; - private static final Stopwatch stopwatch = Stopwatch.createUnstarted(); - - private static ScheduledFuture timeoutGuardFuture; private static ch.qos.logback.classic.Logger root; - private static final Semaphore semaphore = new Semaphore(0); + private static Logger resultsLog; + @SuppressWarnings("checkstyle:illegalCatch") public static void main(final String[] args) { final TesttoolParameters params = TesttoolParameters.parseArgs(args, TesttoolParameters.getParser()); @@ -60,7 +59,7 @@ public class ScaleUtil { while (true) { root.warn("Starting scale test with {} devices", params.deviceCount); - timeoutGuardFuture = executor.schedule(new TimeoutGuard(), timeout, TimeUnit.MINUTES); + final ScheduledFuture timeoutGuardFuture = EXECUTOR.schedule(new TimeoutGuard(), TIMEOUT, TimeUnit.MINUTES); final NetconfDeviceSimulator netconfDeviceSimulator = new NetconfDeviceSimulator(params.threadAmount); try { final List openDevices = netconfDeviceSimulator.start(params); @@ -69,7 +68,8 @@ public class ScaleUtil { System.exit(1); } if (params.distroFolder != null) { - final Main.ConfigGenerator configGenerator = new Main.ConfigGenerator(params.distroFolder, openDevices); + final Main.ConfigGenerator configGenerator = new Main.ConfigGenerator( + params.distroFolder, openDevices); final List generated = configGenerator.generate( params.ssh, params.generateConfigBatchSize, params.generateConfigsTimeout, params.generateConfigsAddress, @@ -90,17 +90,21 @@ public class ScaleUtil { do { final Process exec = runtime.exec(params.distroFolder.getAbsolutePath() + "/bin/status"); try { - Thread.sleep(2000l); + Thread.sleep(2000L); } catch (InterruptedException e) { root.warn("Failed to sleep", e); } status = CharStreams.toString(new BufferedReader(new InputStreamReader(exec.getInputStream()))); root.warn("Current status: {}", status); } while (!status.startsWith("Running ...")); - root.warn("Doing feature install {}", params.distroFolder.getAbsolutePath() + "/bin/client -u karaf feature:install odl-restconf-noauth odl-netconf-connector-all"); - final Process featureInstall = runtime.exec(params.distroFolder.getAbsolutePath() + "/bin/client -u karaf feature:install odl-restconf-noauth odl-netconf-connector-all"); - root.warn(CharStreams.toString(new BufferedReader(new InputStreamReader(featureInstall.getInputStream())))); - root.warn(CharStreams.toString(new BufferedReader(new InputStreamReader(featureInstall.getErrorStream())))); + root.warn("Doing feature install {}", params.distroFolder.getAbsolutePath() + + "/bin/client -u karaf feature:install odl-restconf-noauth odl-netconf-connector-all"); + final Process featureInstall = runtime.exec(params.distroFolder.getAbsolutePath() + + "/bin/client -u karaf feature:install odl-restconf-noauth odl-netconf-connector-all"); + root.warn( + CharStreams.toString(new BufferedReader(new InputStreamReader(featureInstall.getInputStream())))); + root.warn( + CharStreams.toString(new BufferedReader(new InputStreamReader(featureInstall.getErrorStream())))); } catch (IOException e) { root.warn("Failed to start karaf", e); @@ -108,21 +112,22 @@ public class ScaleUtil { } root.warn("Karaf started, starting stopwatch"); - stopwatch.start(); + STOPWATCH.start(); try { - executor.schedule(new ScaleVerifyCallable(netconfDeviceSimulator, params.deviceCount), retryDelay, TimeUnit.SECONDS); + EXECUTOR.schedule( + new ScaleVerifyCallable(netconfDeviceSimulator, params.deviceCount), RETRY_DELAY, TimeUnit.SECONDS); root.warn("First callable scheduled"); - semaphore.acquire(); + SEMAPHORE.acquire(); root.warn("semaphore released"); } catch (InterruptedException e) { throw new RuntimeException(e); } timeoutGuardFuture.cancel(false); - params.deviceCount += deviceStep; + params.deviceCount += DEVICE_STEP; netconfDeviceSimulator.close(); - stopwatch.reset(); + STOPWATCH.reset(); cleanup(runtime, params); } @@ -133,7 +138,7 @@ public class ScaleUtil { root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); root.setLevel(params.debug ? Level.DEBUG : Level.INFO); - RESULTS_LOG = LoggerFactory.getLogger("results"); + resultsLog = LoggerFactory.getLogger("results"); } private static void cleanup(final Runtime runtime, final TesttoolParameters params) { @@ -147,27 +152,27 @@ public class ScaleUtil { } } - private static void stopKaraf(final Runtime runtime, final TesttoolParameters params) throws IOException, InterruptedException { + private static void stopKaraf(final Runtime runtime, final TesttoolParameters params) + throws IOException, InterruptedException { root.info("Stopping karaf and sleeping for 10 sec.."); String controllerPid = ""; do { - final Process pgrep = runtime.exec("pgrep -f org.apache.karaf.main.Main"); controllerPid = CharStreams.toString(new BufferedReader(new InputStreamReader(pgrep.getInputStream()))); root.warn(controllerPid); runtime.exec("kill -9 " + controllerPid); - Thread.sleep(10000l); + Thread.sleep(10000L); } while (!controllerPid.isEmpty()); deleteFolder(new File(params.distroFolder.getAbsoluteFile() + "/data")); } private static void deleteFolder(File folder) { File[] files = folder.listFiles(); - if(files!=null) { //some JVMs return null for empty dirs - for(File f: files) { - if(f.isDirectory()) { + if (files != null) { //some JVMs return null for empty dirs + for (File f : files) { + if (f.isDirectory()) { deleteFolder(f); } else { f.delete(); @@ -191,10 +196,10 @@ public class ScaleUtil { } private static class ScaleVerifyCallable implements Callable { - private static final Logger LOG = LoggerFactory.getLogger(ScaleVerifyCallable.class); - private static final String RESTCONF_URL = "http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/"; + private static final String RESTCONF_URL + = "http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/"; private static final Pattern PATTERN = Pattern.compile("connected"); private final AsyncHttpClient asyncHttpClient = new AsyncHttpClient(new Builder() @@ -206,7 +211,7 @@ public class ScaleUtil { private final int deviceCount; private final Request request; - public ScaleVerifyCallable(final NetconfDeviceSimulator simulator, final int deviceCount) { + ScaleVerifyCallable(final NetconfDeviceSimulator simulator, final int deviceCount) { LOG.info("New callable created"); this.simulator = simulator; this.deviceCount = deviceCount; @@ -224,7 +229,7 @@ public class ScaleUtil { if (response.getStatusCode() != 200 && response.getStatusCode() != 204) { LOG.warn("Request failed, status code: {}", response.getStatusCode() + response.getStatusText()); - executor.schedule(new ScaleVerifyCallable(simulator, deviceCount), retryDelay, TimeUnit.SECONDS); + EXECUTOR.schedule(new ScaleVerifyCallable(simulator, deviceCount), RETRY_DELAY, TimeUnit.SECONDS); } else { final String body = response.getResponseBody(); final Matcher matcher = PATTERN.matcher(body); @@ -232,36 +237,37 @@ public class ScaleUtil { while (matcher.find()) { count++; } - RESULTS_LOG.info("Currently connected devices : {} out of {}, time elapsed: {}", count, deviceCount + 1, stopwatch); + resultsLog.info("Currently connected devices : {} out of {}, time elapsed: {}", + count, deviceCount + 1, STOPWATCH); if (count != deviceCount + 1) { - executor.schedule(new ScaleVerifyCallable(simulator, deviceCount), retryDelay, TimeUnit.SECONDS); + EXECUTOR.schedule( + new ScaleVerifyCallable(simulator, deviceCount), RETRY_DELAY, TimeUnit.SECONDS); } else { - stopwatch.stop(); - RESULTS_LOG.info("All devices connected in {}", stopwatch); - semaphore.release(); + STOPWATCH.stop(); + resultsLog.info("All devices connected in {}", STOPWATCH); + SEMAPHORE.release(); } } } catch (ConnectException | ExecutionException e) { LOG.warn("Failed to connect to Restconf, is the controller running?", e); - executor.schedule(new ScaleVerifyCallable(simulator, deviceCount), retryDelay, TimeUnit.SECONDS); + EXECUTOR.schedule(new ScaleVerifyCallable(simulator, deviceCount), RETRY_DELAY, TimeUnit.SECONDS); } return null; } } private static class TimeoutGuard implements Callable { - @Override public Object call() throws Exception { - RESULTS_LOG.warn("Timeout for scale test reached after: {} ..aborting", stopwatch); - root.warn("Timeout for scale test reached after: {} ..aborting", stopwatch); + resultsLog.warn("Timeout for scale test reached after: {} ..aborting", STOPWATCH); + root.warn("Timeout for scale test reached after: {} ..aborting", STOPWATCH); System.exit(0); return null; } } + @SuppressWarnings("checkstyle:illegalCatch") public static class LoggingWrapperExecutor extends ScheduledThreadPoolExecutor { - public LoggingWrapperExecutor(int corePoolSize) { super(corePoolSize); } @@ -278,7 +284,7 @@ public class ScaleUtil { private class LogOnExceptionCallable implements Callable { private Callable theCallable; - public LogOnExceptionCallable(Callable theCallable) { + LogOnExceptionCallable(Callable theCallable) { super(); this.theCallable = theCallable; } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java index 961e597fe1..3847ce9bfa 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java @@ -33,12 +33,13 @@ class SimulatedOperationProvider implements NetconfOperationServiceFactory { private final Set caps; private final SimulatedOperationService simulatedOperationService; - public SimulatedOperationProvider(final SessionIdProvider idProvider, - final Set caps, - final Optional notificationsFile, - final Optional initialConfigXMLFile) { + SimulatedOperationProvider(final SessionIdProvider idProvider, + final Set caps, + final Optional notificationsFile, + final Optional initialConfigXMLFile) { this.caps = caps; - simulatedOperationService = new SimulatedOperationService(idProvider.getCurrentSessionId(), notificationsFile, initialConfigXMLFile); + simulatedOperationService = new SimulatedOperationService( + idProvider.getCurrentSessionId(), notificationsFile, initialConfigXMLFile); } @Override @@ -68,7 +69,8 @@ class SimulatedOperationProvider implements NetconfOperationServiceFactory { private final Optional notificationsFile; private final Optional initialConfigXMLFile; - public SimulatedOperationService(final long currentSessionId, final Optional notificationsFile, final Optional initialConfigXMLFile) { + SimulatedOperationService(final long currentSessionId, final Optional notificationsFile, + final Optional initialConfigXMLFile) { this.currentSessionId = currentSessionId; this.notificationsFile = notificationsFile; this.initialConfigXMLFile = initialConfigXMLFile; @@ -79,14 +81,17 @@ class SimulatedOperationProvider implements NetconfOperationServiceFactory { final DataList storage = new DataList(); final SimulatedGet sGet = new SimulatedGet(String.valueOf(currentSessionId), storage); final SimulatedEditConfig sEditConfig = new SimulatedEditConfig(String.valueOf(currentSessionId), storage); - final SimulatedGetConfig sGetConfig = new SimulatedGetConfig(String.valueOf(currentSessionId), storage, initialConfigXMLFile ); + final SimulatedGetConfig sGetConfig = new SimulatedGetConfig( + String.valueOf(currentSessionId), storage, initialConfigXMLFile); final SimulatedCommit sCommit = new SimulatedCommit(String.valueOf(currentSessionId)); final SimulatedLock sLock = new SimulatedLock(String.valueOf(currentSessionId)); final SimulatedUnLock sUnlock = new SimulatedUnLock(String.valueOf(currentSessionId)); final SimulatedCreateSubscription sCreateSubs = new SimulatedCreateSubscription( String.valueOf(currentSessionId), notificationsFile); - final SimulatedDiscardChanges sDiscardChanges = new SimulatedDiscardChanges(String.valueOf(currentSessionId)); - return Sets.newHashSet(sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs, sDiscardChanges); + final SimulatedDiscardChanges sDiscardChanges = new SimulatedDiscardChanges( + String.valueOf(currentSessionId)); + return Sets.newHashSet( + sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs, sDiscardChanges); } @Override diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TestToolUtils.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TestToolUtils.java index 89ff25c072..b2c6ca0c31 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TestToolUtils.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TestToolUtils.java @@ -11,16 +11,16 @@ package org.opendaylight.netconf.test.tool; public class TestToolUtils { public static String getMac(long mac) { - StringBuilder m = new StringBuilder(Long.toString(mac, 16)); + final StringBuilder builder = new StringBuilder(Long.toString(mac, 16)); - for (int i = m.length(); i < 12; i++) { - m.insert(0, "0"); + for (int i = builder.length(); i < 12; i++) { + builder.insert(0, "0"); } - for (int j = m.length() - 2; j >= 2; j -= 2) { - m.insert(j, ":"); + for (int j = builder.length() - 2; j >= 2; j -= 2) { + builder.insert(j, ":"); } - return m.toString(); + return builder.toString(); } } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolNegotiationFactory.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolNegotiationFactory.java index 23bc6a0ca0..d7b2902c29 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolNegotiationFactory.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolNegotiationFactory.java @@ -27,25 +27,29 @@ public class TesttoolNegotiationFactory extends NetconfServerSessionNegotiatorFa private final Map cachedOperationServices = new HashMap<>(); public TesttoolNegotiationFactory(final Timer timer, final NetconfOperationServiceFactory netconfOperationProvider, - final SessionIdProvider idProvider, final long connectionTimeoutMillis, - final NetconfMonitoringService monitoringService) { - super(timer, netconfOperationProvider, idProvider, connectionTimeoutMillis, monitoringService, NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES); + final SessionIdProvider idProvider, final long connectionTimeoutMillis, + final NetconfMonitoringService monitoringService) { + super(timer, netconfOperationProvider, idProvider, connectionTimeoutMillis, monitoringService, + NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES); } public TesttoolNegotiationFactory(final Timer timer, final NetconfOperationServiceFactory netconfOperationProvider, - final SessionIdProvider idProvider, final long connectionTimeoutMillis, - final NetconfMonitoringService monitoringService, final Set baseCapabilities) { - super(timer, netconfOperationProvider, idProvider, connectionTimeoutMillis, monitoringService, baseCapabilities); + final SessionIdProvider idProvider, final long connectionTimeoutMillis, + final NetconfMonitoringService monitoringService, final Set baseCapabilities) { + super(timer, netconfOperationProvider, idProvider, connectionTimeoutMillis, + monitoringService, baseCapabilities); } @Override - protected NetconfOperationService getOperationServiceForAddress(final String netconfSessionIdForReporting, final SocketAddress socketAddress) { + protected NetconfOperationService getOperationServiceForAddress( + final String netconfSessionIdForReporting, final SocketAddress socketAddress) { if (cachedOperationServices.containsKey(socketAddress)) { LOG.debug("Session {}: Getting cached operation service factory for test tool device on address {}", netconfSessionIdForReporting, socketAddress); return cachedOperationServices.get(socketAddress); } else { - final NetconfOperationService service = getOperationServiceFactory().createService(netconfSessionIdForReporting); + final NetconfOperationService service = getOperationServiceFactory() + .createService(netconfSessionIdForReporting); cachedOperationServices.put(socketAddress, service); LOG.debug("Session {}: Creating new operation service factory for test tool device on address {}", netconfSessionIdForReporting, socketAddress); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolParameters.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolParameters.java index f08daee520..ecd9c1b5a6 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolParameters.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolParameters.java @@ -40,8 +40,10 @@ public class TesttoolParameters { private static final String PORT_KEY = "{PORT}"; private static final String TCP_ONLY = "{TCP_ONLY}"; private static final String ADDRESS_PORT = "{ADDRESS:PORT}"; - private static final String dest = "http://{ADDRESS:PORT}/restconf/config/network-topology:network-topology/topology/topology-netconf/"; - private static final Pattern YANG_FILENAME_PATTERN = Pattern.compile("(?.*)@(?\\d{4}-\\d{2}-\\d{2})\\.yang"); + private static final String DEST = + "http://{ADDRESS:PORT}/restconf/config/network-topology:network-topology/topology/topology-netconf/"; + private static final Pattern YANG_FILENAME_PATTERN = Pattern + .compile("(?.*)@(?\\d{4}-\\d{2}-\\d{2})\\.yang"); private static final Pattern DATE_PATTERN = Pattern.compile("(\\d{4}-\\d{2}-\\d{2})"); private static final String RESOURCE = "/config-template.json"; @@ -97,6 +99,7 @@ public class TesttoolParameters { @Arg(dest = "rpc-config") public File rpcConfig; + @SuppressWarnings("checkstyle:lineLength") static ArgumentParser getParser() { final ArgumentParser parser = ArgumentParsers.newArgumentParser("netconf testtool"); @@ -120,8 +123,8 @@ public class TesttoolParameters { parser.addArgument("--throttle") .type(Integer.class) .setDefault(5000) - .help("Maximum amount of async requests that can be open at a time, " + - "with mutltiple threads this gets divided among all threads") + .help("Maximum amount of async requests that can be open at a time, " + + "with mutltiple threads this gets divided among all threads") .dest("throttle"); parser.addArgument("--auth") @@ -131,10 +134,10 @@ public class TesttoolParameters { parser.addArgument("--controller-destination") .type(String.class) - .help("Ip address and port of controller. Must be in following format : " + - "if available it will be used for spawning netconf connectors via topology configuration as " + - "a part of URI. Example (http:///restconf/config/network-topology:network-topology/topology/topology-netconf/node/)" + - "otherwise it will just start simulated devices and skip the execution of PUT requests") + .help("Ip address and port of controller. Must be in following format : " + + "if available it will be used for spawning netconf connectors via topology configuration as " + + "a part of URI. Example (http:///restconf/config/network-topology:network-topology/topology/topology-netconf/node/)" + + "otherwise it will just start simulated devices and skip the execution of PUT requests") .dest("controller-destination"); parser.addArgument("--device-count") @@ -226,9 +229,9 @@ public class TesttoolParameters { parser.addArgument("-ip") .type(String.class) .setDefault("0.0.0.0") - .help("Ip address which will be used for creating a socket address." + - "It can either be a machine name, such as " + - "java.sun.com, or a textual representation of its IP address.") + .help("Ip address which will be used for creating a socket address." + + "It can either be a machine name, such as " + + "java.sun.com, or a textual representation of its IP address.") .dest("ip"); parser.addArgument("--thread-pool-size") @@ -238,8 +241,8 @@ public class TesttoolParameters { .dest("thread-pool-size"); parser.addArgument("--rpc-config") .type(File.class) - .help("Rpc config file. It can be used to define custom rpc behavior, or override the default one." + - "Usable for testing buggy device behavior.") + .help("Rpc config file. It can be used to define custom rpc behavior, or override the default one." + + "Usable for testing buggy device behavior.") .dest("rpc-config"); return parser; @@ -277,6 +280,7 @@ public class TesttoolParameters { return payloadBuilder.toString(); } + @SuppressWarnings("checkstyle:regexpSinglelineJava") void validate() { if (editContent == null) { stream = TesttoolParameters.class.getResourceAsStream(RESOURCE); @@ -286,7 +290,8 @@ public class TesttoolParameters { } if (controllerDestination != null) { - Preconditions.checkArgument(controllerDestination.contains(":"), "Controller Destination needs to be in a following format :"); + Preconditions.checkArgument(controllerDestination.contains(":"), + "Controller Destination needs to be in a following format :"); final String[] parts = controllerDestination.split(Pattern.quote(":")); Preconditions.checkArgument(Integer.parseInt(parts[1]) > 0, "Port =< 0"); } @@ -323,8 +328,8 @@ public class TesttoolParameters { final File correctNameFile = new File(correctName); file.renameTo(correctNameFile); } - } catch (final IOException e) { + // print error to console (test tool is running from console) e.printStackTrace(); } } @@ -349,7 +354,8 @@ public class TesttoolParameters { throw new IllegalArgumentException("Cannot read content of " + editContent); } - int from, to; + int from; + int to; Iterator iterator; final ArrayList> allThreadsPayloads = new ArrayList<>(); @@ -360,21 +366,25 @@ public class TesttoolParameters { final int leftoverBatchedRequests = (batchedRequests) % threadAmount; final int leftoverRequests = openDevices.size() - (batchedRequests * generateConfigBatchSize); - final StringBuilder destBuilder = new StringBuilder(dest); - destBuilder.replace(destBuilder.indexOf(ADDRESS_PORT), destBuilder.indexOf(ADDRESS_PORT) + ADDRESS_PORT.length(), controllerDestination); + final StringBuilder destBuilder = new StringBuilder(DEST); + destBuilder.replace(destBuilder.indexOf(ADDRESS_PORT), + destBuilder.indexOf(ADDRESS_PORT) + ADDRESS_PORT.length(), + controllerDestination); for (int l = 0; l < threadAmount; l++) { from = l * (batchedRequests * batchedRequestsPerThread); to = from + (batchedRequests * batchedRequestsPerThread); iterator = openDevices.subList(from, to).iterator(); - allThreadsPayloads.add(createBatchedPayloads(batchedRequestsPerThread, iterator, editContentString, destBuilder.toString())); + allThreadsPayloads.add(createBatchedPayloads(batchedRequestsPerThread, iterator, editContentString, + destBuilder.toString())); } ArrayList payloads = null; if (leftoverBatchedRequests > 0) { from = threadAmount * (batchedRequests * batchedRequestsPerThread); to = from + (batchedRequests * batchedRequestsPerThread); iterator = openDevices.subList(from, to).iterator(); - payloads = createBatchedPayloads(leftoverBatchedRequests, iterator, editContentString, destBuilder.toString()); + payloads = createBatchedPayloads(leftoverBatchedRequests, iterator, editContentString, + destBuilder.toString()); } String payload = ""; @@ -382,7 +392,8 @@ public class TesttoolParameters { from = openDevices.size() - leftoverRequests; to = openDevices.size(); iterator = openDevices.subList(from, to).iterator(); - final StringBuilder payloadBuilder = new StringBuilder(prepareMessage(iterator.next(), editContentString)); + final StringBuilder payloadBuilder = new StringBuilder( + prepareMessage(iterator.next(), editContentString)); payload += modifyMessage(payloadBuilder, j, leftoverRequests); } if (leftoverRequests > 0 || leftoverBatchedRequests > 0) { @@ -417,37 +428,48 @@ public class TesttoolParameters { final StringBuilder messageBuilder = new StringBuilder(editContentString); if (editContentString.contains(HOST_KEY)) { - messageBuilder.replace(messageBuilder.indexOf(HOST_KEY), messageBuilder.indexOf(HOST_KEY) + HOST_KEY.length(), generateConfigsAddress); + messageBuilder.replace(messageBuilder.indexOf(HOST_KEY), + messageBuilder.indexOf(HOST_KEY) + HOST_KEY.length(), + generateConfigsAddress); } if (editContentString.contains(PORT_KEY)) { - while (messageBuilder.indexOf(PORT_KEY) != -1) - messageBuilder.replace(messageBuilder.indexOf(PORT_KEY), messageBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), Integer.toString(openDevice)); + while (messageBuilder.indexOf(PORT_KEY) != -1) { + messageBuilder.replace(messageBuilder.indexOf(PORT_KEY), + messageBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), + Integer.toString(openDevice)); + } } if (editContentString.contains(TCP_ONLY)) { - messageBuilder.replace(messageBuilder.indexOf(TCP_ONLY), messageBuilder.indexOf(TCP_ONLY) + TCP_ONLY.length(), Boolean.toString(!ssh)); + messageBuilder.replace(messageBuilder.indexOf(TCP_ONLY), + messageBuilder.indexOf(TCP_ONLY) + TCP_ONLY.length(), + Boolean.toString(!ssh)); } return messageBuilder.toString(); } - private ArrayList createPayloads(final Iterator openDevices, final String editContentString) { + private ArrayList createPayloads(final Iterator openDevices, + final String editContentString) { final ArrayList payloads = new ArrayList<>(); while (openDevices.hasNext()) { - final StringBuilder destBuilder = new StringBuilder(dest); - destBuilder.replace(destBuilder.indexOf(ADDRESS_PORT), destBuilder.indexOf(ADDRESS_PORT) + ADDRESS_PORT.length(), controllerDestination); - payloads.add(new Execution.DestToPayload(destBuilder.toString(), prepareMessage(openDevices.next(), editContentString))); + final StringBuilder destBuilder = new StringBuilder(DEST); + destBuilder.replace(destBuilder.indexOf(ADDRESS_PORT), + destBuilder.indexOf(ADDRESS_PORT) + ADDRESS_PORT.length(), controllerDestination); + payloads.add(new Execution.DestToPayload( + destBuilder.toString(), prepareMessage(openDevices.next(), editContentString))); } return payloads; } - private ArrayList createBatchedPayloads(final int batchedRequestsCount, final Iterator openDevices, final String editContentString, - final String destination) { + private ArrayList createBatchedPayloads(final int batchedRequestsCount, + final Iterator openDevices, final String editContentString, final String destination) { final ArrayList payloads = new ArrayList<>(); for (int i = 0; i < batchedRequestsCount; i++) { String payload = ""; for (int j = 0; j < generateConfigBatchSize; j++) { - final StringBuilder payloadBuilder = new StringBuilder(prepareMessage(openDevices.next(), editContentString)); + final StringBuilder payloadBuilder = new StringBuilder( + prepareMessage(openDevices.next(), editContentString)); payload += modifyMessage(payloadBuilder, j, generateConfigBatchSize); } payloads.add(new Execution.DestToPayload(destination, payload)); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/AsyncExecutionStrategy.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/AsyncExecutionStrategy.java index f6fe447b97..180dad7d12 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/AsyncExecutionStrategy.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/AsyncExecutionStrategy.java @@ -29,7 +29,8 @@ public class AsyncExecutionStrategy implements ExecutionStrategy { private final AsyncHttpClient asyncHttpClient; private final Semaphore semaphore; - AsyncExecutionStrategy(final Parameters params, final AsyncHttpClient asyncHttpClient, final ArrayList payloads) { + AsyncExecutionStrategy(final Parameters params, final AsyncHttpClient asyncHttpClient, + final ArrayList payloads) { this.params = params; this.asyncHttpClient = asyncHttpClient; this.payloads = payloads; diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java index 53296d4080..2f4bf0334f 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/Parameters.java @@ -75,10 +75,10 @@ public class Parameters { parser.addArgument("--destination") .type(String.class) - .setDefault("/restconf/config/network-topology:network-topology/topology/topology-netconf/node/" + - "{DEVICE_PORT}-sim-device/yang-ext:mount/cisco-vpp:vpp/bridge-domains/bridge-domain/a") - .help("Destination to send the requests to after the ip:port part of the uri. " + - "Use {DEVICE_PORT} tag to use the device-port-range-start argument") + .setDefault("/restconf/config/network-topology:network-topology/topology/topology-netconf/node/" + + "{DEVICE_PORT}-sim-device/yang-ext:mount/cisco-vpp:vpp/bridge-domains/bridge-domain/a") + .help("Destination to send the requests to after the ip:port part of the uri. " + + "Use {DEVICE_PORT} tag to use the device-port-range-start argument") .dest("destination"); parser.addArgument("--edits") @@ -105,7 +105,8 @@ public class Parameters { parser.addArgument("--same-device") .type(Boolean.class) .setDefault(true) - .help("If true, every thread edits the device at the first port. If false, n-th thread edits device at n-th port.") + .help("If true, every thread edits the device at the first port. " + + "If false, n-th thread edits device at n-th port.") .dest("same-device"); parser.addArgument("--device-port-range-start") @@ -116,8 +117,8 @@ public class Parameters { parser.addArgument("--throttle") .type(Integer.class) .setDefault(5000) - .help("Maximum amount of async requests that can be open at a time, " + - "with mutltiple threads this gets divided among all threads") + .help("Maximum amount of async requests that can be open at a time, " + + "with mutltiple threads this gets divided among all threads") .dest("throttle"); parser.addArgument("--auth") diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java index fed504abb0..787aa7f4ba 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/PerfClientCallable.java @@ -19,8 +19,7 @@ import org.opendaylight.netconf.test.tool.client.stress.ExecutionStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class PerfClientCallable implements Callable{ - +public class PerfClientCallable implements Callable { private static final Logger LOG = LoggerFactory.getLogger(PerfClientCallable.class); private final Parameters params; @@ -43,7 +42,7 @@ public class PerfClientCallable implements Callable{ .setBody(payload.getPayload()) .setRequestTimeout(Integer.MAX_VALUE); - if(params.auth != null) { + if (params.auth != null) { requestBuilder.setRealm(new Realm.RealmBuilder() .setScheme(Realm.AuthScheme.BASIC) .setPrincipal(params.auth.get(0)) @@ -64,8 +63,7 @@ public class PerfClientCallable implements Callable{ } @Override - public Void call() throws Exception{ - + public Void call() throws Exception { executionStrategy.invoke(); asyncHttpClient.closeAsynchronously(); return null; diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/RestPerfClient.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/RestPerfClient.java index 518b48eb48..97b19f909e 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/RestPerfClient.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/RestPerfClient.java @@ -38,7 +38,7 @@ public class RestPerfClient { private static final String PHYS_ADDR_PLACEHOLDER = "{PHYS_ADDR}"; - private static final String dest = "http://{HOST}:{PORT}"; + private static final String DEST = "http://{HOST}:{PORT}"; private static long macStart = 0xAABBCCDD0000L; @@ -49,7 +49,7 @@ public class RestPerfClient { private final String destination; private final String payload; - public DestToPayload(String destination, String payload) { + DestToPayload(String destination, String payload) { this.destination = destination; this.payload = payload; } @@ -91,34 +91,58 @@ public class RestPerfClient { for (int i = 0; i < threadAmount; i++) { final ArrayList payloads = new ArrayList<>(); for (int j = 0; j < requestsPerThread; j++) { - final int devicePort = parameters.sameDevice ? parameters.devicePortRangeStart : parameters.devicePortRangeStart + i; - final StringBuilder destBuilder = new StringBuilder(dest); - destBuilder.replace(destBuilder.indexOf(HOST_KEY), destBuilder.indexOf(HOST_KEY) + HOST_KEY.length(), parameters.ip) - .replace(destBuilder.indexOf(PORT_KEY), destBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), parameters.port + ""); + final int devicePort = parameters.sameDevice + ? parameters.devicePortRangeStart : parameters.devicePortRangeStart + i; + final StringBuilder destBuilder = new StringBuilder(DEST); + destBuilder.replace( + destBuilder.indexOf(HOST_KEY), + destBuilder.indexOf(HOST_KEY) + HOST_KEY.length(), + parameters.ip) + .replace( + destBuilder.indexOf(PORT_KEY), + destBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), + parameters.port + ""); final StringBuilder suffixBuilder = new StringBuilder(parameters.destination); if (suffixBuilder.indexOf(DEVICE_PORT_KEY) != -1) { - suffixBuilder.replace(suffixBuilder.indexOf(DEVICE_PORT_KEY), suffixBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(), devicePort + ""); + suffixBuilder.replace( + suffixBuilder.indexOf(DEVICE_PORT_KEY), + suffixBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(), + devicePort + ""); } destBuilder.append(suffixBuilder); - payloads.add(new DestToPayload(destBuilder.toString(), prepareMessage(i, j, editContentString, devicePort))); + payloads.add( + new DestToPayload(destBuilder.toString(), prepareMessage(i, j, editContentString, devicePort))); } allThreadsPayloads.add(payloads); } for (int i = 0; i < leftoverRequests; i++) { - ArrayList payloads = allThreadsPayloads.get(allThreadsPayloads.size() - 1); - - final int devicePort = parameters.sameDevice ? parameters.devicePortRangeStart : parameters.devicePortRangeStart + threadAmount - 1; - final StringBuilder destBuilder = new StringBuilder(dest); - destBuilder.replace(destBuilder.indexOf(HOST_KEY), destBuilder.indexOf(HOST_KEY) + HOST_KEY.length(), parameters.ip) - .replace(destBuilder.indexOf(PORT_KEY), destBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), parameters.port + ""); + final int devicePort = parameters.sameDevice + ? parameters.devicePortRangeStart : parameters.devicePortRangeStart + threadAmount - 1; + final StringBuilder destBuilder = new StringBuilder(DEST); + destBuilder.replace( + destBuilder.indexOf(HOST_KEY), + destBuilder.indexOf(HOST_KEY) + HOST_KEY.length(), + parameters.ip) + .replace( + destBuilder.indexOf(PORT_KEY), + destBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), + parameters.port + ""); final StringBuilder suffixBuilder = new StringBuilder(parameters.destination); if (suffixBuilder.indexOf(DEVICE_PORT_KEY) != -1) { - suffixBuilder.replace(suffixBuilder.indexOf(DEVICE_PORT_KEY), suffixBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(), devicePort + ""); + suffixBuilder.replace( + suffixBuilder.indexOf(DEVICE_PORT_KEY), + suffixBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(), + devicePort + ""); } destBuilder.append(suffixBuilder); - payloads.add(new DestToPayload(destBuilder.toString(), prepareMessage(threadAmount - 1, requestsPerThread + i, editContentString, devicePort))); + + final ArrayList payloads = allThreadsPayloads.get(allThreadsPayloads.size() - 1); + payloads.add( + new DestToPayload( + destBuilder.toString(), + prepareMessage(threadAmount - 1, requestsPerThread + i, editContentString, devicePort))); } final ArrayList callables = new ArrayList<>(); @@ -132,7 +156,8 @@ public class RestPerfClient { boolean allThreadsCompleted = true; final Stopwatch started = Stopwatch.createStarted(); try { - final List> futures = executorService.invokeAll(callables, parameters.timeout, TimeUnit.MINUTES); + final List> futures = executorService.invokeAll( + callables, parameters.timeout, TimeUnit.MINUTES); for (int i = 0; i < futures.size(); i++) { Future future = futures.get(i); if (future.isCancelled()) { @@ -157,8 +182,9 @@ public class RestPerfClient { LOG.info("FINISHED. Execution time: {}", started); // If some threads failed or timed out, skip calculation of requests per second value // and do not log it - if(allThreadsCompleted) { - LOG.info("Requests per second: {}", (parameters.editCount * 1000.0 / started.elapsed(TimeUnit.MILLISECONDS))); + if (allThreadsCompleted) { + LOG.info( + "Requests per second: {}", (parameters.editCount * 1000.0 / started.elapsed(TimeUnit.MILLISECONDS))); } System.exit(0); } @@ -176,15 +202,25 @@ public class RestPerfClient { return null; } - private static String prepareMessage(final int idi, final int idj, final String editContentString, final int devicePort) { + private static String prepareMessage(final int idi, final int idj, final String editContentString, + final int devicePort) { StringBuilder messageBuilder = new StringBuilder(editContentString); if (editContentString.contains(PEER_KEY)) { - messageBuilder.replace(messageBuilder.indexOf(PEER_KEY), messageBuilder.indexOf(PEER_KEY) + PEER_KEY.length(), Integer.toString(idi)) - .replace(messageBuilder.indexOf(INT_LEAF_KEY), messageBuilder.indexOf(INT_LEAF_KEY) + INT_LEAF_KEY.length(), Integer.toString(idj)); + messageBuilder.replace( + messageBuilder.indexOf(PEER_KEY), + messageBuilder.indexOf(PEER_KEY) + PEER_KEY.length(), + Integer.toString(idi)) + .replace( + messageBuilder.indexOf(INT_LEAF_KEY), + messageBuilder.indexOf(INT_LEAF_KEY) + INT_LEAF_KEY.length(), + Integer.toString(idj)); } if (messageBuilder.indexOf(DEVICE_PORT_KEY) != -1) { - messageBuilder.replace(messageBuilder.indexOf(DEVICE_PORT_KEY), messageBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(), Integer.toString(devicePort)); + messageBuilder.replace( + messageBuilder.indexOf(DEVICE_PORT_KEY), + messageBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(), + Integer.toString(devicePort)); } int idx = messageBuilder.indexOf(PHYS_ADDR_PLACEHOLDER); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/SyncExecutionStrategy.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/SyncExecutionStrategy.java index 6d646874aa..d8d6002095 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/SyncExecutionStrategy.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/http/perf/SyncExecutionStrategy.java @@ -26,7 +26,8 @@ public class SyncExecutionStrategy implements ExecutionStrategy { private final ArrayList payloads; private final AsyncHttpClient asyncHttpClient; - SyncExecutionStrategy(final Parameters params, final AsyncHttpClient asyncHttpClient, final ArrayList payloads) { + SyncExecutionStrategy(final Parameters params, final AsyncHttpClient asyncHttpClient, + final ArrayList payloads) { this.params = params; this.asyncHttpClient = asyncHttpClient; this.payloads = payloads; diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AbstractExecutionStrategy.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AbstractExecutionStrategy.java index f984875ebc..b59df5495b 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AbstractExecutionStrategy.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AbstractExecutionStrategy.java @@ -20,7 +20,8 @@ abstract class AbstractExecutionStrategy implements ExecutionStrategy { private final List editBatches; private final int editAmount; - public AbstractExecutionStrategy(final Parameters params, final List editConfigMsgs, final NetconfDeviceCommunicator sessionListener) { + AbstractExecutionStrategy(final Parameters params, final List editConfigMsgs, + final NetconfDeviceCommunicator sessionListener) { editAmount = editConfigMsgs.size(); this.params = params; this.preparedMessages = editConfigMsgs; diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AsyncExecutionStrategy.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AsyncExecutionStrategy.java index 5c1586c163..4bfd765ab4 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AsyncExecutionStrategy.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/AsyncExecutionStrategy.java @@ -26,7 +26,8 @@ import org.slf4j.LoggerFactory; class AsyncExecutionStrategy extends AbstractExecutionStrategy { private static final Logger LOG = LoggerFactory.getLogger(AsyncExecutionStrategy.class); - public AsyncExecutionStrategy(final Parameters params, final List editConfigMsgs, final NetconfDeviceCommunicator sessionListener) { + AsyncExecutionStrategy(final Parameters params, final List editConfigMsgs, + final NetconfDeviceCommunicator sessionListener) { super(params, editConfigMsgs, sessionListener); } @@ -41,7 +42,7 @@ class AsyncExecutionStrategy extends AbstractExecutionStrategy { final int msgId = i + (batchI * getParams().editBatchSize); final NetconfMessage msg = getPreparedMessages().get(msgId); LOG.debug("Sending message {}", msgId); - if(LOG.isDebugEnabled()) { + if (LOG.isDebugEnabled()) { LOG.debug("Sending message {}", XmlUtil.toString(msg.getDocument())); } final ListenableFuture> netconfMessageFuture = @@ -59,8 +60,9 @@ class AsyncExecutionStrategy extends AbstractExecutionStrategy { // Wait for every future for (final ListenableFuture> future : futures) { try { - final RpcResult netconfMessageRpcResult = future.get(getParams().msgTimeout, TimeUnit.SECONDS); - if(netconfMessageRpcResult.isSuccessful()) { + final RpcResult netconfMessageRpcResult = future.get( + getParams().msgTimeout, TimeUnit.SECONDS); + if (netconfMessageRpcResult.isSuccessful()) { responseCounter.incrementAndGet(); LOG.debug("Received response {}", responseCounter.get()); } else { @@ -73,7 +75,9 @@ class AsyncExecutionStrategy extends AbstractExecutionStrategy { } } - Preconditions.checkState(responseCounter.get() == getEditAmount() + (getParams().candidateDatastore ? getEditBatches().size() : 0), - "Not all responses were received, only %s from %s", responseCounter.get(), getParams().editCount + getEditBatches().size()); + Preconditions.checkState( + responseCounter.get() == getEditAmount() + (getParams().candidateDatastore ? getEditBatches().size() : 0), + "Not all responses were received, only %s from %s", + responseCounter.get(), getParams().editCount + getEditBatches().size()); } } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/ConfigurableClientDispatcher.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/ConfigurableClientDispatcher.java index 15611715b1..ab10fca2d0 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/ConfigurableClientDispatcher.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/ConfigurableClientDispatcher.java @@ -19,41 +19,51 @@ public class ConfigurableClientDispatcher extends NetconfClientDispatcherImpl { private final Set capabilities; - private ConfigurableClientDispatcher(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, final Timer timer, final Set capabilities) { + private ConfigurableClientDispatcher(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, + final Timer timer, final Set capabilities) { super(bossGroup, workerGroup, timer); this.capabilities = capabilities; } /** - * EXI + chunked framing + * EXI + chunked framing. */ - public static ConfigurableClientDispatcher createChunkedExi(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, final Timer timer) { - return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, NetconfClientSessionNegotiatorFactory.EXI_CLIENT_CAPABILITIES); + public static ConfigurableClientDispatcher createChunkedExi(final EventLoopGroup bossGroup, + final EventLoopGroup workerGroup, final Timer timer) { + return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, + NetconfClientSessionNegotiatorFactory.EXI_CLIENT_CAPABILITIES); } /** - * EXI + ]]gt;]]gt; framing + * EXI + ]]gt;]]gt; framing. */ - public static ConfigurableClientDispatcher createLegacyExi(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, final Timer timer) { - return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, NetconfClientSessionNegotiatorFactory.LEGACY_EXI_CLIENT_CAPABILITIES); + public static ConfigurableClientDispatcher createLegacyExi(final EventLoopGroup bossGroup, + final EventLoopGroup workerGroup, final Timer timer) { + return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, + NetconfClientSessionNegotiatorFactory.LEGACY_EXI_CLIENT_CAPABILITIES); } /** - * Chunked framing + * Chunked framing. */ - public static ConfigurableClientDispatcher createChunked(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, final Timer timer) { - return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, NetconfClientSessionNegotiatorFactory.DEFAULT_CLIENT_CAPABILITIES); + public static ConfigurableClientDispatcher createChunked(final EventLoopGroup bossGroup, + final EventLoopGroup workerGroup, final Timer timer) { + return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, + NetconfClientSessionNegotiatorFactory.DEFAULT_CLIENT_CAPABILITIES); } /** - * ]]gt;]]gt; framing + * ]]gt;]]gt; framing. */ - public static ConfigurableClientDispatcher createLegacy(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, final Timer timer) { - return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, NetconfClientSessionNegotiatorFactory.LEGACY_FRAMING_CLIENT_CAPABILITIES); + public static ConfigurableClientDispatcher createLegacy(final EventLoopGroup bossGroup, + final EventLoopGroup workerGroup, final Timer timer) { + return new ConfigurableClientDispatcher(bossGroup, workerGroup, timer, + NetconfClientSessionNegotiatorFactory.LEGACY_FRAMING_CLIENT_CAPABILITIES); } @Override protected NetconfClientSessionNegotiatorFactory getNegotiatorFactory(final NetconfClientConfiguration cfg) { - return new NetconfClientSessionNegotiatorFactory(getTimer(), cfg.getAdditionalHeader(), cfg.getConnectionTimeoutMillis(), capabilities); + return new NetconfClientSessionNegotiatorFactory(getTimer(), cfg.getAdditionalHeader(), + cfg.getConnectionTimeoutMillis(), capabilities); } } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClient.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClient.java index e32c99c10e..7d1fbcb761 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClient.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClient.java @@ -53,41 +53,42 @@ public final class StressClient { static { try { - COMMIT_MSG = new NetconfMessage(XmlUtil.readXmlToDocument("\n" + - " \n" + - "")); - } catch (SAXException | IOException e) { + COMMIT_MSG = new NetconfMessage(XmlUtil.readXmlToDocument( + "\n" + + " \n" + + "")); + } catch (final SAXException | IOException e) { throw new ExceptionInInitializerError(e); } } static final QName EDIT_QNAME = QName.create(EditConfigInput.QNAME, "edit-config"); - static final org.w3c.dom.Document editCandidateBlueprint; - static final org.w3c.dom.Document editRunningBlueprint; + static final org.w3c.dom.Document EDIT_CANDIDATE_BLUEPRINT; + static final org.w3c.dom.Document EDIT_RUNNING_BLUEPRINT; static { try { - editCandidateBlueprint = XmlUtil.readXmlToDocument( - "\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " none" + - " \n" + - " \n" + - ""); - - editRunningBlueprint = XmlUtil.readXmlToDocument( - "\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " none" + - " \n" + - " \n" + - ""); + EDIT_CANDIDATE_BLUEPRINT = XmlUtil.readXmlToDocument( + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " none" + + " \n" + + " \n" + + ""); + + EDIT_RUNNING_BLUEPRINT = XmlUtil.readXmlToDocument( + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " none" + + " \n" + + " \n" + + ""); } catch (SAXException | IOException e) { throw new ExceptionInInitializerError(e); } @@ -105,7 +106,8 @@ public final class StressClient { params = parseArgs(args, Parameters.getParser()); params.validate(); - final ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + final ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory + .getLogger(Logger.ROOT_LOGGER_NAME); root.setLevel(params.debug ? Level.DEBUG : Level.INFO); final int threadAmount = params.threadAmount; @@ -193,7 +195,8 @@ public final class StressClient { } static NetconfMessage prepareMessage(final int id, final String editContentString) { - final Document msg = XmlUtil.createDocumentCopy(params.candidateDatastore ? editCandidateBlueprint : editRunningBlueprint); + final Document msg = XmlUtil.createDocumentCopy( + params.candidateDatastore ? EDIT_CANDIDATE_BLUEPRINT : EDIT_RUNNING_BLUEPRINT); msg.getDocumentElement().setAttribute("message-id", Integer.toString(id)); final NetconfMessage netconfMessage = new NetconfMessage(msg); @@ -204,15 +207,15 @@ public final class StressClient { final StringBuilder stringBuilder = new StringBuilder(specificEditContent); int idx = stringBuilder.indexOf(PHYS_ADDR_PLACEHOLDER); - while (idx!= -1) { + while (idx != -1) { stringBuilder.replace(idx, idx + PHYS_ADDR_PLACEHOLDER.length(), TestToolUtils.getMac(macStart++)); idx = stringBuilder.indexOf(PHYS_ADDR_PLACEHOLDER); } specificEditContent = stringBuilder.toString(); editContentElement = XmlUtil.readXmlToElement(specificEditContent); - final Node config = ((Element) msg.getDocumentElement().getElementsByTagName("edit-config").item(0)). - getElementsByTagName("config").item(0); + final Node config = ((Element) msg.getDocumentElement().getElementsByTagName("edit-config").item(0)) + .getElementsByTagName("config").item(0); config.appendChild(msg.importNode(editContentElement, true)); } catch (final IOException | SAXException e) { throw new IllegalArgumentException("Edit content file is unreadable", e); @@ -221,16 +224,17 @@ public final class StressClient { return netconfMessage; } - private static NetconfClientDispatcherImpl configureClientDispatcher(final Parameters params, final NioEventLoopGroup nioGroup, final Timer timer) { + private static NetconfClientDispatcherImpl configureClientDispatcher(final Parameters params, + final NioEventLoopGroup nioGroup, final Timer timer) { final NetconfClientDispatcherImpl netconfClientDispatcher; - if(params.exi) { - if(params.legacyFraming) { - netconfClientDispatcher= ConfigurableClientDispatcher.createLegacyExi(nioGroup, nioGroup, timer); + if (params.exi) { + if (params.legacyFraming) { + netconfClientDispatcher = ConfigurableClientDispatcher.createLegacyExi(nioGroup, nioGroup, timer); } else { netconfClientDispatcher = ConfigurableClientDispatcher.createChunkedExi(nioGroup, nioGroup, timer); } } else { - if(params.legacyFraming) { + if (params.legacyFraming) { netconfClientDispatcher = ConfigurableClientDispatcher.createLegacy(nioGroup, nioGroup, timer); } else { netconfClientDispatcher = ConfigurableClientDispatcher.createChunked(nioGroup, nioGroup, timer); @@ -252,10 +256,11 @@ public final class StressClient { return null; } - - static class LoggingRemoteDevice implements RemoteDevice { + static class LoggingRemoteDevice + implements RemoteDevice { @Override - public void onRemoteSessionUp(final NetconfSessionPreferences remoteSessionCapabilities, final NetconfDeviceCommunicator netconfDeviceCommunicator) { + public void onRemoteSessionUp(final NetconfSessionPreferences remoteSessionCapabilities, + final NetconfDeviceCommunicator netconfDeviceCommunicator) { LOG.info("Session established"); } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClientCallable.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClientCallable.java index 39161c3769..edaa188032 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClientCallable.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/StressClientCallable.java @@ -28,7 +28,7 @@ import org.opendaylight.protocol.framework.NeverReconnectStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class StressClientCallable implements Callable{ +public class StressClientCallable implements Callable { private static final Logger LOG = LoggerFactory.getLogger(StressClientCallable.class); @@ -65,37 +65,46 @@ public class StressClientCallable implements Callable{ return true; } - private static ExecutionStrategy getExecutionStrategy(final Parameters params, final List preparedMessages, final NetconfDeviceCommunicator sessionListener) { - if(params.async) { + private static ExecutionStrategy getExecutionStrategy(final Parameters params, + final List preparedMessages, final NetconfDeviceCommunicator sessionListener) { + if (params.async) { return new AsyncExecutionStrategy(params, preparedMessages, sessionListener); } else { return new SyncExecutionStrategy(params, preparedMessages, sessionListener); } } - private static NetconfDeviceCommunicator getSessionListener(final InetSocketAddress inetAddress, final int messageLimit) { - final RemoteDevice loggingRemoteDevice = new StressClient.LoggingRemoteDevice(); - return new NetconfDeviceCommunicator(new RemoteDeviceId("secure-test", inetAddress), loggingRemoteDevice, messageLimit); + private static NetconfDeviceCommunicator getSessionListener( + final InetSocketAddress inetAddress, final int messageLimit) { + final RemoteDevice loggingRemoteDevice = + new StressClient.LoggingRemoteDevice(); + return new NetconfDeviceCommunicator( + new RemoteDeviceId("secure-test", inetAddress), loggingRemoteDevice, messageLimit); } - private static NetconfClientConfiguration getNetconfClientConfiguration(final Parameters params, final NetconfDeviceCommunicator sessionListener) { - final NetconfClientConfigurationBuilder netconfClientConfigurationBuilder = NetconfClientConfigurationBuilder.create(); + private static NetconfClientConfiguration getNetconfClientConfiguration(final Parameters params, + final NetconfDeviceCommunicator sessionListener) { + final NetconfClientConfigurationBuilder netconfClientConfigurationBuilder = NetconfClientConfigurationBuilder + .create(); netconfClientConfigurationBuilder.withSessionListener(sessionListener); netconfClientConfigurationBuilder.withAddress(params.getInetAddress()); - if(params.tcpHeader != null) { + if (params.tcpHeader != null) { final String header = params.tcpHeader.replaceAll("\"", "").trim() + "\n"; - netconfClientConfigurationBuilder.withAdditionalHeader(new NetconfHelloMessageAdditionalHeader(null, null, null, null, null) { - @Override - public String toFormattedString() { - LOG.debug("Sending TCP header {}", header); - return header; - } - }); + netconfClientConfigurationBuilder.withAdditionalHeader( + new NetconfHelloMessageAdditionalHeader(null, null, null, null, null) { + @Override + public String toFormattedString() { + LOG.debug("Sending TCP header {}", header); + return header; + } + }); } - netconfClientConfigurationBuilder.withProtocol(params.ssh ? NetconfClientConfiguration.NetconfClientProtocol.SSH : NetconfClientConfiguration.NetconfClientProtocol.TCP); + 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)); + netconfClientConfigurationBuilder.withReconnectStrategy( + new NeverReconnectStrategy(GlobalEventExecutor.INSTANCE, 5000)); return netconfClientConfigurationBuilder.build(); } } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/SyncExecutionStrategy.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/SyncExecutionStrategy.java index fffeb600de..e0f13da038 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/SyncExecutionStrategy.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/client/stress/SyncExecutionStrategy.java @@ -25,7 +25,8 @@ import org.slf4j.LoggerFactory; class SyncExecutionStrategy extends AbstractExecutionStrategy { private static final Logger LOG = LoggerFactory.getLogger(SyncExecutionStrategy.class); - public SyncExecutionStrategy(final Parameters params, final List preparedMessages, final NetconfDeviceCommunicator sessionListener) { + SyncExecutionStrategy(final Parameters params, final List preparedMessages, + final NetconfDeviceCommunicator sessionListener) { super(params, preparedMessages, sessionListener); } @@ -38,7 +39,7 @@ class SyncExecutionStrategy extends AbstractExecutionStrategy { final int msgId = i + (batchI * getParams().editBatchSize); final NetconfMessage msg = getPreparedMessages().get(msgId); LOG.debug("Sending message {}", msgId); - if(LOG.isDebugEnabled()) { + if (LOG.isDebugEnabled()) { LOG.debug("Sending message {}", XmlUtil.toString(msg.getDocument())); } final ListenableFuture> netconfMessageFuture = @@ -57,11 +58,14 @@ class SyncExecutionStrategy extends AbstractExecutionStrategy { } } - Preconditions.checkState(responseCounter.get() == getEditAmount() + (getParams().candidateDatastore ? getEditBatches().size() : 0), - "Not all responses were received, only %s from %s", responseCounter.get(), getParams().editCount + getEditBatches().size()); + Preconditions.checkState( + responseCounter.get() == getEditAmount() + (getParams().candidateDatastore ? getEditBatches().size() : 0), + "Not all responses were received, only %s from %s", + responseCounter.get(), getParams().editCount + getEditBatches().size()); } - private void waitForResponse(AtomicInteger responseCounter, final ListenableFuture> netconfMessageFuture) { + private void waitForResponse(final AtomicInteger responseCounter, + final ListenableFuture> netconfMessageFuture) { try { final RpcResult netconfMessageRpcResult = netconfMessageFuture.get(getParams().msgTimeout, TimeUnit.SECONDS); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/customrpc/RpcMapping.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/customrpc/RpcMapping.java index 5d3f7eb14c..2edab7e0a7 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/customrpc/RpcMapping.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/customrpc/RpcMapping.java @@ -85,14 +85,14 @@ class RpcMapping { } @Override - public boolean equals(final Object o) { - if (this == o) { + public boolean equals(final Object obj) { + if (this == obj) { return true; } - if (o == null || getClass() != o.getClass()) { + if (obj == null || getClass() != obj.getClass()) { return false; } - final Request request = (Request) o; + final Request request = (Request) obj; return documentEquals(this.xmlElement, request.xmlElement); } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCommit.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCommit.java index 1d0aab8f38..15204fe4b6 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCommit.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCommit.java @@ -24,7 +24,8 @@ public class SimulatedCommit extends AbstractConfigNetconfOperation { } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCreateSubscription.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCreateSubscription.java index 1d4040a384..9ec5795de2 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCreateSubscription.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedCreateSubscription.java @@ -48,15 +48,16 @@ public class SimulatedCreateSubscription extends AbstractLastNetconfOperation im Optional notifications; - if(notificationsFile.isPresent()) { + if (notificationsFile.isPresent()) { notifications = Optional.of(loadNotifications(notificationsFile.get())); scheduledExecutorService = Executors.newScheduledThreadPool(1); } else { notifications = Optional.absent(); } - if(notifications.isPresent()) { - Map preparedMessages = Maps.newHashMapWithExpectedSize(notifications.get().getNotificationList().size()); + if (notifications.isPresent()) { + Map preparedMessages = Maps.newHashMapWithExpectedSize( + notifications.get().getNotificationList().size()); for (final Notification notification : notifications.get().getNotificationList()) { final NetconfMessage parsedNotification = parseNetconfNotification(notification.getContent()); preparedMessages.put(notification, parsedNotification); @@ -89,7 +90,8 @@ public class SimulatedCreateSubscription extends AbstractLastNetconfOperation im } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { long delayAggregator = 0; for (final Map.Entry notification : notifications.entrySet()) { @@ -113,7 +115,7 @@ public class SimulatedCreateSubscription extends AbstractLastNetconfOperation im final int startEventTime = content.indexOf("") + "".length(); final int endEventTime = content.indexOf(""); final String eventTime = content.substring(startEventTime, endEventTime); - if(eventTime.equals("XXXX")) { + if (eventTime.equals("XXXX")) { content = content.replace(eventTime, new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(new Date())); } @@ -125,8 +127,8 @@ public class SimulatedCreateSubscription extends AbstractLastNetconfOperation im } @Override - public void setNetconfSession(final NetconfServerSession s) { - this.session = s; + public void setNetconfSession(final NetconfServerSession session) { + this.session = session; } @XmlRootElement(name = "notifications") diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedDiscardChanges.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedDiscardChanges.java index cf9c99e879..83bcb9545e 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedDiscardChanges.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedDiscardChanges.java @@ -24,8 +24,9 @@ public class SimulatedDiscardChanges extends AbstractConfigNetconfOperation { } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { - return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { + return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } @Override diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedEditConfig.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedEditConfig.java index dc55450720..fd8c49838d 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedEditConfig.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedEditConfig.java @@ -31,11 +31,12 @@ public class SimulatedEditConfig extends AbstractConfigNetconfOperation { } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { final XmlElement configElementData = operationElement.getOnlyChildElement(XmlNetconfConstants.CONFIG_KEY); containsDelete(configElementData); - if(containsDelete(configElementData)){ + if (containsDelete(configElementData)) { storage.resetConfigList(); } else { storage.setConfigList(configElementData.getChildElements()); diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java index 5675fa26a2..0f19b11798 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java @@ -27,10 +27,11 @@ public class SimulatedGet extends AbstractConfigNetconfOperation { } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { - final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { + final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); - for(final XmlElement e : storage.getConfigList()) { + for (final XmlElement e : storage.getConfigList()) { final Element domElement = e.getDomElement(); element.appendChild(element.getOwnerDocument().importNode(domElement, true)); } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConfig.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConfig.java index 51976445c2..e6db368b92 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConfig.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConfig.java @@ -30,20 +30,20 @@ public class SimulatedGetConfig extends AbstractConfigNetconfOperation { private static final Logger LOG = LoggerFactory .getLogger(SimulatedGetConfig.class); - public SimulatedGetConfig(final String netconfSessionIdForReporting, final DataList storage, final Optional initialConfigXMLFile) { + public SimulatedGetConfig(final String netconfSessionIdForReporting, final DataList storage, + final Optional initialConfigXMLFile) { super(null, netconfSessionIdForReporting); - if(initialConfigXMLFile.isPresent()) { + if (initialConfigXMLFile.isPresent()) { LOG.info("File is present: {}", initialConfigXMLFile.get() .getName()); this.storage = loadInitialConfigXMLFile(initialConfigXMLFile.get()); - } - else { + } else { this.storage = storage; } } - private final DataList loadInitialConfigXMLFile( final File file ) { + private DataList loadInitialConfigXMLFile(final File file) { LOG.info("Loading initial config xml file: {}", file.getName()); DataList configData = new DataList(); List xmlElementList = Collections.emptyList(); @@ -52,22 +52,21 @@ public class SimulatedGetConfig extends AbstractConfigNetconfOperation { XmlElement xmlElement = XmlElement.fromDomElement(element); xmlElementList = xmlElement.getChildElements(); configData.setConfigList(xmlElementList); - } - catch (IOException e) { + } catch (IOException e) { LOG.info("IO exception loading xml file: {} ", e.getMessage()); - } - catch (SAXException e) { + } catch (SAXException e) { LOG.info("SAXException {}", e.getMessage()); } return configData; } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { - final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { + final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); - for(final XmlElement e : storage.getConfigList()) { + for (final XmlElement e : storage.getConfigList()) { final Element domElement = e.getDomElement(); element.appendChild(element.getOwnerDocument().importNode(domElement, true)); } diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedLock.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedLock.java index 0ebd5cc6a5..ffb9d4d65d 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedLock.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedLock.java @@ -24,8 +24,9 @@ public class SimulatedLock extends AbstractConfigNetconfOperation { } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { - return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { + return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } @Override diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedUnLock.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedUnLock.java index 25ed040e76..6c709e6368 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedUnLock.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedUnLock.java @@ -24,7 +24,8 @@ public class SimulatedUnLock extends AbstractConfigNetconfOperation { } @Override - protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws DocumentedException { + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) + throws DocumentedException { return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } -- 2.36.6