summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-02-05 18:32:44 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-02-06 04:26:31 +0200
commitfb6fdbac7605d1891c56536a6873f33870f8e972 (patch)
treefc8c6b3a1404435539ccf5666fad1982dbc67c98 /container-search
parent5355427111df0ef2700b594022a8054a6f034d6f (diff)
Finalize degraded coverage info and test it's json rendering.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java10
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Coverage.java14
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java35
4 files changed, 53 insertions, 10 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
index 872ed5ac11c..1b44d60cce9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
@@ -417,7 +417,9 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
}
if (resultPacket.getCoverageFeature()) {
- result.setCoverage(new Coverage(resultPacket.getCoverageDocs(), resultPacket.getActiveDocs()).setSoonActive(resultPacket.getSoonActiveDocs()).setDegradedReason(resultPacket.getDegradedReason()));
+ result.setCoverage(new Coverage(resultPacket.getCoverageDocs(), resultPacket.getActiveDocs())
+ .setSoonActive(resultPacket.getSoonActiveDocs())
+ .setDegradedReason(resultPacket.getDegradedReason()));
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
index 5a195668f81..0fd152e4718 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
@@ -96,13 +96,11 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
private static final String COVERAGE = "coverage";
private static final String COVERAGE_COVERAGE = "coverage";
private static final String COVERAGE_DOCUMENTS = "documents";
- private static final String COVERAGE_ACTIVE = "active";
- private static final String COVERAGE_SOON_ACTIVE = "soon-active";
private static final String COVERAGE_DEGRADE = "degraded";
private static final String COVERAGE_DEGRADE_MATCHPHASE = "match-phase";
private static final String COVERAGE_DEGRADE_TIMEOUT = "timeout";
private static final String COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT = "adaptive-timeout";
- private static final String COVERAGE_NON_IDEAL_STATE = "non-ideal-state";
+ private static final String COVERAGE_DEGRADED_NON_IDEAL_STATE = "non-ideal-state";
private static final String COVERAGE_FULL = "full";
private static final String COVERAGE_NODES = "nodes";
private static final String COVERAGE_RESULTS = "results";
@@ -451,11 +449,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
generator.writeBooleanField(COVERAGE_DEGRADE_MATCHPHASE, c.isDegradedByMatchPhase());
generator.writeBooleanField(COVERAGE_DEGRADE_TIMEOUT, c.isDegradedByTimeout());
generator.writeBooleanField(COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT, c.isDegradedByAdapativeTimeout());
- generator.writeEndObject();
- } else if (c.getResultPercentage() != 100) {
- generator.writeObjectFieldStart(COVERAGE_NON_IDEAL_STATE);
- generator.writeNumberField(COVERAGE_ACTIVE, c.getActive());
- generator.writeNumberField(COVERAGE_SOON_ACTIVE, c.getSoonActive());
+ generator.writeBooleanField(COVERAGE_DEGRADED_NON_IDEAL_STATE, c.isDegradedByNonIdealState());
generator.writeEndObject();
}
generator.writeBooleanField(COVERAGE_FULL, c.getFull());
diff --git a/container-search/src/main/java/com/yahoo/search/result/Coverage.java b/container-search/src/main/java/com/yahoo/search/result/Coverage.java
index 13deaf36db7..ebb91a64723 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Coverage.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Coverage.java
@@ -1,6 +1,8 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
+import com.google.common.annotations.Beta;
+
/**
* The coverage report for a result set.
*
@@ -21,7 +23,19 @@ public class Coverage extends com.yahoo.container.handler.Coverage {
super(docs, nodes, full, resultSets);
}
+ /**
+ * Will set number of documents present in ideal state
+ * @param soonActive
+ * @return self for chaining
+ */
+ @Beta
public Coverage setSoonActive(long soonActive) { this.soonActive = soonActive; return this; }
+
+ /**
+ * Will set the reasons for degraded coverage as reported by vespa backend.
+ * @param degradedReason
+ * @return self for chaining
+ */
public Coverage setDegradedReason(int degradedReason) { this.degradedReason = degradedReason; return this; }
}
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
index 6189e009e91..3f22b22a7cf 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
@@ -599,7 +599,40 @@ public class JsonRendererTestCase {
r.hits().add(gg);
r.hits().addError(ErrorMessage.createInternalServerError("boom"));
String summary = render(execution, r);
- // System.out.println(summary);
+ assertEqualJson(expected, summary);
+ }
+
+ @Test
+ public void testCoverage() throws InterruptedException, ExecutionException, IOException {
+ String expected = "{\n"
+ + " \"root\": {\n"
+ + " \"coverage\": {\n"
+ + " \"coverage\": 83,\n"
+ + " \"documents\": 500,\n"
+ + " \"degraded\" : {\n"
+ + " \"match-phase\" : true,\n"
+ + " \"timeout\" : false,\n"
+ + " \"adaptive-timeout\" : true,\n"
+ + " \"non-ideal-state\" : false"
+ + " },\n"
+ + " \"full\": false,\n"
+ + " \"nodes\": 0,\n"
+ + " \"results\": 1,\n"
+ + " \"resultsFull\": 0\n"
+ + " },\n"
+ + " \"fields\": {\n"
+ + " \"totalCount\": 0\n"
+ + " },\n"
+ + " \"id\": \"toplevel\",\n"
+ + " \"relevance\": 1.0\n"
+ + " }\n"
+ + "}";
+ Query q = new Query("/?query=a&tracelevel=5&reportCoverage=true");
+ Execution execution = new Execution(Execution.Context.createContextStub());
+ Result r = new Result(q);
+ r.setCoverage(new Coverage(500, 600).setDegradedReason(5));
+
+ String summary = render(execution, r);
assertEqualJson(expected, summary);
}