X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Ftools%2Fnetconf-testtool%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Ftest%2Ftool%2Fclient%2Fhttp%2Fperf%2FRestPerfClient.java;h=55580f6bed01261615629ac42a3edb3cfae716e6;hb=676b7818fd81f1322b7e8aa977271f3a3af397a6;hp=6dc684780fdb4c8b4d7e6d097460235b17b8222c;hpb=6dcc85f57e6ca3b074bd8f48d53f661daf47fe2c;p=netconf.git 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 6dc684780f..55580f6bed 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 @@ -8,11 +8,11 @@ package org.opendaylight.netconf.test.tool.client.http.perf; - -import com.google.common.base.Charsets; import com.google.common.base.Stopwatch; import com.google.common.io.Files; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -26,7 +26,8 @@ import org.opendaylight.netconf.test.tool.TestToolUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RestPerfClient { +@SuppressFBWarnings("DM_EXIT") +public final class RestPerfClient { private static final Logger LOG = LoggerFactory.getLogger(RestPerfClient.class); @@ -39,7 +40,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; @@ -50,7 +51,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; } @@ -64,7 +65,11 @@ public class RestPerfClient { } } - public static void main(String[] args) throws IOException { + private RestPerfClient() { + + } + + public static void main(String[] args) { Parameters parameters = parseArgs(args, Parameters.getParser()); parameters.validate(); @@ -76,9 +81,9 @@ public class RestPerfClient { final String editContentString; try { - editContentString = Files.toString(parameters.editContent, Charsets.UTF_8); + editContentString = Files.toString(parameters.editContent, StandardCharsets.UTF_8); } catch (final IOException e) { - throw new IllegalArgumentException("Cannot read content of " + parameters.editContent); + throw new IllegalArgumentException("Cannot read content of " + parameters.editContent, e); } final int threadAmount = parameters.threadAmount; @@ -92,34 +97,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))); + 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))); + + 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<>(); @@ -133,7 +162,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()) { @@ -158,8 +188,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); } @@ -177,11 +208,25 @@ public class RestPerfClient { return null; } - private static String prepareMessage(final int idi, final int idj, final String editContentString) { + 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)); } int idx = messageBuilder.indexOf(PHYS_ADDR_PLACEHOLDER);