summaryrefslogtreecommitdiffstats
path: root/vespa-feed-client-cli/src
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-05-27 16:37:53 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-05-27 16:37:53 +0200
commitcf82ff60e85efb24517551d0450d6647bb0aa651 (patch)
treed1b147ac5e7f751ec1361e9be82c9e29e9acb3e0 /vespa-feed-client-cli/src
parenta6130bd49cf86df4a81aacaa068583d41723956a (diff)
Add benchmark mode to JsonStreamFeeder + CliClient wiring
Diffstat (limited to 'vespa-feed-client-cli/src')
-rw-r--r--vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java29
1 files changed, 26 insertions, 3 deletions
diff --git a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java
index d20a9bed286..4e0640bc891 100644
--- a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java
+++ b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java
@@ -1,6 +1,9 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
import java.io.BufferedInputStream;
@@ -47,17 +50,25 @@ public class CliClient {
systemOut.println(Vespa.VERSION);
return 0;
}
- try (InputStream in = createFeedInputStream(cliArgs); JsonStreamFeeder feeder = createJsonFeeder(cliArgs)) {
- feeder.feed(in);
+ try (InputStream in = createFeedInputStream(cliArgs);
+ JsonStreamFeeder feeder = createJsonFeeder(cliArgs)) {
+ if (cliArgs.benchmarkModeEnabled()) {
+ printBenchmarkResult(feeder.benchmark(in));
+ } else {
+ feeder.feed(in);
+ }
}
return 0;
} catch (CliArguments.CliArgumentsException | IOException e) {
boolean verbose = cliArgs != null && cliArgs.verboseSpecified();
return handleException(verbose, e);
+ } catch (Exception e) {
+ boolean verbose = cliArgs != null && cliArgs.verboseSpecified();
+ return handleException(verbose, "Unknown failure: " + e.getMessage(), e);
}
}
- private static FeedClient createFeedClient(CliArguments cliArgs) throws CliArguments.CliArgumentsException, IOException {
+ private static FeedClient createFeedClient(CliArguments cliArgs) throws CliArguments.CliArgumentsException {
FeedClientBuilder builder = FeedClientBuilder.create(cliArgs.endpoint());
cliArgs.connections().ifPresent(builder::setMaxConnections);
cliArgs.maxStreamsPerConnection().ifPresent(builder::setMaxConnections);
@@ -84,6 +95,18 @@ public class CliClient {
cliArgs.readFeedFromStandardInput() ? systemIn : Files.newInputStream(cliArgs.inputFile().get()));
}
+ private void printBenchmarkResult(JsonStreamFeeder.BenchmarkResult result) throws IOException {
+ JsonFactory factory = new JsonFactory();
+ try (JsonGenerator generator = factory.createGenerator(systemOut).useDefaultPrettyPrinter()) {
+ generator.writeStartObject();
+ generator.writeNumberField("feeder.runtime", result.duration.toMillis());
+ generator.writeNumberField("feeder.okcount", result.okCount);
+ generator.writeNumberField("feeder.errorcount", result.errorCount);
+ generator.writeNumberField("feeder.throughput", result.throughput);
+ generator.writeEndObject();
+ }
+ }
+
private int handleException(boolean verbose, Exception e) { return handleException(verbose, e.getMessage(), e); }
private int handleException(boolean verbose, String message, Exception exception) {