diff options
Diffstat (limited to 'container-search/src/test/java/com/yahoo')
4 files changed, 91 insertions, 28 deletions
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java index 7fda1d82fcc..867a8d7df83 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java @@ -44,7 +44,7 @@ public class PartialFillTestCase extends junit.framework.TestCase { } protected void doPartialFill(Result result, String summaryClass) { if (result.hits().getErrorHit() == null) { - result.hits().setError(ErrorMessage.createUnspecifiedError("error")); + result.hits().addError(ErrorMessage.createUnspecifiedError("error")); } } } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java index b741159ab9d..f8a9b06888d 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java @@ -650,7 +650,7 @@ public class GroupingExecutorTestCase { return ret; } if (passnum == failOnPassN) { - ret.hits().setError(ErrorMessage.createTimeout("timeout")); + ret.hits().addError(ErrorMessage.createTimeout("timeout")); } passnum++; return ret; diff --git a/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java b/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java index 840f5cbdf04..75b9a5264dc 100644 --- a/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java @@ -10,8 +10,7 @@ import org.junit.Before; import org.junit.Test; /** - * @author steinar - * @author bratseth + * @author Steinar Knutsen */ public class DefaultErrorHitTestCase { @@ -23,12 +22,8 @@ public class DefaultErrorHitTestCase { de = new DefaultErrorHit(SOURCE, ErrorMessage.createUnspecifiedError("DefaultErrorHitTestCase")); } - @After - public void tearDown() throws Exception { - } - @Test - public final void testSetSourceTakeTwo() { + public void testSetSourceTakeTwo() { assertEquals(SOURCE, de.getSource()); de.setSource(null); assertNull(de.getSource()); @@ -41,19 +36,19 @@ public class DefaultErrorHitTestCase { } @Test - public final void testToString() { + public void testToString() { assertEquals("Error: Source 'nalle': 5: Unspecified error: DefaultErrorHitTestCase", de.toString()); } @Test - public final void testSetMainError() { + public void testSetMainError() { ErrorMessage e = ErrorMessage.createBackendCommunicationError("abc"); assertNull(e.getSource()); de.addError(e); assertEquals(SOURCE, e.getSource()); boolean caught = false; try { - new DefaultErrorHit(SOURCE, null); + new DefaultErrorHit(SOURCE, (ErrorMessage)null); } catch (NullPointerException ex) { caught = true; } @@ -69,47 +64,41 @@ public class DefaultErrorHitTestCase { } @Test - public final void testAddError() { - ErrorMessage e = ErrorMessage - .createBackendCommunicationError("ljkhlkjh"); + public void testAddError() { + ErrorMessage e = ErrorMessage.createBackendCommunicationError("ljkhlkjh"); assertNull(e.getSource()); de.addError(e); assertEquals(SOURCE, e.getSource()); e = ErrorMessage.createBadRequest("kdjfhsdkfhj"); de.addError(e); int i = 0; - for (Iterator<ErrorMessage> errors = de.errorIterator(); errors - .hasNext(); errors.next()) { + for (Iterator<ErrorMessage> errors = de.errorIterator(); errors.hasNext(); errors.next()) { ++i; } assertEquals(3, i); } @Test - public final void testAddErrors() { - DefaultErrorHit other = new DefaultErrorHit("abc", - ErrorMessage.createBadRequest("sdasd")); + public void testAddErrors() { + DefaultErrorHit other = new DefaultErrorHit("abc", ErrorMessage.createBadRequest("sdasd")); de.addErrors(other); int i = 0; - for (Iterator<ErrorMessage> errors = de.errorIterator(); errors - .hasNext(); errors.next()) { + for (Iterator<ErrorMessage> errors = de.errorIterator(); errors.hasNext(); errors.next()) { ++i; } assertEquals(2, i); - other = new DefaultErrorHit("abd", - ErrorMessage.createEmptyDocsums("uiyoiuy")); + other = new DefaultErrorHit("abd", ErrorMessage.createEmptyDocsums("uiyoiuy")); other.addError(ErrorMessage.createNoAnswerWhenPingingNode("xzvczx")); de.addErrors(other); i = 0; - for (Iterator<ErrorMessage> errors = de.errorIterator(); errors - .hasNext(); errors.next()) { + for (Iterator<ErrorMessage> errors = de.errorIterator(); errors.hasNext(); errors.next()) { ++i; } assertEquals(4, i); } @Test - public final void testHasOnlyErrorCode() { + public void testHasOnlyErrorCode() { assertTrue(de.hasOnlyErrorCode(com.yahoo.container.protect.Error.UNSPECIFIED.code)); assertFalse(de.hasOnlyErrorCode(com.yahoo.container.protect.Error.BACKEND_COMMUNICATION_ERROR.code)); diff --git a/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java b/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java index 9ded5f7b768..b8f033444c8 100644 --- a/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java @@ -1,16 +1,30 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.result.test; +import com.yahoo.search.Query; +import com.yahoo.search.result.DefaultErrorHit; +import com.yahoo.search.result.ErrorHit; +import com.yahoo.search.result.ErrorMessage; import com.yahoo.search.result.Hit; import com.yahoo.search.result.HitGroup; +import org.junit.Test; import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; /** * @author bratseth */ -public class HitGroupTestCase extends junit.framework.TestCase { +public class HitGroupTestCase { + @Test public void testStringStripping() { assertEquals("avabarne", Hit.stripCharacter('j', "javabjarne")); assertEquals("", Hit.stripCharacter('j', "")); @@ -19,7 +33,59 @@ public class HitGroupTestCase extends junit.framework.TestCase { assertEquals("foo", Hit.stripCharacter('j', "fooj")); assertEquals("", Hit.stripCharacter('j', "jjjjj")); } + + @Test + public void testErrorsConsistencyUsingErrorOperations() { + HitGroup hits = new HitGroup(); + + Query query = new Query(); + query.errors().add(ErrorMessage.createIllegalQuery("test1")); + query.errors().add(ErrorMessage.createTimeout("test2")); + hits.setQuery(query); + + hits.addError(ErrorMessage.createForbidden("test3")); + hits.addError(ErrorMessage.createUnspecifiedError("test4")); + + assertEquals(4, hits.getErrorHit().errors().size()); + assertEquals(0, query.errors().size()); + assertEquals(Optional.of(hits.getErrorHit()), errorHitIn(hits.asList())); + + DefaultErrorHit removedErrors = hits.removeErrorHit(); + assertNotNull(removedErrors); + assertEquals(4, removedErrors.errors().size()); + assertNull(hits.get(removedErrors.getId().toString())); + assertFalse(errorHitIn(hits.asList()).isPresent()); + + assertNull(hits.removeErrorHit()); + } + + @Test + public void testErrorsConsistencyUsingHitOperations() { + HitGroup hits = new HitGroup(); + + Query query = new Query(); + query.errors().add(ErrorMessage.createIllegalQuery("test1")); + query.errors().add(ErrorMessage.createTimeout("test2")); + hits.setQuery(query); + + DefaultErrorHit errors = new DefaultErrorHit("source", ErrorMessage.createForbidden("test3")); + errors.addError(ErrorMessage.createUnspecifiedError("test4")); + hits.add(errors); + + assertEquals(4, hits.getErrorHit().errors().size()); + assertEquals(0, query.errors().size()); + assertEquals(Optional.of(hits.getErrorHit()), errorHitIn(hits.asList())); + + DefaultErrorHit removedErrors = (DefaultErrorHit)hits.remove(errors.getId()); + assertNotNull(removedErrors); + assertEquals(4, removedErrors.errors().size()); + assertNull(hits.get(removedErrors.getId().toString())); + assertFalse(errorHitIn(hits.asList()).isPresent()); + + assertNull(hits.remove(errors.getId())); + } + @Test public void testRecursiveGet() { // Level 1 HitGroup g1=new HitGroup(); @@ -106,6 +172,7 @@ public class HitGroupTestCase extends junit.framework.TestCase { assertNull(g1.get("3",2)); } + @Test public void testThatHitGroupIsUnFillable() { HitGroup hg = new HitGroup("test"); { @@ -127,6 +194,7 @@ public class HitGroupTestCase extends junit.framework.TestCase { assertNull(hg.getFilled()); } + @Test public void testThatHitGroupIsFillable() { HitGroup hg = new HitGroup("test"); { @@ -150,6 +218,7 @@ public class HitGroupTestCase extends junit.framework.TestCase { assertTrue(hg.getFilled().isEmpty()); } + @Test public void testThatHitGroupIsFillableAfterFillableChangeunderTheHood() { HitGroup hg = new HitGroup("test"); { @@ -185,5 +254,10 @@ public class HitGroupTestCase extends junit.framework.TestCase { assertFalse(hg.isFilled("anyclass")); assertTrue(hg.getFilled().isEmpty()); } + + /** Returns the (first) error hit in the given list, or empty if none */ + private Optional<ErrorHit> errorHitIn(List<Hit> hits) { + return hits.stream().filter(h -> h instanceof ErrorHit).map(ErrorHit.class::cast).findFirst(); + } } |