diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-02-05 18:32:44 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-02-06 04:26:31 +0200 |
commit | fb6fdbac7605d1891c56536a6873f33870f8e972 (patch) | |
tree | fc8c6b3a1404435539ccf5666fad1982dbc67c98 /container-search | |
parent | 5355427111df0ef2700b594022a8054a6f034d6f (diff) |
Finalize degraded coverage info and test it's json rendering.
Diffstat (limited to 'container-search')
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); } |