aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-11-01 16:52:15 +0100
committerGitHub <noreply@github.com>2021-11-01 16:52:15 +0100
commit5f2db22d896278cc8a3ae55c457a0881309c1000 (patch)
tree5bba970ba900533d2b198fe23ab560f57de9ec83
parent1fe33b4e407a463d5f721b2ebaed005e4462f147 (diff)
parentfb125b363ba81e8db3542debc1ad11f0cee529ac (diff)
Merge pull request #19816 from vespa-engine/balder/ignore-condition-not-met
Add --ignoreConditionNotMet to vespa-http-client
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java5
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java9
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java6
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java22
5 files changed, 34 insertions, 10 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<Detail> 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..eba7fbef483 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,10 @@ public class SimpleLoggerResultCallback implements FeedClient.ResultCallback {
printProgress();
}
resultCounter++;
- if (!documentResult.isSuccess()) {
+ boolean success = ignoreConditionNotMet
+ ? documentResult.isSuccessOrConditionNotMet()
+ : documentResult.isSuccess();
+ if ( ! success ) {
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..5f4a0fdec9a 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);
@@ -53,11 +54,10 @@ public class SimpleLoggerResultCallbackTest {
assertEquals(rate, 15., 0.1 /* delta */);
}
- @Test
- public void testPrintout() {
+ private void verifyPrintout(boolean ignoreConditionNotMet) {
ArrayList<String> outputList = new ArrayList<>();
- SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(30), 0) {
+ SimpleLoggerResultCallback logger = new SimpleLoggerResultCallback(new AtomicInteger(30), 0, ignoreConditionNotMet) {
@Override
protected void println(String output) {
outputList.add(output);
@@ -70,9 +70,11 @@ public class SimpleLoggerResultCallbackTest {
// 2 success, 1 failure
Result result = mock(Result.class);
when(result.isSuccess()).thenReturn(true);
+ when(result.isSuccessOrConditionNotMet()).thenReturn(true);
logger.onCompletion("1", result);
logger.onCompletion("1", result);
when(result.isSuccess()).thenReturn(false);
+ when(result.isSuccessOrConditionNotMet()).thenReturn(false);
when(result.toString()).thenReturn("fooError");
logger.onCompletion("1", result);
logger.printProgress();
@@ -81,4 +83,10 @@ public class SimpleLoggerResultCallbackTest {
assertThat(outputList.toString(), containsString("Failure: fooError"));
}
+ @Test
+ public void testPrintout() {
+ verifyPrintout(false);
+ verifyPrintout(true);
+ }
+
}