From af9531701d4abf11c657afaec0c769c11a296a58 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 1 Nov 2021 16:10:51 +0100 Subject: Add --ignoreConditionNotMet to vespa-http-client --- .../src/main/java/com/yahoo/vespa/http/client/Result.java | 5 +++++ .../yahoo/vespa/http/client/SimpleLoggerResultCallback.java | 6 ++++-- .../yahoo/vespa/http/client/runner/CommandLineArguments.java | 6 ++++++ .../main/java/com/yahoo/vespa/http/client/runner/Runner.java | 2 +- .../vespa/http/client/SimpleLoggerResultCallbackTest.java | 11 ++++++----- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java index 4cc4c762ccf..93a3b43c211 100644 --- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java +++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java @@ -63,6 +63,11 @@ public class Result { public boolean isSuccess() { return success; } + public boolean isSuccessOrConditionNotMet() { + return isSuccess() || + details.stream().allMatch(d -> d.getResultType() == Result.ResultType.OPERATION_EXECUTED || + d.getResultType() == Result.ResultType.CONDITION_NOT_MET); + } public List getDetails() { return details; } diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java index fcc3e04af78..74871e09380 100644 --- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java +++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java @@ -23,6 +23,7 @@ public class SimpleLoggerResultCallback implements FeedClient.ResultCallback { private int failureCounter = 0; private final AtomicInteger sentDocumentCounter; private final int printStatsForEveryXDocument; + private final boolean ignoreConditionNotMet; private Instant startSampleInstant = Instant.now(); private int startSampleResultCount = 0; @@ -36,9 +37,10 @@ public class SimpleLoggerResultCallback implements FeedClient.ResultCallback { * @param sentDocumentCounter a counter that is increased outside this class, but can be nice to print here. * @param printStatsForEveryXDocument how often to print stats. */ - public SimpleLoggerResultCallback(AtomicInteger sentDocumentCounter, int printStatsForEveryXDocument) { + public SimpleLoggerResultCallback(AtomicInteger sentDocumentCounter, int printStatsForEveryXDocument, boolean ignoreConditionNotMet) { this.sentDocumentCounter = sentDocumentCounter; this.printStatsForEveryXDocument = printStatsForEveryXDocument; + this.ignoreConditionNotMet = ignoreConditionNotMet; } /** @@ -95,7 +97,7 @@ public class SimpleLoggerResultCallback implements FeedClient.ResultCallback { printProgress(); } resultCounter++; - if (!documentResult.isSuccess()) { + if ( !documentResult.isSuccessOrConditionNotMet() ) { failureCounter++; println("Failure: " + documentResult + (documentResult.getDetails().isEmpty() ? "" : ":")); for (Result.Detail detail : documentResult.getDetails()) diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java index 4ccae25f2da..7ccdf3ebd43 100644 --- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java +++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java @@ -193,6 +193,10 @@ public class CommandLineArguments { description = "Run validation tool on input files instead of feeding them.") private boolean validateArg = false; + @Option(name = {"--ignoreConditionNotMet"}, + description = "Ignore condition not met failures.") + private boolean ignoreConditionNotMet = false; + @Option(name = {"--priority"}, description = "Specify priority of sent messages, see documentation ") private String priorityArg = null; @@ -251,6 +255,8 @@ public class CommandLineArguments { public boolean getVerbose() { return verboseArg; } + public boolean getIgnoreConditionNotMet() { return ignoreConditionNotMet; } + public boolean getAddRootElementToXml() { return addRootElementToXml; } SessionParams createSessionParams(boolean useJson) { diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java index 60047993f0e..e3e90c8bbfc 100644 --- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java +++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java @@ -76,7 +76,7 @@ public class Runner { ? commandLineArgs.getWhenVerboseEnabledPrintMessageForEveryXDocuments() : Integer.MAX_VALUE; AtomicInteger numSent = new AtomicInteger(0); - SimpleLoggerResultCallback callback = new SimpleLoggerResultCallback(numSent, intervalOfLogging); + SimpleLoggerResultCallback callback = new SimpleLoggerResultCallback(numSent, intervalOfLogging, commandLineArgs.getIgnoreConditionNotMet()); FeedClient feedClient = FeedClientFactory.create(commandLineArgs.createSessionParams(formatInputStream.getFormat()== FormatInputStream.Format.JSON), callback); diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java index 3582ab2696f..667248b7551 100644 --- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java +++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java @@ -8,14 +8,15 @@ import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; import static org.hamcrest.CoreMatchers.containsString; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SimpleLoggerResultCallbackTest { @Test public void testAverageCalculation() { - SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(3), 0); + SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(3), 0, false); Instant now = Instant.now(); logger.newSamplingPeriod(now); Result result = mock(Result.class); @@ -30,7 +31,7 @@ public class SimpleLoggerResultCallbackTest { @Test public void testAverageCalculationExteremeValues() { - SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(3), 0); + SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(3), 0, false); Instant now = Instant.now(); logger.newSamplingPeriod(now); // 0 duration, 0 documents @@ -40,7 +41,7 @@ public class SimpleLoggerResultCallbackTest { @Test public void testOutput() { - SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(3), 0); + SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(3), 0, false); Instant now = Instant.now(); logger.newSamplingPeriod(now); Result result = mock(Result.class); @@ -57,7 +58,7 @@ public class SimpleLoggerResultCallbackTest { public void testPrintout() { ArrayList outputList = new ArrayList<>(); - SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(30), 0) { + SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(30), 0, false) { @Override protected void println(String output) { outputList.add(output); -- cgit v1.2.3