diff options
49 files changed, 543 insertions, 331 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java index 6e7582a98c8..0590027a402 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java @@ -30,8 +30,7 @@ import java.util.*; */ public class SDField extends Field implements TypedKey, FieldOperationContainer, ImmutableSDField, Serializable { - /** Use this field for modifying index-structure, even if it doesn't - have any indexing code */ + /** Use this field for modifying index-structure, even if it doesn't have any indexing code */ private boolean indexStructureField = false; /** The indexing statements to be applied to this value during indexing */ @@ -61,7 +60,7 @@ public class SDField extends Field implements TypedKey, FieldOperationContainer, /** * Indicates what kind of matching should be done on this field */ - private Matching matching=new Matching(); + private Matching matching = new Matching(); /** Attribute settings, or null if there are none */ private Map<String, Attribute> attributes = new TreeMap<>(); @@ -104,11 +103,10 @@ public class SDField extends Field implements TypedKey, FieldOperationContainer, private boolean isExtraField = false; /** - Creates a new field. This method is only used to create reserved fields - @param name The name of the field - @param dataType The datatype of the field - @param isHeader Whether this is a "header" field or a "content" field - (true = "header"). + * Creates a new field. This method is only used to create reserved fields + * @param name The name of the field + * @param dataType The datatype of the field + * @param isHeader Whether this is a "header" field or a "content" field (true = "header"). */ protected SDField(SDDocumentType repo, String name, int id, DataType dataType, boolean isHeader, boolean populate) { super(name, id, dataType, isHeader); diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java index 7d13233bc12..507a0e87cff 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java @@ -64,7 +64,7 @@ public class LiteralBoost extends Processor { private void reduceFieldLiteralBoosts(Search search) { for (SDField field : search.allConcreteFields()) { - if (field.getLiteralBoost()<0) continue; + if (field.getLiteralBoost() < 0) continue; reduceFieldLiteralBoost(field,search); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java index 490627e7b45..eaad6ad90a0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java @@ -28,7 +28,6 @@ import static java.util.stream.Collectors.toList; * Executor of validators. This defines the right order of validator execution. * * @author hmusum - * @since 2010-01-29 */ public class Validation { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java index c27600578b5..5cee08ea9af 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java @@ -46,4 +46,5 @@ public class ContainerRestartValidator implements ChangeValidator { private static boolean isExistingContainer(Container container, VespaModel currentModel) { return currentModel.getService(container.getConfigId()).isPresent(); } + } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java index 95ae03d4e5f..26bebad93b4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java @@ -22,7 +22,6 @@ import java.util.stream.Collectors; * Validates the changes between the current and next set of attribute fields in a document database. * * @author geirst - * @since 2014-12-04 */ public class AttributeChangeValidator { @@ -145,7 +144,7 @@ public class AttributeChangeValidator { List<VespaConfigChangeAction> result) { T currentValue = settingValueProvider.apply(currentAttr); T nextValue = settingValueProvider.apply(nextAttr); - if (!Objects.equals(currentValue, nextValue)) { + if ( ! Objects.equals(currentValue, nextValue)) { String message = String.format("change property '%s' from '%s' to '%s'", setting, currentValue, nextValue); result.add(new VespaRestartAction(new ChangeMessageBuilder(nextAttr.getName()).addChange(message).build())); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java index 46f12a21bf0..3827da08679 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertThat; * @author geirst */ public abstract class ContentClusterFixture { + protected ContentCluster currentCluster; protected ContentCluster nextCluster; diff --git a/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java b/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java index b51c206a7ff..3dafa230eb8 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java @@ -10,7 +10,7 @@ package com.yahoo.prelude.query; public interface IndexedItem extends HasIndexItem { /** Sets the name of the index to search */ - public void setIndexName(String index); + void setIndexName(String index); /** * Return the searchable term contents of this item. @@ -18,6 +18,6 @@ public interface IndexedItem extends HasIndexItem { * @return a string representation of what is presumably stored in an index * which will match this item */ - public String getIndexedString(); + String getIndexedString(); } diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java index 4b66d0d757b..2535619f193 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java @@ -25,9 +25,7 @@ public abstract class SimpleIndexedItem extends SimpleTaggableItem implements In @NonNull private String index = ""; - /** - * The name of the index this belongs to, or "" (never null) if not specified - **/ + /** The name of the index this belongs to, or "" (never null) if not specified */ @NonNull public String getIndexName() { return index; @@ -78,4 +76,5 @@ public abstract class SimpleIndexedItem extends SimpleTaggableItem implements In super.disclose(discloser); discloser.addProperty("index", index); } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java b/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java index 1e04880a284..20f034df1df 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java @@ -13,7 +13,6 @@ import java.nio.ByteBuffer; * and the weights associated with the tokens of this WandItem. * The resulting dot product will be available as a raw score in the rank framework. * - * @since 5.1.27 * @author geirst */ public class WandItem extends WeightedSetItem { @@ -24,6 +23,7 @@ public class WandItem extends WeightedSetItem { /** * Creates an empty WandItem. + * * @param fieldName The name of the weighted set field to search with this WandItem. * @param targetNumHits The target for minimum number of hits to produce by the backend search operator handling this WandItem. */ @@ -36,6 +36,7 @@ public class WandItem extends WeightedSetItem { * Sets the initial score threshold used by the backend search operator handling this WandItem. * The score of a document must be larger than this threshold in order to be considered a match. * Default value is 0.0. + * * @param scoreThreshold the initial score threshold. */ public void setScoreThreshold(double scoreThreshold) { @@ -49,6 +50,7 @@ public class WandItem extends WeightedSetItem { * Similarly, a gain in performance might be expected. Default value is 1.0. * * NOTE: This boost factor is only used when this WandItem is searching a Vespa field. + * * @param thresholdBoostFactor the boost factor. */ public void setThresholdBoostFactor(double thresholdBoostFactor) { @@ -100,4 +102,5 @@ public class WandItem extends WeightedSetItem { discloser.addProperty("scoreThreshold", scoreThreshold); discloser.addProperty("thresholdBoostFactor", thresholdBoostFactor); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java index 98d94473908..07ffe7ac706 100644 --- a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java @@ -7,8 +7,14 @@ import com.yahoo.container.QrSearchersConfig; import com.yahoo.container.search.Fs4Config; import com.yahoo.container.search.LegacyEmulationConfig; import com.yahoo.fs4.QueryPacket; -import com.yahoo.prelude.*; -import com.yahoo.prelude.fastsearch.*; +import com.yahoo.prelude.IndexFacts; +import com.yahoo.prelude.IndexModel; +import com.yahoo.prelude.SearchDefinition; +import com.yahoo.prelude.fastsearch.CacheKey; +import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; +import com.yahoo.prelude.fastsearch.FS4ResourcePool; +import com.yahoo.prelude.fastsearch.FastHit; +import com.yahoo.prelude.fastsearch.VespaBackEndSearcher; import com.yahoo.search.Query; import com.yahoo.search.config.ClusterConfig; import com.yahoo.search.result.Hit; @@ -17,22 +23,32 @@ import com.yahoo.container.handler.VipStatus; import com.yahoo.container.protect.Error; import com.yahoo.statistics.Statistics; import com.yahoo.vespa.config.search.DispatchConfig; +import org.junit.Test; import java.net.InetAddress; import java.net.UnknownHostException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; /** * Tests cluster monitoring * * @author bratseth */ -public class ClusterSearcherTestCase extends junit.framework.TestCase { - - public ClusterSearcherTestCase(String name) { - super(name); - } +public class ClusterSearcherTestCase { + @Test public void testNoBackends() { ClusterSearcher cluster = new ClusterSearcher(new LinkedHashSet<>(Arrays.asList("dummy"))); try { @@ -42,14 +58,12 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { query.setHits(10); com.yahoo.search.Result result = execution.search(query); assertTrue(result.hits().getError() != null); - assertEquals("No backends in service. Try later", result.hits() - .getError().getMessage()); + assertEquals("No backends in service. Try later", result.hits().getError().getMessage()); } finally { cluster.deconstruct(); } } - private IndexFacts createIndexFacts() { Map<String, List<String>> clusters = new LinkedHashMap<>(); clusters.put("cluster1", Arrays.asList("type1", "type2", "type3")); @@ -70,6 +84,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { return searcher.resolveDocumentTypes(new Query("?query=hello" + query), createIndexFacts()); } + @Test public void testThatDocumentTypesAreResolved() { ClusterSearcher cluster1 = new ClusterSearcher(new LinkedHashSet<>(Arrays.asList("type1", "type2", "type3"))); try { @@ -108,6 +123,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { } } + @Test public void testThatDocumentTypesAreResolvedTODO_REMOVE() { ClusterSearcher cluster1 = new ClusterSearcher(new LinkedHashSet<>(Arrays.asList("type1", "type2", "type3"))); try { @@ -353,10 +369,11 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { List<Hit> hits = result.hits().asList(); assertEquals(expHits.size(), hits.size()); for (int i = 0; i < expHits.size(); ++i) { - assertEquals(expHits.get(i), hits.get(i).getRelevance().getScore()); + assertEquals(expHits.get(i), hits.get(i).getRelevance().getScore(), 0.0000001); } } + @Test public void testThatWeCanSpecifyNumHitsAndHitOffset() { Execution ex = createExecution(); @@ -370,7 +387,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertResult(9, Arrays.asList(5.0, 4.0), getResult(6, 2, ex)); assertResult(9, Arrays.asList(4.0, 3.0), getResult(7, 2, ex)); assertResult(9, Arrays.asList(3.0), getResult(8, 2, ex)); - assertResult(9, new ArrayList<Double>(), getResult(9, 2, ex)); + assertResult(9, new ArrayList<Double>(), getResult(9, 2, ex)); assertResult(9, Arrays.asList(11.0, 10.0, 9.0, 8.0, 7.0), getResult(0, 5, ex)); assertResult(9, Arrays.asList(6.0, 5.0, 4.0, 3.0), getResult(5, 5, ex)); @@ -381,6 +398,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertResult(3, new ArrayList<>(), getResult(3, 2, "&restrict=type1", ex)); } + @Test public void testThatWeCanSpecifyNumHitsAndHitOffsetWhenSorting() { Execution ex = createExecution(true); @@ -397,6 +415,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertResult(6, new ArrayList<>(), getResult(6, 2, extra, ex)); } + @Test public void testLocalConnect() throws UnknownHostException { ClusterSearcher cluster = new ClusterSearcher(new LinkedHashSet<>(Arrays.asList("dummy"))); boolean canFindYahoo; @@ -420,6 +439,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { } } + @Test public void testRequireThatSearchFailsForUndefinedRankProfileWithOneDocType() { Execution execution = createExecution(Arrays.asList("type1"), false); @@ -451,6 +471,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertEquals(3, result.getTotalHitCount()); } + @Test public void testRequireThatSearchFailsForUndefinedRankProfileWithMultipleDocTypes() { Execution execution = createExecution(Arrays.asList("type1", "type2", "type3"), false); @@ -541,6 +562,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { } } + @Test public void testThatQueryTimeoutIsCappedWithDefaultMax() { QueryTimeoutFixture f = new QueryTimeoutFixture(null, null); f.query.setTimeout(600001); @@ -548,6 +570,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertEquals(600000, f.query.getTimeout()); } + @Test public void testThatQueryTimeoutIsNotCapped() { QueryTimeoutFixture f = new QueryTimeoutFixture(null, null); f.query.setTimeout(599999); @@ -555,6 +578,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertEquals(599999, f.query.getTimeout()); } + @Test public void testThatQueryTimeoutIsCappedWithSpecifiedMax() { QueryTimeoutFixture f = new QueryTimeoutFixture(new Double(70), null); f.query.setTimeout(70001); @@ -562,6 +586,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertEquals(70000, f.query.getTimeout()); } + @Test public void testThatQueryCacheIsDisabledIfTimeoutIsLargerThanMax() { QueryTimeoutFixture f = new QueryTimeoutFixture(null, null); f.query.setTimeout(10001); @@ -570,6 +595,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertFalse(f.query.getRanking().getQueryCache()); } + @Test public void testThatQueryCacheIsNotDisabledIfTimeoutIsOk() { QueryTimeoutFixture f = new QueryTimeoutFixture(null, null); f.query.setTimeout(10000); @@ -578,6 +604,7 @@ public class ClusterSearcherTestCase extends junit.framework.TestCase { assertTrue(f.query.getRanking().getQueryCache()); } + @Test public void testThatQueryCacheIsDisabledIfTimeoutIsLargerThanConfiguredMax() { QueryTimeoutFixture f = new QueryTimeoutFixture(null, new Double(5)); f.query.setTimeout(5001); diff --git a/container-search/src/test/java/com/yahoo/prelude/cluster/test/HasherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/cluster/test/HasherTestCase.java index d74bfc9a21a..04ea03d8d83 100644 --- a/container-search/src/test/java/com/yahoo/prelude/cluster/test/HasherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/cluster/test/HasherTestCase.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.cluster.test; -import com.yahoo.container.handler.VipStatus; import com.yahoo.fs4.QueryPacket; import com.yahoo.prelude.cluster.Hasher; import com.yahoo.prelude.fastsearch.CacheKey; @@ -9,6 +8,12 @@ import com.yahoo.prelude.fastsearch.VespaBackEndSearcher; import com.yahoo.search.Query; import com.yahoo.search.Result; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; /** * Tests the Hashing/failover/whatever functionality. @@ -16,12 +21,9 @@ import com.yahoo.search.searchchain.Execution; * @author bratseth * @author Steinar Knutsen */ -public class HasherTestCase extends junit.framework.TestCase { - - public HasherTestCase (String name) { - super(name); - } +public class HasherTestCase { + @Test public void testEmptyHasher() { Hasher hasher=new Hasher(); assertNull(hasher.select(0)); @@ -40,6 +42,7 @@ public class HasherTestCase extends junit.framework.TestCase { } } + @Test public void testOneHasher() { Hasher hasher = new Hasher(); VespaBackEndSearcher o1 = new MockBackend(); @@ -51,6 +54,7 @@ public class HasherTestCase extends junit.framework.TestCase { assertNull(hasher.select(0)); } + @Test public void testAddAndRemove() { Hasher hasher = new Hasher(); VespaBackEndSearcher v0 = new MockBackend(); @@ -84,6 +88,7 @@ public class HasherTestCase extends junit.framework.TestCase { assertSame(v0, hasher.select(0)); } + @Test public void testPreferLocal() { Hasher hasher = new Hasher(); VespaBackEndSearcher v0 = new MockBackend(); @@ -103,7 +108,6 @@ public class HasherTestCase extends junit.framework.TestCase { hasher.add(v2); assertTrue(hasher.select(0).isLocalDispatching()); - hasher = new Hasher(); hasher.add(v0); hasher.add(v1); diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java index 1c677fd4bdc..8efbeaec10d 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java @@ -1,24 +1,21 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.fastsearch; +import org.junit.Test; + import java.nio.ByteBuffer; import java.nio.ByteOrder; -import com.yahoo.prelude.fastsearch.DocsumField; -import com.yahoo.prelude.fastsearch.FastHit; - +import static org.junit.Assert.assertEquals; /** * Tests DocsumField class functionality * * @author Bjørn Borud */ -public class DocsumFieldTestCase extends junit.framework.TestCase { - - public DocsumFieldTestCase(String name) { - super(name); - } +public class DocsumFieldTestCase { + @Test public void testConstructors() { DocsumField.create("test", "string"); DocsumField.create("test", "integer"); @@ -26,6 +23,7 @@ public class DocsumFieldTestCase extends junit.framework.TestCase { DocsumField.create("test", "int64"); } + @Test public void testByte() { FastHit hit = new FastHit(); DocsumField c = DocsumField.create("test", "byte"); @@ -46,12 +44,11 @@ public class DocsumFieldTestCase extends junit.framework.TestCase { assertEquals("30", hit.getField("test").toString()); } + @Test public void testLongString() { FastHit hit = new FastHit(); DocsumField c = DocsumField.create("test", "longstring"); - byte[] byteData = { - 4, 0, 0, 0, 'c', 'a', 'f', 'e', 4, 0, 0, 0, 'B', 'A', - 'B', 'E'}; + byte[] byteData = { 4, 0, 0, 0, 'c', 'a', 'f', 'e', 4, 0, 0, 0, 'B', 'A', 'B', 'E' }; ByteBuffer buffer = ByteBuffer.wrap(byteData); buffer.order(ByteOrder.LITTLE_ENDIAN); diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/CacheKeyTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/CacheKeyTestCase.java index e7ab1cc137a..e03581c6ad4 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/CacheKeyTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/CacheKeyTestCase.java @@ -1,21 +1,20 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.fastsearch.test; - import com.yahoo.fs4.QueryPacket; import com.yahoo.search.Query; import com.yahoo.prelude.fastsearch.CacheKey; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; /** - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class CacheKeyTestCase extends junit.framework.TestCase { - - public CacheKeyTestCase(String name) { - super(name); - } +public class CacheKeyTestCase { + @Test public void testHitsOffsetEquality() { Query a = new Query("/?query=abcd"); QueryPacket p1 = QueryPacket.create(a); @@ -27,6 +26,7 @@ public class CacheKeyTestCase extends junit.framework.TestCase { assertEquals(k1.hashCode(), k2.hashCode()); } + @Test public void testSessionKeyIgnored() { Query a = new Query("/?query=abcd"); QueryPacket ap = QueryPacket.create(a); @@ -38,4 +38,5 @@ public class CacheKeyTestCase extends junit.framework.TestCase { assertEquals(ak.hashCode(), bk.hashCode()); assertFalse(ap.getQueryPacketData().equals(bp.getQueryPacketData())); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java index 132f15d2061..1abfea268f2 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java @@ -15,22 +15,25 @@ import com.yahoo.document.GlobalId; import com.yahoo.slime.BinaryFormat; import com.yahoo.slime.Cursor; import com.yahoo.slime.Slime; +import org.junit.Test; import java.nio.ByteBuffer; import java.nio.ByteOrder; +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; /** * Tests docsum class functionality * * @author bratseth */ -public class DocsumDefinitionTestCase extends junit.framework.TestCase { - - public DocsumDefinitionTestCase(String name) { - super(name); - } +public class DocsumDefinitionTestCase { + @Test public void testReading() { String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg"; DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf); @@ -58,6 +61,7 @@ public class DocsumDefinitionTestCase extends junit.framework.TestCase { assertTrue(docsum0.getField(18) instanceof DataField); } + @Test public void testDecoding() { String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg"; DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf); @@ -98,4 +102,5 @@ public class DocsumDefinitionTestCase extends junit.framework.TestCase { DocumentdbInfoConfig config = new ConfigGetter<>(DocumentdbInfoConfig.class).getConfig(configID); return new DocsumDefinitionSet(config.documentdb(0)); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketCacheTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketCacheTestCase.java index b35ef0e09cf..05f5fe9f763 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketCacheTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketCacheTestCase.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.fastsearch.test; - import com.yahoo.fs4.BasicPacket; import com.yahoo.fs4.BufferTooSmallException; import com.yahoo.fs4.PacketDecoder; @@ -10,16 +9,20 @@ import com.yahoo.search.Query; import com.yahoo.prelude.fastsearch.CacheKey; import com.yahoo.prelude.fastsearch.PacketCache; import com.yahoo.prelude.fastsearch.PacketWrapper; +import org.junit.Test; import java.nio.ByteBuffer; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; /** * Tests the packet cache. Also tested in FastSearcherTestCase. * * @author bratseth */ -public class PacketCacheTestCase extends junit.framework.TestCase { +public class PacketCacheTestCase { static byte[] queryResultPacketData = new byte[] { 0, 0, 0, 104, @@ -41,10 +44,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { static CacheKey key3 = new CacheKey(QueryPacket.create(new Query("/?query=key3"))); static CacheKey key4 = new CacheKey(QueryPacket.create(new Query("/?query=key4"))); - public PacketCacheTestCase(String name) { - super(name); - } - + @Test public void testPutAndGet() throws BufferTooSmallException { PacketCache cache = new PacketCache(0, (length + 30) * 3 - 1, 1e64); @@ -81,6 +81,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { } // more control that delete code does not change internal access order + @Test public void testInternalOrdering() throws BufferTooSmallException { // room for three entries PacketCache cache = new PacketCache(0, length * 4 - 1, 1e64); @@ -106,6 +107,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { assertNotNull(cache.get(key3)); } + @Test public void testTooLargeItem() throws BufferTooSmallException { PacketCache cache = new PacketCache(0, 100, 1e64); // 100 bytes cache @@ -116,6 +118,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { assertEquals(0, cache.totalPacketSize()); } + @Test public void testClearing() throws BufferTooSmallException { PacketCache cache = new PacketCache(0, 140, 1e64); // 140 bytes cache @@ -130,6 +133,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { assertEquals(0, cache.totalPacketSize()); } + @Test public void testRemoving() throws BufferTooSmallException { PacketCache cache = new PacketCache(0, length*2, 1e64); // 96*2 bytes cache @@ -144,6 +148,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { assertEquals(length, cache.totalPacketSize()); } + @Test public void testEntryAging() throws BufferTooSmallException { // 1k bytes cache, 5h timeout PacketCache cache = new PacketCache(0, 1024, 5 * 3600); @@ -160,6 +165,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { return createCacheEntry(null); } + @Test public void testTooBigCapacity() { PacketCache cache = new PacketCache(2048, 0, 5 * 3600); assertEquals(Integer.MAX_VALUE, cache.getByteCapacity()); @@ -171,9 +177,7 @@ public class PacketCacheTestCase extends junit.framework.TestCase { data.put(queryResultPacketData); data.flip(); - BasicPacket[] content = new BasicPacket[] { - PacketDecoder.extractPacket( - data).packet }; + BasicPacket[] content = new BasicPacket[] { PacketDecoder.extractPacket(data).packet }; return new PacketWrapper(key, content); } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketWrapperTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketWrapperTestCase.java index ea13d2e3be5..8411b4bcb0b 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketWrapperTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PacketWrapperTestCase.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.fastsearch.test; - import java.util.Iterator; import java.util.List; @@ -12,14 +11,20 @@ import com.yahoo.fs4.QueryResultPacket; import com.yahoo.search.Query; import com.yahoo.prelude.fastsearch.CacheKey; import com.yahoo.prelude.fastsearch.PacketWrapper; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; /** * Tests the logic wrapping cache entries. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class PacketWrapperTestCase extends junit.framework.TestCase { +public class PacketWrapperTestCase { + + @Test public void testPartialOverlap() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -77,6 +82,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { } + @Test public void testPacketTrimming1() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -92,6 +98,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(10, ((QueryResultPacket) l.get(1)).getOffset()); } + @Test public void testPacketTrimming2() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -108,6 +115,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(50, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming3() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -124,6 +132,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(25, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming4() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -144,6 +153,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(20, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming5() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -168,6 +178,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(15, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming6() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -191,6 +202,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(70, ((QueryResultPacket) l.get(3)).getOffset()); } + @Test public void testPacketTrimming7() { final Query query = new Query("/?query=key"); query.setWindow(50, 10); @@ -218,6 +230,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(50, ((QueryResultPacket) l.get(5)).getOffset()); } + @Test public void testPacketTrimming8() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -234,6 +247,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(90, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming9() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -252,6 +266,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(20, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming10() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -271,6 +286,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(20, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming11() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -298,6 +314,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(2, w.getResultPackets().size()); } + @Test public void testPacketTrimming12() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -319,6 +336,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(16, ((QueryResultPacket) l.get(2)).getOffset()); } + @Test public void testPacketTrimming13() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -341,6 +359,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(16, ((QueryResultPacket) l.get(3)).getOffset()); } + @Test public void testPacketTrimming14() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 100); @@ -363,6 +382,7 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { assertEquals(16, ((QueryResultPacket) l.get(3)).getOffset()); } + @Test public void testZeroHits() { CacheKey key = new CacheKey(QueryPacket.create(new Query("/?query=key"))); PacketWrapper w = createResult(key, 0, 10, 0); @@ -405,4 +425,5 @@ public class PacketWrapperTestCase extends junit.framework.TestCase { } return r; } + } 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 867a8d7df83..8fae318e97f 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 @@ -1,11 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.fastsearch.test; - import com.google.common.util.concurrent.MoreExecutors; import com.yahoo.component.chain.Chain; import com.yahoo.fs4.QueryPacket; -import com.yahoo.language.Linguistics; import com.yahoo.language.simple.SimpleLinguistics; import com.yahoo.prelude.fastsearch.CacheKey; import com.yahoo.prelude.fastsearch.FastHit; @@ -17,16 +15,21 @@ import com.yahoo.search.rendering.RendererRegistry; import com.yahoo.search.result.ErrorHit; import com.yahoo.search.result.ErrorMessage; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + /** * @author havardpe */ -@SuppressWarnings("deprecation") -public class PartialFillTestCase extends junit.framework.TestCase { +public class PartialFillTestCase { public static class FS4 extends VespaBackEndSearcher { public List<Result> history = new ArrayList<>(); @@ -49,10 +52,7 @@ public class PartialFillTestCase extends junit.framework.TestCase { } } - public PartialFillTestCase(String name) { - super(name); - } - + @Test public void testPartitioning() { FS4 fs4 = new FS4(); Query a = new Query("/?query=foo"); @@ -109,6 +109,7 @@ public class PartialFillTestCase extends junit.framework.TestCase { assertEquals(2, fs4.history.get(3).getHitCount()); } + @Test public void testMergeErrors() { BadFS4 fs4 = new BadFS4(); Query a = new Query("/?query=foo"); diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java index 1dddf8f9378..185ec2bdb83 100644 --- a/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java @@ -2,11 +2,13 @@ package com.yahoo.prelude.hitfield; import com.yahoo.data.access.simple.Value; -import com.yahoo.data.access.Inspector; -import com.yahoo.data.access.Type; +import org.junit.Test; -public class XmlRendererTestCase extends junit.framework.TestCase { +import static org.junit.Assert.assertEquals; +public class XmlRendererTestCase { + + @Test public void testWeightedSet1() { Value.ArrayValue top = new Value.ArrayValue(); top @@ -20,9 +22,6 @@ public class XmlRendererTestCase extends junit.framework.TestCase { .add(new Value.StringValue("espen")) .add(new Value.LongValue(30))); String rendered = XmlRenderer.render(new StringBuilder(), top).toString(); -//System.err.println("rendered >>>"); -//System.err.println(rendered); -//System.err.println("<<< rendered"); String correct = "\n" + " <item weight=\"10\">per</item>\n" + " <item weight=\"20\">paal</item>\n" @@ -31,6 +30,7 @@ public class XmlRendererTestCase extends junit.framework.TestCase { assertEquals(correct, rendered); } + @Test public void testWeightedSet2() { Value.ObjectValue top = new Value.ObjectValue(); top @@ -55,9 +55,6 @@ public class XmlRendererTestCase extends junit.framework.TestCase { .put("weight",new Value.LongValue(30)) .put("item",new Value.StringValue("espen")))); String rendered = XmlRenderer.render(new StringBuilder(), top).toString(); -//System.err.println("rendered >>>"); -//System.err.println(rendered); -//System.err.println("<<< rendered"); String correct = "\n" + " <struct-field name=\"foo\">\n" + " <item weight=\"10\">per</item>\n" diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java index 98bab83f28a..c6fb47bae1b 100644 --- a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java @@ -6,6 +6,9 @@ import java.util.List; import com.yahoo.prelude.hitfield.HitField; import com.yahoo.prelude.hitfield.StringFieldPart; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * Tests the HitField class @@ -13,12 +16,9 @@ import com.yahoo.prelude.hitfield.StringFieldPart; * @author Lars Chr Jensen */ @SuppressWarnings({"unchecked", "rawtypes"}) -public class HitFieldTestCase extends junit.framework.TestCase { - - public HitFieldTestCase (String name) { - super(name); - } +public class HitFieldTestCase { + @Test public void testHitField() { HitField hf = new HitField("boo", "hei paa deg"); assertEquals(3, hf.getTokenizedContent().size()); @@ -31,6 +31,7 @@ public class HitFieldTestCase extends junit.framework.TestCase { assertEquals("hei paa deg", hf.getRawContent()); } + @Test public void testCjk() { HitField hf = new HitField("boo", "hmm\u001fgr"); assertEquals(2, hf.getTokenizedContent().size()); @@ -42,6 +43,7 @@ public class HitFieldTestCase extends junit.framework.TestCase { assertEquals("foobar", hf.getContent()); } + @Test public void testAnnotateField() { HitField hf = new HitField("boo", "The <hi>Eclipse</hi> SDK \uFFF9include\uFFFAincludes\uFFFB the <hi>Eclipse</hi> Platform"); assertEquals(11, hf.getTokenizedContent().size()); @@ -67,12 +69,12 @@ public class HitFieldTestCase extends junit.framework.TestCase { assertEquals(6, hf.getTokenizedContent().size()); hf = new HitField("boo", "The <hi>Eclipse</hi> SDK \uFFF9include\uFFFAincludes\uFFFB the <hi>Eclipse</hi> \uFFF9platform\uFFFAPlatforms\uFFFB test"); assertEquals(12, hf.getTokenizedContent().size()); - - - //hf = new HitField("boo", "The <hi>Eclipse</hi> SDK \uFFF9include\uFFFAincludes\uFFFB the <hi>Eclipse</hi> Platform"); } + + @Test public void testEmptyField() { HitField hf = new HitField("boo", ""); assertEquals(0, hf.getTokenizedContent().size()); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java index 3b75172c470..09a439c7bc9 100644 --- a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java @@ -8,15 +8,21 @@ import com.yahoo.data.access.Inspector; import com.yahoo.data.access.Type; import com.yahoo.slime.Slime; import com.yahoo.slime.Cursor; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Tests the JSONString XML rendering. * * TODO: Add correct answers. These are not added because this code was checked in before sync with system test * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class JSONStringTestCase extends junit.framework.TestCase { +public class JSONStringTestCase { + + @Test public void testWeightedSet() { String json = "[[{\"as1\":[\"per\",\"paal\"],\"l1\":1122334455667788997,\"d1\":87.790001,\"i1\":7,\"al1\":[11223344556677881,11223344556677883],\"s1\":\"string\\n" + "espa\u00F1a\\n" @@ -65,6 +71,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { } + @Test public void testWeightedSetFromInspector() { Value.ArrayValue top = new Value.ArrayValue(); top.add(new Value.ArrayValue() @@ -138,7 +145,6 @@ public class JSONStringTestCase extends junit.framework.TestCase { .add(new Value.StringValue("s2")) .add(new Value.LongValue(20))); js = new JSONString(top); -// System.err.println("js.toString() is: >>>" + js.toString() + "<<<"); correct = "\n" + " <item weight=\"10\">s1</item>\n" + " <item weight=\"20\">s2</item>\n" + @@ -146,6 +152,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals(correct, js.renderFromInspector()); } + @Test public void testStruct() { { String json = "{\"as1\":[\"per\",\"paal\"],\"l1\":1122334455667788991,\"d1\":81.790001,\"i1\":1,\"al1\":[11223344556677881,11223344556677883],\"s1\":\"string\\n" @@ -410,6 +417,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { } } + @Test public void testMap() { String json = "[{\"key\":\"k1\",\"value\":\"v1\"},{\"key\":\"k2\",\"value\":\"v2\"}]"; JSONString js = new JSONString(json); @@ -429,6 +437,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals(correct, js.renderFromInspector()); } + @Test public void testWithData() { byte[] d1 = { (byte)0x41, (byte)0x42, (byte)0x43 }; byte[] d2 = { (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x02 }; @@ -459,6 +468,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals(correct, js.renderFromInspector()); } + @Test public void testArrayOfArray() { String json = "[[\"c1\", 0], [\"c2\", 2, 3], [\"c3\", 3, 4, 5], [\"c4\", 4,5,6,7]]"; JSONString js = new JSONString(json); @@ -488,6 +498,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals(7, outer.entry(3).entry(4).asLong()); } + @Test public void testSimpleArrays() { String json = "[1, 2, 3]"; JSONString js = new JSONString(json); @@ -528,6 +539,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals(correct, js.renderFromInspector()); } + @Test public void testArrayOfStruct() { String json = "[{\"as1\":[\"per\",\"paal\"]," + "\"l1\":1122334455667788994,\"d1\":74.790001," @@ -667,14 +679,12 @@ public class JSONStringTestCase extends junit.framework.TestCase { ***/ + @Test public void testArrayOfStructWithMap() { String json = "[{\"asf\":\"here is 1st simple string field\",\"map\":[{\"key\":\"one key string\",\"value\":[\"one value string\",\"embedded array\"]},{\"key\":\"two key string\",\"value\":[\"two value string\",\"embedded array\"]}],\"sf2\":\"here is 2nd simple string field\"},{\"asf\":\"here is 3rd simple string field\",\"map\":[{\"key\":\"three key string\",\"value\":[\"three value string\",\"embedded array\"]},{\"key\":\"four key string\",\"value\":[\"four value string\",\"embedded array\"]}],\"sf2\":\"here is 4th simple string field\"}]"; JSONString js = new JSONString(json); - // System.err.println("got:>>>"); - // System.err.println(js.toString()); - // System.err.println("<<<:got"); String correct = "\n" + " <item>\n" + " <struct-field name=\"asf\">here is 1st simple string field</struct-field>\n" @@ -737,18 +747,15 @@ public class JSONStringTestCase extends junit.framework.TestCase { .add("embedded array")))) .put("sf2", "here is 4th simple string field")); js = new JSONString(top); -// System.err.println(">>>"+js.renderFromInspector()+"<<<"); assertEquals(correct, js.renderFromInspector()); } + @Test public void testArrayOfStructWithEmptyMap() { String json = "[{\"asf\":\"here is 1st simple string field\",\"map\":[],\"sf2\":\"here is 2nd simple string field\"},{\"asf\":\"here is 3rd simple string field\",\"map\":[],\"sf2\":\"here is 4th simple string field\"}]"; JSONString js = new JSONString(json); - // System.err.println("got:>>>"); - // System.err.println(js.toString()); - // System.err.println("<<<:got"); String correct = "\n" + " <item>\n" + " <struct-field name=\"asf\">here is 1st simple string field</struct-field>\n" @@ -773,12 +780,10 @@ public class JSONStringTestCase extends junit.framework.TestCase { .put("map", new Value.ArrayValue()) .put("sf2", "here is 4th simple string field")); js = new JSONString(top); -// System.err.println(">>>"+js.renderFromInspector()+"<<<"); assertEquals(correct, js.renderFromInspector()); } - private Inspector getSlime1() { Slime slime = new Slime(); slime.setNix(); @@ -809,6 +814,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { return new SlimeAdapter(slime.get()); } + @Test public void testInspectorToContentMapping() { String content1 = new JSONString(getSlime1()).getContent(); String content2 = new JSONString(getSlime2()).getContent(); @@ -822,6 +828,7 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals("[1,2,3]", content5); } + @Test public void testContentToInspectorMapping() { Inspector value1 = new JSONString("").inspect(); Inspector value2 = new JSONString("foo").inspect(); @@ -859,4 +866,5 @@ public class JSONStringTestCase extends junit.framework.TestCase { assertEquals(3L, value6.entry(2).asLong()); assertEquals("[1,2,3]", value6.toString()); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java index f975dd1aba0..9a16cddb362 100644 --- a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java @@ -6,19 +6,18 @@ import java.util.ListIterator; import com.yahoo.prelude.hitfield.FieldPart; import com.yahoo.prelude.hitfield.HitField; import com.yahoo.prelude.hitfield.StringFieldPart; +import org.junit.Test; +import static org.junit.Assert.assertEquals; /** * Tests the FieldTokenIterator class * * @author Steinar Knutsen */ -public class TokenFieldIteratorTestCase extends junit.framework.TestCase { - - public TokenFieldIteratorTestCase (String name) { - super(name); - } +public class TokenFieldIteratorTestCase { + @Test public void testTokenIteratorNext() { HitField hf = new HitField("boo", "hei paa deg"); assertEquals(3, hf.getTokenizedContent().size()); @@ -31,6 +30,8 @@ public class TokenFieldIteratorTestCase extends junit.framework.TestCase { assertEquals("deg", p.getContent()); assertEquals(false, l.hasNext()); } + + @Test public void testTokenIteratorPrevious() { HitField hf = new HitField("boo", "hei paa"); ListIterator<?> l = hf.tokenIterator(); @@ -43,6 +44,8 @@ public class TokenFieldIteratorTestCase extends junit.framework.TestCase { p = (FieldPart)l.previous(); assertEquals("hei", p.getContent()); } + + @Test public void testTokenIteratorSet() { HitField hf = new HitField("boo", "hei paa deg"); assertEquals(3, hf.getTokenizedContent().size()); @@ -56,6 +59,8 @@ public class TokenFieldIteratorTestCase extends junit.framework.TestCase { l.set(new StringFieldPart("ged", true)); assertEquals("hei aap ged", hf.getContent()); } + + @Test public void testTokenIteratorAdd() { HitField hf = new HitField("boo", "hei paa deg"); assertEquals(3, hf.getTokenizedContent().size()); @@ -69,6 +74,8 @@ public class TokenFieldIteratorTestCase extends junit.framework.TestCase { assertEquals(false, l.hasNext()); assertEquals("ahei paab degc", hf.getContent()); } + + @Test public void testTokenIteratorRemove() { HitField hf = new HitField("boo", "hei paa deg"); ListIterator<FieldPart> l = hf.tokenIterator(); diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java index 5e4fd9f8921..a8eeaeda2a0 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java @@ -1,27 +1,25 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query.parser.test; - import com.yahoo.prelude.Index; import com.yahoo.prelude.IndexFacts; import com.yahoo.search.Query; import com.yahoo.search.searchchain.Execution; -import com.yahoo.search.test.QueryTestCase; +import org.junit.Test; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import static org.junit.Assert.assertEquals; + /** * Check default index propagates correctly to the tokenizer. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class ExactMatchAndDefaultIndexTestCase extends junit.framework.TestCase { - - public ExactMatchAndDefaultIndexTestCase(String name) { - super(name); - } +public class ExactMatchAndDefaultIndexTestCase { + @Test public void testExactMatchTokenization() { Index index = new Index("testexact"); index.setExact(true, null); @@ -34,8 +32,7 @@ public class ExactMatchAndDefaultIndexTestCase extends junit.framework.TestCase assertEquals("AND \"a b\" \"foo com\"", q.getModel().getQueryTree().getRoot().toString()); } - // From Flickr, which had problems with this as they didn't use a default-index - // (query is dog & cat) + @Test public void testDefaultIndexSpecialChars() { Query q = new Query("?query=" + enc("dog & cat") + "&default-index=textsearch"); assertEquals("AND textsearch:dog textsearch:cat", q.getModel().getQueryTree().getRoot().toString()); @@ -50,5 +47,3 @@ public class ExactMatchAndDefaultIndexTestCase extends junit.framework.TestCase } } - - diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java index d92792230d3..778802e065c 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query.parser.test; -import com.yahoo.language.Linguistics; import com.yahoo.language.simple.SimpleLinguistics; import com.yahoo.prelude.Index; import com.yahoo.prelude.IndexFacts; @@ -9,21 +8,38 @@ import com.yahoo.prelude.query.parser.SpecialTokenRegistry; import com.yahoo.prelude.query.parser.SpecialTokens; import com.yahoo.prelude.query.parser.Token; import com.yahoo.prelude.query.parser.Tokenizer; +import org.junit.Test; import java.util.Collections; import java.util.List; -import static com.yahoo.prelude.query.parser.Token.Kind.*; +import static com.yahoo.prelude.query.parser.Token.Kind.COLON; +import static com.yahoo.prelude.query.parser.Token.Kind.COMMA; +import static com.yahoo.prelude.query.parser.Token.Kind.DOT; +import static com.yahoo.prelude.query.parser.Token.Kind.EXCLAMATION; +import static com.yahoo.prelude.query.parser.Token.Kind.LBRACE; +import static com.yahoo.prelude.query.parser.Token.Kind.NOISE; +import static com.yahoo.prelude.query.parser.Token.Kind.NUMBER; +import static com.yahoo.prelude.query.parser.Token.Kind.PLUS; +import static com.yahoo.prelude.query.parser.Token.Kind.RBRACE; +import static com.yahoo.prelude.query.parser.Token.Kind.SPACE; +import static com.yahoo.prelude.query.parser.Token.Kind.STAR; +import static com.yahoo.prelude.query.parser.Token.Kind.UNDERSCORE; +import static com.yahoo.prelude.query.parser.Token.Kind.WORD; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; /** * Tests the tokenizer * * @author bratseth */ -public class TokenizerTestCase extends junit.framework.TestCase { +public class TokenizerTestCase { private SpecialTokenRegistry defaultRegistry = new SpecialTokenRegistry("file:src/test/java/com/yahoo/prelude/query/parser/test/replacingtokens.cfg"); + @Test public void testPlainTokenization() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -53,12 +69,14 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(NUMBER, "1"), tokens.get(20)); } + @Test public void testOutsideBMPCodepoints() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); List<?> tokens = tokenizer.tokenize("\ud841\udd47"); assertEquals(new Token(WORD, "\ud841\udd47"), tokens.get(0)); } + @Test public void testOneSpecialToken() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -68,6 +86,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(WORD, "c++"), tokens.get(0)); } + @Test public void testSpecialTokenCombination() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -95,6 +114,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { * In cjk languages, special tokens must be recognized as substrings of strings not * separated by space, as special token recognition happens before tokenization */ + @Test public void testSpecialTokenCJK() { assertEquals("Special tokens configured", 6, defaultRegistry.getSpecialTokens("default").size()); Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -120,6 +140,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(WORD, "knuwww"), tokens.get(15)); } + @Test public void testSpecialTokenCaseInsensitive() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -135,6 +156,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(WORD, "great"), tokens.get(6)); } + @Test public void testSpecialTokenNonMatch() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -159,33 +181,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(WORD, ".net"), tokens.get(15)); } - // Re-add if underscore becomes some sort of word character again - // public void testUnderscores() { - // Tokenizer tokenizer = new Tokenizer(linguistics); - // List<Token> tokens = tokenizer.tokenize("_a __a ___a ____a"); - // assertEquals("<WORD>: _a, \" \": , <WORD>: __a, \" \": , <WORD>: ___a, \" \": , <NOISE>: ____, <WORD>: a, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // tokens = tokenizer.tokenize("a_b a__b a___b a____b"); - // assertEquals("<WORD>: a_b, \" \": , <WORD>: a__b, \" \": , <WORD>: a___b, \" \": , <WORD>: a, <NOISE>: ____, <WORD>: b, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // tokens = tokenizer.tokenize("a_ a__ a___ a____"); - // assertEquals("<WORD>: a_, \" \": , <WORD>: a__, \" \": , <WORD>: a___, \" \": , <WORD>: a, <NOISE>: ____, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // tokens = tokenizer.tokenize("_a_ __a__ ___a___ ____a____"); - // assertEquals("<WORD>: _a_, \" \": , <WORD>: __a__, \" \": , <WORD>: ___a___, \" \": , <NOISE>: ____, <WORD>: a, <NOISE>: ____, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // tokens = tokenizer.tokenize("____a___ ___a____"); - // assertEquals("<NOISE>: ____, <WORD>: a___, \" \": , <WORD>: ___a, <NOISE>: ____, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // tokens = tokenizer.tokenize("_ __ ___ ____"); - // assertEquals("<NOISE>: _, \" \": , <NOISE>: __, \" \": , <NOISE>: ___, \" \": , <NOISE>: ____, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // tokens = tokenizer.tokenize("_a_ba__ba____ba____b"); - // assertEquals("<WORD>: _a_ba__ba, <NOISE>: ____, <WORD>: ba, <NOISE>: ____, <WORD>: b, <EOF>: <EOF>", - // Tokenizer.formatTokenList(tokens)); - // SpecialTokenRegistry.set(new SpecialTokenRegistry()); // Reset - // } - + @Test public void testSpecialTokenConfigurationDefault() { String tokenFile = "file:src/test/java/com/yahoo/prelude/query/parser/test/specialtokens.cfg"; @@ -219,6 +215,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(WORD, "b.s.d."), tokens.get(14)); } + @Test public void testSpecialTokenConfigurationOther() { String tokenFile = "file:src/test/java/com/yahoo/prelude/query/parser/test/specialtokens.cfg"; @@ -262,6 +259,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertTrue(((Token) tokens.get(10)).isSpecial()); } + @Test public void testSpecialTokenConfigurationMissing() { String tokenFile = "file:source/bogus/specialtokens.cfg"; @@ -277,6 +275,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(PLUS, "+"), tokens.get(2)); } + @Test public void testTokenReplacing() { assertEquals("Special tokens configured", 6, defaultRegistry.getSpecialTokens("default").size()); Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); @@ -303,6 +302,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertFalse(((Token) tokens.get(12)).isSpecial()); } + @Test public void testExactMatchTokenization() { Index index1=new Index("testexact1"); index1.setExact(true,null); @@ -342,6 +342,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertTrue(((Token) tokens.get(17)).isSpecial()); } + @Test public void testExactMatchTokenizationTerminatorTerminatesQuery() { Index index1=new Index("testexact1"); index1.setExact(true,null); @@ -374,6 +375,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertTrue(((Token) tokens.get(17)).isSpecial()); } + @Test public void testExactMatchTokenizationWithTerminatorTerminatedByEndOfString() { Index index1=new Index("testexact1"); index1.setExact(true,null); @@ -406,6 +408,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertTrue(((Token) tokens.get(17)).isSpecial()); } + @Test public void testExactMatchTokenizationEndsByColon() { Index index1=new Index("testexact1"); index1.setExact(true,null); @@ -439,6 +442,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(COLON, ":"), tokens.get(19)); } + @Test public void testExactMatchHeuristics() { Index index1=new Index("testexact1"); index1.setExact(true, null); @@ -710,6 +714,7 @@ public class TokenizerTestCase extends junit.framework.TestCase { assertEquals(new Token(WORD, "bar"), tokens.get(9)); } + @Test public void testSingleQuoteAsWordCharacter() { Tokenizer tokenizer = new Tokenizer(new SimpleLinguistics()); diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java index fb9fbe0d2df..7de9f9b5855 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java @@ -1,26 +1,31 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query.parser.test; - -import com.yahoo.prelude.query.*; +import com.yahoo.prelude.query.AndItem; +import com.yahoo.prelude.query.CompositeItem; +import com.yahoo.prelude.query.Item; +import com.yahoo.prelude.query.NullItem; +import com.yahoo.prelude.query.PhraseItem; +import com.yahoo.prelude.query.WordItem; import com.yahoo.prelude.query.parser.AbstractParser; import com.yahoo.search.Query; import com.yahoo.search.query.parser.Parsable; import com.yahoo.search.query.parser.Parser; import com.yahoo.search.query.parser.ParserEnvironment; import com.yahoo.search.query.parser.ParserFactory; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; /** * Tests guards against in single item phrases. * * @author Steinar Knutsen */ -public class WashPhrasesTestCase extends junit.framework.TestCase { - - public WashPhrasesTestCase(String name) { - super(name); - } +public class WashPhrasesTestCase { + @Test public void testSimplePositive() { PhraseItem root = new PhraseItem(); @@ -28,6 +33,7 @@ public class WashPhrasesTestCase extends junit.framework.TestCase { assertEquals("abc", transformQuery(root)); } + @Test public void testPositive1() { AndItem root = new AndItem(); @@ -40,6 +46,7 @@ public class WashPhrasesTestCase extends junit.framework.TestCase { assertEquals("AND a bcd e", transformQuery(root)); } + @Test public void testPositive2() { AndItem root = new AndItem(); @@ -56,17 +63,21 @@ public class WashPhrasesTestCase extends junit.framework.TestCase { assertEquals("AND a (AND bcd def) e", transformQuery(root)); } + @Test public void testNoTerms() { assertNull(transformQuery("\"\"")); } + @Test public void testNegative1() { assertEquals("\"abc def\"", transformQuery("\"abc def\"")); } + @Test public void testNegative2() { assertEquals("AND a \"abc def\" b", transformQuery("a \"abc def\" b")); } + @Test public void testNegative3() { AndItem root = new AndItem(); diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java index ee052d39e40..1b88a069c4b 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java @@ -1,32 +1,40 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query.test; +import com.yahoo.prelude.query.AndItem; +import com.yahoo.prelude.query.EquivItem; +import com.yahoo.prelude.query.MarkerWordItem; +import com.yahoo.prelude.query.NearItem; +import com.yahoo.prelude.query.ONearItem; +import com.yahoo.prelude.query.PureWeightedInteger; +import com.yahoo.prelude.query.PureWeightedString; +import com.yahoo.prelude.query.WeakAndItem; +import com.yahoo.prelude.query.WordItem; +import org.junit.Test; import java.nio.ByteBuffer; -import com.yahoo.prelude.query.*; - +import static org.junit.Assert.assertEquals; /** * Item encoding tests * * @author bratseth */ -public class ItemEncodingTestCase extends junit.framework.TestCase { - - public ItemEncodingTestCase(String name) { - super(name); - } +public class ItemEncodingTestCase { private void assertType(ByteBuffer buffer, int etype, int features) { byte type = buffer.get(); assertEquals("Code", etype, type & 0x1f); assertEquals("Features", features, (type & 0xe0) >> 5); } + private void assertWeight(ByteBuffer buffer, int weight) { int w = (weight > (1 << 5)) ? buffer.getShort() & 0x3fff: buffer.get(); assertEquals("Weight", weight, w); } + + @Test public void testWordItemEncoding() { WordItem word = new WordItem("test"); @@ -50,6 +58,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertEquals('t', buffer.get()); } + @Test public void testStartHostMarkerEncoding() { WordItem word = MarkerWordItem.createStartOfHost(); ByteBuffer buffer = ByteBuffer.allocate(128); @@ -75,6 +84,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertEquals('T', buffer.get()); } + @Test public void testEndHostMarkerEncoding() { WordItem word = MarkerWordItem.createEndOfHost(); @@ -99,6 +109,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertEquals('T', buffer.get()); } + @Test public void testFilterWordItemEncoding() { WordItem word = new WordItem("test"); @@ -122,6 +133,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertEquals('t', buffer.get()); } + @Test public void testNoRankedNoPositionDataWordItemEncoding() { WordItem word = new WordItem("test"); word.setRanked(false); @@ -146,6 +158,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertEquals('t', buffer.get()); } + @Test public void testAndItemEncoding() { WordItem a = new WordItem("a"); WordItem b = new WordItem("b"); @@ -168,6 +181,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertWord(buffer,"b"); } + @Test public void testNearItemEncoding() { WordItem a = new WordItem("a"); WordItem b = new WordItem("b"); @@ -191,6 +205,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertWord(buffer,"b"); } + @Test public void testONearItemEncoding() { WordItem a = new WordItem("a"); WordItem b = new WordItem("b"); @@ -213,6 +228,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertWord(buffer,"b"); } + @Test public void testEquivItemEncoding() { WordItem a = new WordItem("a"); WordItem b = new WordItem("b"); @@ -234,6 +250,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertWord(buffer, "b"); } + @Test public void testWandItemEncoding() { WordItem a = new WordItem("a"); WordItem b = new WordItem("b"); @@ -257,6 +274,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertWord(buffer, "b"); } + @Test public void testPureWeightedStringEncoding() { PureWeightedString a = new PureWeightedString("a"); ByteBuffer buffer = ByteBuffer.allocate(128); @@ -268,6 +286,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertString(buffer, a.getString()); } + @Test public void testPureWeightedStringEncodingWithNonDefaultWeight() { PureWeightedString a = new PureWeightedString("a", 7); ByteBuffer buffer = ByteBuffer.allocate(128); @@ -280,6 +299,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertString(buffer, a.getString()); } + @Test public void testPureWeightedIntegerEncoding() { PureWeightedInteger a = new PureWeightedInteger(23432568763534865l); ByteBuffer buffer = ByteBuffer.allocate(128); @@ -291,6 +311,7 @@ public class ItemEncodingTestCase extends junit.framework.TestCase { assertEquals("Value", a.getValue(), buffer.getLong()); } + @Test public void testPureWeightedLongEncodingWithNonDefaultWeight() { PureWeightedInteger a = new PureWeightedInteger(23432568763534865l, 7); ByteBuffer buffer = ByteBuffer.allocate(128); diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java index 5bd978417d8..a239db88b54 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java @@ -4,18 +4,18 @@ package com.yahoo.prelude.query.test; import com.yahoo.prelude.query.PhraseItem; import com.yahoo.prelude.query.PhraseSegmentItem; import com.yahoo.prelude.query.WordItem; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * Test methods changing phrase items. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class PhraseItemTestCase extends junit.framework.TestCase { - - public PhraseItemTestCase(String name) { - super(name); - } +public class PhraseItemTestCase { + @Test public void testAddItem() { PhraseItem p = new PhraseItem(); PhraseSegmentItem pp = new PhraseSegmentItem("", false, false); @@ -31,6 +31,7 @@ public class PhraseItemTestCase extends junit.framework.TestCase { assertEquals("\"a 'b c' d e f\"", p.toString()); } + @Test public void testAddItemWithIndex() { PhraseItem p = new PhraseItem(); PhraseSegmentItem pp = new PhraseSegmentItem("", false, false); @@ -46,6 +47,7 @@ public class PhraseItemTestCase extends junit.framework.TestCase { assertEquals("\"'a b' c d e f\"", p.toString()); } + @Test public void testSetItem() { PhraseItem backup = new PhraseItem(); PhraseSegmentItem segment = new PhraseSegmentItem("", false, false); diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java index 5f9d9db5dfa..bdaafc5d132 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java @@ -9,13 +9,14 @@ import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Iterator; -import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; /** - * @author <a href="mailto:magnarn@yahoo-inc.com">Magnar Nedland</a> + * @author Magnar Nedland */ public class PredicateQueryItemTestCase { + @Test public void requireThatItemConstantsAreSet() { PredicateQueryItem item = new PredicateQueryItem(); @@ -133,4 +134,5 @@ public class PredicateQueryItemTestCase { assertArrayEquals(expectedPrefix, Arrays.copyOfRange(actual, 0, expectedPrefix.length)); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java index b88ed25a397..aa4d0ed9a0a 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java @@ -6,6 +6,9 @@ import com.yahoo.prelude.query.NotItem; import com.yahoo.prelude.query.PhraseItem; import com.yahoo.prelude.query.WordItem; import com.yahoo.search.Query; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * <p>Tests that the correct query language strings are generated for various @@ -18,18 +21,16 @@ import com.yahoo.search.Query; * * @author bratseth */ -public class QueryLanguageTestCase extends junit.framework.TestCase { - - public QueryLanguageTestCase(String name) { - super(name); - } +public class QueryLanguageTestCase { + @Test public void testWord() { WordItem w = new WordItem("test"); assertEquals("test", w.toString()); } + @Test public void testWordWithIndex() { WordItem w = new WordItem("test"); @@ -37,6 +38,7 @@ public class QueryLanguageTestCase extends junit.framework.TestCase { assertEquals("test.index:test", w.toString()); } + @Test public void testPhrase() { PhraseItem p = new PhraseItem(); @@ -46,6 +48,7 @@ public class QueryLanguageTestCase extends junit.framework.TestCase { assertEquals("\"part of phrase\"", p.toString()); } + @Test public void testPhraseWithIndex() { PhraseItem p = new PhraseItem(); @@ -56,6 +59,7 @@ public class QueryLanguageTestCase extends junit.framework.TestCase { assertEquals("some.index:\"part of phrase\"", p.toString()); } + @Test public void testNotItem() { NotItem n = new NotItem(); @@ -65,6 +69,7 @@ public class QueryLanguageTestCase extends junit.framework.TestCase { assertEquals("+butthis -notthis -andnotthis", n.toString()); } + @Test public void testLanguagesInQueryParameter() { // Right parameter is the parameter given in the query, as language= // Left parameter is the language sent to linguistics @@ -103,4 +108,5 @@ public class QueryLanguageTestCase extends junit.framework.TestCase { assertEquals("nb_NO", new Query("?query=test&language=nb_NO").getParsingLanguage().languageCode()); */ } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java index 14900048e04..834a1986ada 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query.test; - import com.yahoo.search.Query; import com.yahoo.prelude.query.CompositeItem; import com.yahoo.prelude.query.Item; @@ -9,22 +8,22 @@ import com.yahoo.search.query.parser.Parsable; import com.yahoo.search.query.parser.Parser; import com.yahoo.search.query.parser.ParserEnvironment; import com.yahoo.search.query.parser.ParserFactory; +import org.junit.Test; import java.util.Iterator; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Tests query trees * * @author bratseth */ -public class QueryTestCase extends junit.framework.TestCase { - - public QueryTestCase(String name) { - super(name); - } +public class QueryTestCase { /** Tests that query hash and equality is value dependent only */ + @Test public void testQueryEquality() { String query = "RANK (+(AND \"baz gaz faz\" bazar) -\"foo bar foobar\") foofoo xyzzy"; String filter = "foofoo -\"foo bar foobar\" xyzzy +\"baz gaz faz\" +bazar"; @@ -37,6 +36,7 @@ public class QueryTestCase extends junit.framework.TestCase { } /** Check copy of query trees is a deep copy */ + @Test public void testDeepCopy() { Item root1 = parseQuery("a and b and (c or d) and e rank f andnot g", null, Query.Type.ADVANCED); Item root2 = root1.clone(); diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java index dbafaf3cd1b..3d31bc67df1 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java @@ -1,18 +1,23 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.query.test; -import com.yahoo.prelude.query.*; +import com.yahoo.prelude.query.CompositeIndexedItem; +import com.yahoo.prelude.query.Item; +import com.yahoo.prelude.query.PureWeightedString; +import com.yahoo.prelude.query.WeightedSetItem; +import com.yahoo.prelude.query.WordItem; +import org.junit.Test; import java.nio.ByteBuffer; -import com.yahoo.io.HexDump; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; -public class WeightedSetItemTestCase extends junit.framework.TestCase { - - public WeightedSetItemTestCase(String name) { - super(name); - } +public class WeightedSetItemTestCase { + @Test public void testTokenAPI() { WeightedSetItem ws = new WeightedSetItem("index"); assertEquals(0, ws.getNumTokens()); @@ -49,6 +54,7 @@ public class WeightedSetItemTestCase extends junit.framework.TestCase { assertEquals(2, ws.getNumTokens()); } + @Test public void testNegativeWeight() { WeightedSetItem ws = new WeightedSetItem("index"); assertEquals(new Integer(-10), ws.addToken("bad", -10)); @@ -70,6 +76,7 @@ public class WeightedSetItemTestCase extends junit.framework.TestCase { } } + @Test public void testEncoding() { WeightedSetItem item = new WeightedSetItem("index"); // need 2 alternative reference encoding, as the encoding @@ -108,4 +115,5 @@ public class WeightedSetItemTestCase extends junit.framework.TestCase { assertTrue(actual.equals(expect2)); } } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java index e0a7e0a0f6e..1e0c1400518 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java @@ -10,11 +10,12 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import junit.framework.TestCase; - import com.yahoo.prelude.query.Item; import com.yahoo.prelude.query.textualrepresentation.Discloser; import com.yahoo.prelude.query.textualrepresentation.TextualQueryRepresentation; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * Test of TextualQueryRepresentation. @@ -22,7 +23,8 @@ import com.yahoo.prelude.query.textualrepresentation.TextualQueryRepresentation; * @author tonytv */ @SuppressWarnings({"rawtypes", "unchecked"}) -public class TextualQueryRepresentationTestCase extends TestCase { +public class TextualQueryRepresentationTestCase { + private enum ExampleEnum { example; } @@ -99,12 +101,14 @@ public class TextualQueryRepresentationTestCase extends TestCase { return new TextualQueryRepresentation(item).toString(); } + @Test public void testBasic() throws Exception { String basicText = getTextualQueryRepresentation(basic); assertEquals(getCorrect("basic.txt"), basicText); } + @Test public void testComposite() throws Exception { String compositeText = getTextualQueryRepresentation(composite); assertEquals(getCorrect("composite.txt"), compositeText); @@ -118,4 +122,5 @@ public class TextualQueryRepresentationTestCase extends TestCase { result.append(line).append('\n'); return result.toString(); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java index 4196e23222c..98bd3e8c9e8 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java @@ -9,30 +9,29 @@ import com.yahoo.prelude.query.PhraseItem; import com.yahoo.prelude.query.WordItem; import com.yahoo.prelude.querytransform.CollapsePhraseSearcher; import com.yahoo.search.searchchain.Execution; -import com.yahoo.search.test.QueryTestCase; +import org.junit.Test; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import static org.junit.Assert.assertEquals; + /** * Check CollapsePhraseSearcher works and only is triggered when it * should. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class CollapsePhraseSearcherTestCase extends junit.framework.TestCase { - - public CollapsePhraseSearcherTestCase(String name) { - super(name); - } +public class CollapsePhraseSearcherTestCase { + @Test public void testSimplePositive() { PhraseItem root = new PhraseItem(); root.addItem(new WordItem("abc")); - assertEquals("abc", - transformQuery(root)); + assertEquals("abc", transformQuery(root)); } + @Test public void testPositive1() { AndItem root = new AndItem(); root.addItem(new WordItem("a")); @@ -44,6 +43,7 @@ public class CollapsePhraseSearcherTestCase extends junit.framework.TestCase { transformQuery(root)); } + @Test public void testPositive2() { AndItem root = new AndItem(); root.addItem(new WordItem("a")); @@ -57,14 +57,18 @@ public class CollapsePhraseSearcherTestCase extends junit.framework.TestCase { assertEquals("AND a (AND bcd def) e", transformQuery(root)); } + + @Test public void testNoTerms() { assertEquals("NULL", transformQuery("?query=" + enc("\"\""))); } + @Test public void testNegative1() { assertEquals("\"abc def\"", transformQuery("?query=" + enc("\"abc def\""))); } + @Test public void testNegative2() { assertEquals("AND a \"abc def\" b", transformQuery("?query=" + enc("a \"abc def\" b"))); } @@ -78,6 +82,7 @@ public class CollapsePhraseSearcherTestCase extends junit.framework.TestCase { } } + @Test public void testNegative3() { AndItem root = new AndItem(); root.addItem(new WordItem("a")); @@ -92,6 +97,7 @@ public class CollapsePhraseSearcherTestCase extends junit.framework.TestCase { assertEquals("AND a (AND bcd \"def ghi\") e", transformQuery(root)); } + private String transformQuery(String rawQuery) { CollapsePhraseSearcher searcher = new CollapsePhraseSearcher(); Query query = new Query(rawQuery); diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java index cba2e7da647..00bc5d3f9d2 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java @@ -13,25 +13,23 @@ import com.yahoo.search.Result; import com.yahoo.search.Searcher; import com.yahoo.search.searchchain.Execution; import com.yahoo.search.test.QueryTestCase; -import junit.framework.TestCase; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * Control query transformations when doing index name expansion in QRS. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class IndexCombinatorTestCase extends TestCase { +public class IndexCombinatorTestCase { private Searcher transformer; private IndexFacts f; - public IndexCombinatorTestCase(String arg0) { - super(arg0); - } - - @Override + @Before protected void setUp() throws Exception { - super.setUp(); transformer = new IndexCombinatorSearcher(); f = new IndexFacts(); f.addIndex("one", "z"); @@ -40,11 +38,7 @@ public class IndexCombinatorTestCase extends TestCase { f.addIndex("one", i); } - @Override - protected void tearDown() throws Exception { - super.tearDown(); - } - + @Test public void testDoNothing() { Result r = search("?query=z:y"); assertEquals("z:y", r.getQuery().getModel().getQueryTree().getRoot().toString()); @@ -54,11 +48,13 @@ public class IndexCombinatorTestCase extends TestCase { return new Execution(transformer, Execution.Context.createContextStub(f)).search(new Query(QueryTestCase.httpEncode(query))); } + @Test public void testBasic() { Result r = search("?query=y"); assertEquals("OR a:y i:y", r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicPair() { Result r = search("?query=x y"); assertEquals( @@ -66,17 +62,20 @@ public class IndexCombinatorTestCase extends TestCase { .getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicTriplet() { Result r = search("?query=x y z"); assertEquals("AND (OR a:x i:x) (OR a:y i:y) (OR a:z i:z)", r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicMixedSinglet() { Result r = search("?query=x z:q"); assertEquals("OR (AND a:x z:q) (AND i:x z:q)", r.getQuery().getModel().getQueryTree().getRoot() .toString()); } + @Test public void testBasicMixedPair() { Result r = search("?query=x y z:q"); assertEquals( @@ -84,22 +83,26 @@ public class IndexCombinatorTestCase extends TestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicMixedTriplet() { Result r = search("?query=x y z:q r"); assertEquals("AND (OR a:x i:x) (OR a:y i:y) z:q (OR a:r i:r)", r .getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicOr() { Result r = search("?query=x y&type=any"); assertEquals("OR a:y i:y a:x i:x", r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicPhrase() { Result r = search("?query=\"x y\""); assertEquals("OR a:x y i:x y", r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testPhraseAndTerm() { Result r = search("?query=\"x y\" z"); assertEquals( @@ -107,12 +110,14 @@ public class IndexCombinatorTestCase extends TestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testBasicNot() { Result r = search("?query=+x -y"); assertEquals("+(OR a:x i:x) -(OR a:y i:y)", r.getQuery().getModel().getQueryTree().getRoot() .toString()); } + @Test public void testLessBasicNot() { Result r = search("?query=a and b andnot c&type=adv"); assertEquals( @@ -120,6 +125,7 @@ public class IndexCombinatorTestCase extends TestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testLongerAndInPositive() { Result r = search("?query=a and b and c andnot d&type=adv"); assertEquals( @@ -127,12 +133,14 @@ public class IndexCombinatorTestCase extends TestCase { .getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testTreeInNegativeBranch() { Result r = search("?query=a andnot (b and c)&type=adv"); assertEquals("+(OR a:a i:a) -(AND (OR a:b i:b) (OR a:c i:c))", r .getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testSomeTerms() { Result r = search("?query=a b -c +d g.h \"abc def\" z:q"); assertEquals( @@ -140,6 +148,7 @@ public class IndexCombinatorTestCase extends TestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } + @Test public void testMixedIndicesAndAttributes() { String indexInfoConfigID = "file:src/test/java/com/yahoo/prelude/querytransform/test/indexcombinator.cfg"; ConfigGetter<IndexInfoConfig> getter = new ConfigGetter<>(IndexInfoConfig.class); @@ -162,4 +171,5 @@ public class IndexCombinatorTestCase extends TestCase { + " (AND attribute2:a b attribute2:c d)", r.getQuery().getModel().getQueryTree().getRoot().toString()); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java index 0c26325e96b..d59b2f49562 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java @@ -1,17 +1,19 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.querytransform.test; -import junit.framework.TestCase; - import com.yahoo.search.Query; import com.yahoo.prelude.querytransform.NoRankingSearcher; import com.yahoo.search.Searcher; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; -public class NoRankingSearcherTestCase extends TestCase { +public class NoRankingSearcherTestCase { Searcher s = new NoRankingSearcher(); + @Test public void testDoSearch() { Query q = new Query("?query=a&sorting=%2ba%20-b&ranking=hello"); assertEquals("hello", q.getRanking().getProfile()); @@ -19,21 +21,25 @@ public class NoRankingSearcherTestCase extends TestCase { assertEquals("unranked", q.getRanking().getProfile()); } + @Test public void testSortOnRelevanceAscending() { Query q = new Query("?query=a&sorting=%2ba%20-b%20-[rank]&ranking=hello"); new Execution(s, Execution.Context.createContextStub()).search(q); assertEquals("hello", q.getRanking().getProfile()); } + @Test public void testSortOnRelevanceDescending() { Query q = new Query("?query=a&sorting=%2ba%20-b%20-[rank]&ranking=hello"); new Execution(s, Execution.Context.createContextStub()).search(q); assertEquals("hello", q.getRanking().getProfile()); } + @Test public void testNoSorting() { Query q = new Query("?query=a"); new Execution(s, Execution.Context.createContextStub()).search(q); assertEquals("default", q.getRanking().getProfile()); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java index 54b54dfb178..95c8327df01 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java @@ -7,20 +7,20 @@ import com.yahoo.prelude.query.WordItem; import com.yahoo.prelude.querytransform.NonPhrasingSearcher; import com.yahoo.search.Searcher; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * Tests non-phrasing * * @author bratseth */ -public class NonPhrasingSearcherTestCase extends junit.framework.TestCase { +public class NonPhrasingSearcherTestCase { private Searcher searcher; - public NonPhrasingSearcherTestCase(String name) { - super(name); - } - + @Test public void testSingleWordNonPhrasing() { searcher= new NonPhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); @@ -31,6 +31,7 @@ public class NonPhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("AND void kanoo", query.getModel().getQueryTree().getRoot().toString()); } + @Test public void testMultipleWordNonPhrasing() { searcher= new NonPhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); @@ -44,6 +45,7 @@ public class NonPhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("kanoo",((WordItem)item.getItem(1)).getWord()); } + @Test public void testNoNonPhrasingIfNoOtherPhrases() { searcher= new NonPhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); @@ -57,6 +59,7 @@ public class NonPhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("vidor",((WordItem)item.getItem(1)).getWord()); } + @Test public void testNoNonPhrasingIfSuggestOnly() { searcher= new NonPhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java index 2cb511defce..82193867580 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java @@ -5,18 +5,21 @@ import com.yahoo.prelude.query.AndItem; import com.yahoo.prelude.query.IntItem; import com.yahoo.prelude.query.WordItem; import com.yahoo.prelude.querytransform.PhraseMatcher; +import org.junit.Test; import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + /** * @author bratseth */ -public class PhraseMatcherTestCase extends junit.framework.TestCase { - - public PhraseMatcherTestCase(String name) { - super(name); - } +public class PhraseMatcherTestCase { + @Test public void testSingleItemMatching() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); matcher.setMatchSingleItems(true); @@ -35,6 +38,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testSingleItemMatchingCaseInsensitive() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); matcher.setMatchSingleItems(true); @@ -54,6 +58,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testSingleItemMatchingWithPluralIgnore() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); matcher.setMatchSingleItems(true); @@ -72,6 +77,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testSingleItemMatchingCaseInsensitiveWithPluralIgnore() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); matcher.setMatchSingleItems(true); @@ -91,6 +97,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testPhraseMatching() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); AndItem and=new AndItem(); @@ -121,6 +128,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testPhraseMatchingCaseInsensitive() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); AndItem and=new AndItem(); @@ -155,6 +163,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testPhraseMatchingWithNumber() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); AndItem and=new AndItem(); @@ -185,6 +194,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } + @Test public void testPhraseMatchingWithPluralIgnore() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); AndItem and=new AndItem(); @@ -215,7 +225,7 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertFalse(i.hasNext()); } - + @Test public void testPhraseMatchingCaseInsensitiveWithPluralIgnore() { PhraseMatcher matcher=new PhraseMatcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa",true); AndItem and=new AndItem(); @@ -249,4 +259,5 @@ public class PhraseMatcherTestCase extends junit.framework.TestCase { assertEquals("test",i.getReplace()); assertFalse(i.hasNext()); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java index 33213cccc34..00bb1ca75d0 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java @@ -11,25 +11,22 @@ import com.yahoo.prelude.query.WordItem; import com.yahoo.prelude.querytransform.PhrasingSearcher; import com.yahoo.search.Searcher; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Tests phrasing stuff * * @author bratseth - * @author <a href="mailto:einarmr@europe.yahoo-inc.com">Einar M R Rosenvinge</a> + * @author Einar M R Rosenvinge */ -public class PhrasingSearcherTestCase extends junit.framework.TestCase { - - private Searcher searcher; +public class PhrasingSearcherTestCase { - public PhrasingSearcherTestCase(String name) { - super(name); - } - - @SuppressWarnings("deprecation") + @Test public void testTotalPhrasing() { - - searcher= + Searcher searcher= new PhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); Query query=new Query(); @@ -48,10 +45,9 @@ public class PhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("someindex",phrase.getIndexName()); } - @SuppressWarnings("deprecation") + @Test public void testPartialPhrasing() { - - searcher= + Searcher searcher= new PhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); Query query=new Query("?query=void%20tudor%20vidor%20kanoo"); @@ -67,9 +63,9 @@ public class PhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("vidor",phrase.getWordItem(1).getWord()); } + @Test public void testPartialPhrasingSuggestOnly() { - - searcher= + Searcher searcher= new PhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); Query query=new Query("?query=void%20tudor%20vidor%20kanoo&suggestonly=true"); @@ -81,9 +77,9 @@ public class PhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("kanoo",((WordItem)item.getItem(3)).getWord()); } + @Test public void testNoPhrasingIfDifferentIndices() { - - searcher= + Searcher searcher= new PhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); Query query=new Query(); @@ -104,9 +100,9 @@ public class PhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("vidor",word.getWord()); } + @Test public void testMultiplePhrases() { - - searcher= + Searcher searcher= new PhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); Query query=new Query(); @@ -137,9 +133,9 @@ public class PhrasingSearcherTestCase extends junit.framework.TestCase { assertEquals("AND someindex:tudor someindex:\"tudor vidor\" someindex:vidor (OR tudor (AND anotherindex:\"this is a test\" anotherindex:\"tudor vidor\") vidor)", query.getModel().getQueryTree().getRoot().toString()); } + @Test public void testNoDetection() { - - searcher= + Searcher searcher= new PhrasingSearcher("src/test/java/com/yahoo/prelude/querytransform/test/test-fsa.fsa"); Query query=new Query(); @@ -155,8 +151,9 @@ public class PhrasingSearcherTestCase extends junit.framework.TestCase { } + @Test public void testNoFileNoChange() { - searcher = new PhrasingSearcher(""); + Searcher searcher = new PhrasingSearcher(""); Query query=new Query(); AndItem andItem=new AndItem(); diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java index 4deea7da8cf..ad1c12629c3 100755 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java @@ -16,12 +16,19 @@ import com.yahoo.prelude.query.NullItem; import com.yahoo.prelude.query.WordItem; import com.yahoo.prelude.querytransform.RecallSearcher; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; /** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> + * @author Simon Thoresen */ -public class RecallSearcherTestCase extends junit.framework.TestCase { +public class RecallSearcherTestCase { + @Test public void testIgnoreEmptyProperty() { RecallSearcher searcher = new RecallSearcher(); Query query = new Query(); @@ -30,6 +37,7 @@ public class RecallSearcherTestCase extends junit.framework.TestCase { assertTrue(query.getModel().getQueryTree().getRoot() instanceof NullItem); } + @Test public void testDenyRankItems() { RecallSearcher searcher = new RecallSearcher(); Query query = new Query("?recall=foo"); @@ -37,6 +45,7 @@ public class RecallSearcherTestCase extends junit.framework.TestCase { assertNotNull(result.hits().getError()); } + @Test public void testParse() { List<String> empty = new ArrayList<>(); assertQueryTree("?query=foo", Arrays.asList("foo"), empty); diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java index fed97199f1d..4987f9902ce 100644 --- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java @@ -27,6 +27,12 @@ import com.yahoo.search.result.Hit; import com.yahoo.search.searchchain.Execution; import com.yahoo.search.searchchain.SearchChain; import com.yahoo.search.searchchain.SearchChainRegistry; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; /** * Tests the BlendingSearcher class @@ -36,19 +42,16 @@ import com.yahoo.search.searchchain.SearchChainRegistry; */ // The SuppressWarnings is to shut up the compiler about using // deprecated FastHit constructor in the tests. -@SuppressWarnings({ "unchecked", "rawtypes" }) -public class BlendingSearcherTestCase extends junit.framework.TestCase { +@SuppressWarnings({ "rawtypes" }) +public class BlendingSearcherTestCase { - public BlendingSearcherTestCase(String name) { - super(name); - } + private static final double delta = 0.00000001; public static class BlendingSearcherWrapper extends Searcher { private SearchChain blendingChain; private final FederationConfig.Builder builder = new FederationConfig.Builder(); - private final Map<String, Searcher> searchers - = new HashMap<>(); + private final Map<String, Searcher> searchers = new HashMap<>(); private SearchChainRegistry chainRegistry; private final String blendingDocumentId; @@ -108,7 +111,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { StrictContractsConfig contracts = new StrictContractsConfig(new StrictContractsConfig.Builder()); FederationSearcher fedSearcher = - new FederationSearcher(new FederationConfig(builder), contracts, new ComponentRegistry<TargetSelector>()); + new FederationSearcher(new FederationConfig(builder), contracts, new ComponentRegistry<>()); BlendingSearcher blendingSearcher = new BlendingSearcher(blendingDocumentId); blendingChain = new SearchChain(ComponentId.createAnonymousComponentId("blendingChain"), blendingSearcher, fedSearcher); return true; @@ -119,7 +122,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { } } - @SuppressWarnings("serial") + @Test public void testitTwoPhase() { DocumentSourceSearcher chain1 = new DocumentSourceSearcher(); @@ -202,6 +205,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { } + @Test public void testMultipleBackendsWithDuplicateRemoval() { DocumentSourceSearcher chain1 = new DocumentSourceSearcher(); DocumentSourceSearcher chain2 = new DocumentSourceSearcher(); @@ -226,6 +230,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { assertEquals(101, ((int) cr.hits().get(0).getRelevance().getScore())); } + @Test public void testMultipleBackendsWithErrorMerging() { DocumentSourceSearcher chain1 = new DocumentSourceSearcher(); DocumentSourceSearcher chain2 = new DocumentSourceSearcher(); @@ -260,6 +265,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { assertEquals(com.yahoo.container.protect.Error.NO_BACKENDS_IN_SERVICE.code, cr.hits().getError().getCode()); } + @Test public void testBlendingWithSortSpec() { DocumentSourceSearcher chain1 = new DocumentSourceSearcher(); DocumentSourceSearcher chain2 = new DocumentSourceSearcher(); @@ -318,6 +324,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { * document sumaries for hits it did not create (it will insert the wrong values). * But are we sure fsearch handles this case correctly? */ + @Test public void testBlendingWithSortSpecAnd2Phase() { DocumentSourceSearcher chain1 = new DocumentSourceSearcher(); DocumentSourceSearcher chain2 = new DocumentSourceSearcher(); @@ -391,47 +398,52 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { return blender; } + @Test public void testOnlyFirstBackend() { BlendingSearcherWrapper searcher = setupFirstAndSecond(); Query query = new Query("/search?query=banana&search=first"); Result result = new Execution(searcher, Execution.Context.createContextStub()).search(query); assertEquals(1, result.getHitCount()); - assertEquals(200.0, result.hits().get(0).getRelevance().getScore()); + assertEquals(200.0, result.hits().get(0).getRelevance().getScore(), delta); } + @Test public void testOnlySecondBackend() { BlendingSearcherWrapper searcher = setupFirstAndSecond(); Query query = new Query("/search?query=banana&search=second"); Result result = new Execution(searcher, Execution.Context.createContextStub()).search(query); assertEquals(2, result.getHitCount()); - assertEquals(300.0, result.hits().get(0).getRelevance().getScore()); - assertEquals(100.0, result.hits().get(1).getRelevance().getScore()); + assertEquals(300.0, result.hits().get(0).getRelevance().getScore(), delta); + assertEquals(100.0, result.hits().get(1).getRelevance().getScore(), delta); } + @Test public void testBothBackendsExplicitly() { BlendingSearcherWrapper searcher = setupFirstAndSecond(); Query query = new Query("/search?query=banana&search=first,second"); Result result = new Execution(searcher, Execution.Context.createContextStub()).search(query); assertEquals(3, result.getHitCount()); - assertEquals(300.0, result.hits().get(0).getRelevance().getScore()); - assertEquals(200.0, result.hits().get(1).getRelevance().getScore()); - assertEquals(100.0, result.hits().get(2).getRelevance().getScore()); + assertEquals(300.0, result.hits().get(0).getRelevance().getScore(), delta); + assertEquals(200.0, result.hits().get(1).getRelevance().getScore(), delta); + assertEquals(100.0, result.hits().get(2).getRelevance().getScore(), delta); } + @Test public void testBothBackendsImplicitly() { BlendingSearcherWrapper searcher = setupFirstAndSecond(); Query query = new Query("/search?query=banana"); Result result = new Execution(searcher, Execution.Context.createContextStub()).search(query); assertEquals(3, result.getHitCount()); - assertEquals(300.0, result.hits().get(0).getRelevance().getScore()); - assertEquals(200.0, result.hits().get(1).getRelevance().getScore()); - assertEquals(100.0, result.hits().get(2).getRelevance().getScore()); + assertEquals(300.0, result.hits().get(0).getRelevance().getScore(), delta); + assertEquals(200.0, result.hits().get(1).getRelevance().getScore(), delta); + assertEquals(100.0, result.hits().get(2).getRelevance().getScore(), delta); } + @Test public void testNonexistingBackendCausesError() { BlendingSearcherWrapper searcher = setupFirstAndSecond(); Query query = new Query("/search?query=banana&search=nonesuch"); @@ -445,6 +457,7 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { // e.getDetailedMessage()); } + @Test public void testNonexistingBackendsCausesErrorOnFirst() { // Feel free to change to include all in the detail message... BlendingSearcherWrapper searcher = setupFirstAndSecond(); @@ -460,21 +473,21 @@ public class BlendingSearcherTestCase extends junit.framework.TestCase { e.toString()); } + @Test public void testExistingAndNonExistingBackendCausesBothErrorAndResult() { BlendingSearcherWrapper searcher = setupFirstAndSecond(); Query query = new Query("/search?query=banana&search=first,nonesuch,second"); Result result = new Execution(searcher, Execution.Context.createContextStub(new IndexFacts())).search(query); assertEquals(3, result.getConcreteHitCount()); - assertEquals(300.0, result.hits().get(1).getRelevance().getScore()); - assertEquals(200.0, result.hits().get(2).getRelevance().getScore()); - assertEquals(100.0, result.hits().get(3).getRelevance().getScore()); + assertEquals(300.0, result.hits().get(1).getRelevance().getScore(), delta); + assertEquals(200.0, result.hits().get(2).getRelevance().getScore(), delta); + assertEquals(100.0, result.hits().get(3).getRelevance().getScore(), delta); assertNotNull(result.hits().getError()); ErrorMessage e = result.hits().getError(); //TODO: Do not depend on sources order assertEquals("Could not resolve source ref 'nonesuch'. Valid source refs are first, second.", - e.getDetailedMessage()); - - + e.getDetailedMessage()); } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java index c5bb223cbe4..7c170cc59b3 100644 --- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java @@ -6,28 +6,27 @@ import com.yahoo.search.result.DefaultErrorHit; import com.yahoo.search.result.ErrorHit; import com.yahoo.search.result.ErrorMessage; import com.yahoo.text.XMLWriter; +import org.junit.Test; import java.io.StringWriter; +import static org.junit.Assert.assertEquals; + /** * Tests marking hit properties as XML * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class ErrorHitRenderTestCase extends junit.framework.TestCase { - - public ErrorHitRenderTestCase(String name) { - super(name); - } +public class ErrorHitRenderTestCase { + @Test public void testXMLEscaping() throws java.io.IOException { - ErrorHit h = new DefaultErrorHit("testcase", - ErrorMessage.createUnspecifiedError("<>\"&")); + ErrorHit h = new DefaultErrorHit("testcase", ErrorMessage.createUnspecifiedError("<>\"&")); StringWriter writer = new StringWriter(); SearchRendererAdaptor.renderMessageDefaultErrorHit(new XMLWriter(writer), h.errors().iterator().next()); assertEquals("<error source=\"testcase\" error=\"Unspecified error\" code=\"5\"><>\"&</error>\n", writer.toString()); - } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java index 2b03825b934..bf86ca4544b 100644 --- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java @@ -3,7 +3,6 @@ package com.yahoo.prelude.searcher.test; import com.google.common.util.concurrent.MoreExecutors; import com.yahoo.component.chain.Chain; -import com.yahoo.language.Linguistics; import com.yahoo.language.simple.SimpleLinguistics; import com.yahoo.prelude.fastsearch.FastHit; import com.yahoo.prelude.query.AndItem; @@ -23,23 +22,26 @@ import com.yahoo.search.result.HitGroup; import com.yahoo.search.result.Relevance; import com.yahoo.search.searchchain.Execution; import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher; +import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +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; + /** * Tests the FieldCollapsingSearcher class * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ @SuppressWarnings("deprecation") -public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { - - public FieldCollapsingSearcherTestCase (String name) { - super(name); - } +public class FieldCollapsingSearcherTestCase { private FastHit createHit(String uri,int relevancy,int mid) { FastHit hit = new FastHit(uri,relevancy); @@ -66,6 +68,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { } } + @Test public void testFieldCollapsingWithoutHits() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -82,6 +85,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { assertEquals(1, checker.queryCount); } + @Test public void testFieldCollapsingWithoutHitsHugeOffset() { Map<Searcher, Searcher> chained = new HashMap<>(); @@ -97,6 +101,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { assertEquals(1, checker.queryCount); } + @Test public void testFieldCollapsing() { Map<Searcher, Searcher> chained = new HashMap<>(); @@ -134,6 +139,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { assertHit("http://acme.org/g.html", 7,3,r.hits().get(3)); } + @Test public void testFieldCollapsingTwoPhase() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -169,6 +175,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { assertHit("http://acme.org/g.html", 7,3,r.hits().get(3)); } + @Test public void testNoCollapsingIfNotAskedTo() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -201,6 +208,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { * Tests that collapsing many hits from one site works, and without * an excessive number of backend requests */ + @Test public void testCollapsingLargeCollection() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -245,6 +253,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { /** * Tests collapsing of "messy" data */ + @Test public void testCollapsingDispersedCollection() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -289,6 +298,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { } } + @Test public void testQueryTransformAndCollapsing() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -331,6 +341,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { // in the fill call, then saying the hits are filled for the // ignored argument. Rewrite to contain different summaries if // DocumentSourceSearcher gets extended. + @Test public void testFieldCollapsingTwoPhaseSelectSummary() { // Set up Map<Searcher, Searcher> chained = new HashMap<>(); @@ -381,6 +392,7 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { assertHit("http://acme.org/g.html", 7,3,r.hits().get(3)); } + @Test public void testFieldCollapsingWithGrouping() { // Set up FieldCollapsingSearcher collapse = new FieldCollapsingSearcher("other"); @@ -477,4 +489,5 @@ public class FieldCollapsingSearcherTestCase extends junit.framework.TestCase { return root; } } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java index 8d427dfffa8..1d1b13d499f 100644 --- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java @@ -11,6 +11,10 @@ import com.yahoo.search.result.Hit; import com.yahoo.search.result.HitGroup; import com.yahoo.search.searchchain.Execution; import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; /** * Test of MultipleResultsSearcher @@ -18,7 +22,7 @@ import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher; * @author tonytv */ @SuppressWarnings("deprecation") -public class MultipleResultsTestCase extends junit.framework.TestCase { +public class MultipleResultsTestCase { private DocumentSourceSearcher docSource; @@ -26,13 +30,14 @@ public class MultipleResultsTestCase extends junit.framework.TestCase { private Chain<Searcher> chain; + @Before protected void setUp() { docSource=new DocumentSourceSearcher(); searcher=new MultipleResultsSearcher(); chain=new Chain<>("multipleresultschain",searcher,docSource); } - + @Test public void testRetrieveHeterogenousHits() { Query query = createQuery(); @@ -57,6 +62,7 @@ public class MultipleResultsTestCase extends junit.framework.TestCase { assertEquals( 3, docSource.getQueryCount() ); } + @Test public void testRetrieveHitsForGroup() { Query query = createQuery(); @@ -85,6 +91,7 @@ public class MultipleResultsTestCase extends junit.framework.TestCase { assertEquals( 15, moviesGroup.size()); } + @Test public void testNoHitsForResultSet() { Query query = createQuery(); @@ -139,4 +146,5 @@ public class MultipleResultsTestCase extends junit.framework.TestCase { query.getModel().setRestrict(restrictList); return query; } + } diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java index 1b2838e4183..e2973f8ed65 100644 --- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java @@ -3,7 +3,6 @@ package com.yahoo.prelude.searcher.test; import com.google.common.util.concurrent.MoreExecutors; import com.yahoo.component.chain.Chain; -import com.yahoo.language.Linguistics; import com.yahoo.language.simple.SimpleLinguistics; import com.yahoo.search.Query; import com.yahoo.search.Result; @@ -12,29 +11,29 @@ import com.yahoo.search.Searcher; import com.yahoo.search.rendering.RendererRegistry; import com.yahoo.search.result.ErrorHit; import com.yahoo.search.searchchain.Execution; +import org.junit.Test; import java.util.ArrayList; import java.util.List; +import static org.junit.Assert.assertEquals; + /** - * Tests for the PosSearcher class. + * Tests for the PosSearcher * - * @author <a href="mailto:gunnarga@yahoo-inc.com">Gunnar Gauslaa Bergem</a> + * @author Gunnar Gauslaa Bergem */ @SuppressWarnings("deprecation") -public class PosSearcherTestCase extends junit.framework.TestCase { - private PosSearcher searcher = new PosSearcher(); - private Query q; +public class PosSearcherTestCase { - public PosSearcherTestCase(String name) { - super(name); - } + private final PosSearcher searcher = new PosSearcher(); /** * Tests basic lat/long input. */ + @Test public void testBasics() { - q = new Query(); + Query q = new Query(); q.properties().set("pos.ll", "N0;E0"); doSearch(searcher, q, 0, 10); assertEquals("(2,0,0,450668,0,1,0,4294967295)", q.getRanking().getLocation().toString()); @@ -48,8 +47,9 @@ public class PosSearcherTestCase extends junit.framework.TestCase { /** * Tests basic bounding box input. */ + @Test public void testBoundingBox() { - q = new Query(); + Query q = new Query(); q.properties().set("pos.bb", "n=51.9,s=50.2,e=0.34,w=-10.01"); doSearch(searcher, q, 0, 10); assertEquals("[2,-10010000,50200000,340000,51900000]", @@ -77,8 +77,9 @@ public class PosSearcherTestCase extends junit.framework.TestCase { /** * Tests basic bounding box input. */ + @Test public void testBoundingBoxAndRadius() { - q = new Query(); + Query q = new Query(); q.properties().set("pos.bb", "n=60.111,s=59.999,e=30.111,w=29.999"); q.properties().set("pos.ll", "N60;E30"); doSearch(searcher, q, 0, 10); @@ -91,8 +92,9 @@ public class PosSearcherTestCase extends junit.framework.TestCase { /** * Tests different ways of specifying the radius. */ + @Test public void testRadiusUnits() { - q = new Query(); + Query q = new Query(); q.properties().set("pos.ll", "N0;E0"); q.properties().set("pos.radius", "2km"); doSearch(searcher, q, 0, 10); @@ -121,8 +123,9 @@ public class PosSearcherTestCase extends junit.framework.TestCase { /** * Tests xy position (internal format). */ + @Test public void testXY() { - q = new Query(); + Query q = new Query(); q.properties().set("pos.xy", "22500;22500"); doSearch(searcher, q, 0, 10); assertEquals("(2,22500,22500,5000,0,1,0)", q.getRanking().getLocation().toString()); @@ -134,24 +137,24 @@ public class PosSearcherTestCase extends junit.framework.TestCase { assertEquals("(2,22500,22500,5000,0,1,0)", q.getRanking().getLocation().toString()); } + @Test public void testNotOverridingOldStyleParameters() { PosSearcher searcher = new PosSearcher(); - q = new Query("?query=test&pos.ll=N10.15;E6.08&location=(2,-1100222,0,300,0,1,0,CalcLatLon)"); + Query q = new Query("?query=test&pos.ll=N10.15;E6.08&location=(2,-1100222,0,300,0,1,0,CalcLatLon)"); q.setTraceLevel(1); doSearch(searcher, q, 0, 10); assertEquals("(2,-1100222,0,300,0,1,0,4294967295)", q.getRanking().getLocation().toString()); - //assertEquals("query already has a location set, not processing 'pos' params", - // result.getHit(0).getFeedback(0)); } /** * Tests input parameters that should report errors. */ + @Test public void testInvalidInput() { PosSearcher searcher = new PosSearcher(); Result result; - q = new Query(); + Query q = new Query(); q.properties().set("pos.ll", "NE74.14;E14.48"); result = doSearch(searcher, q, 0, 10); assertEquals("Error in pos parameters: Unable to parse lat/long string 'NE74.14;E14.48': already set direction once, cannot add direction: E", @@ -165,8 +168,9 @@ public class PosSearcherTestCase extends junit.framework.TestCase { ((ErrorHit)result.hits().get(0)).errors().iterator().next().getDetailedMessage()); } + @Test public void testWrappingTheNorthPole() { - q = new Query(); + Query q = new Query(); q.properties().set("pos.ll", "N89.9985365158;E122.163600102"); q.properties().set("pos.radius", "20mi"); doSearch(searcher, q, 0, 10); diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java b/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java index d799363949d..939dd7ab42c 100644 --- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java +++ b/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java @@ -31,6 +31,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Map; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.*; diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java index 01cc296472a..add7e9811af 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.Map; /** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> + * @author Simon Thoresen */ public class FieldPathUpdateAdapter implements UpdateAdapter { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java index a24c282d48a..d957f4c0e25 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java @@ -390,7 +390,8 @@ public class NodeRepository extends AbstractComponent { public Node setDirty(String hostname, Agent agent, String reason) { Node node = getNode(hostname, Node.State.provisioned, Node.State.failed, Node.State.parked).orElseThrow(() -> - new IllegalArgumentException("Could not deallocate " + hostname + ": No such node in the provisioned, failed or parked state")); + new IllegalArgumentException("Could not deallocate " + hostname + + ": No such node in the provisioned, failed or parked state")); return setDirty(node, agent, reason); } @@ -482,7 +483,7 @@ public class NodeRepository extends AbstractComponent { * Should only be called by node-admin for docker containers */ public List<Node> markNodeAvailableForNewAllocation(String hostname) { - Node node = getNode(hostname).orElseThrow(() -> new NotFoundException("No node with hostname \"" + hostname + '"')); + Node node = getNode(hostname).orElseThrow(() -> new NotFoundException("No node with hostname '" + hostname + "'")); if (node.flavor().getType() != Flavor.Type.DOCKER_CONTAINER) { throw new IllegalArgumentException( "Cannot make " + hostname + " available for new allocation, must be a docker container node"); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java index d605958d6bc..e5d1bb98936 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java @@ -274,7 +274,8 @@ public class NodeFailer extends Maintainer { catch (RuntimeException e) { // The expected reason for deployment to fail here is that there is no capacity available to redeploy. // In that case we should leave the node in the active state to avoid failing additional nodes. - nodeRepository().reactivate(node.hostname(), Agent.system, "Failed to redeploy after being failed by NodeFailer"); + nodeRepository().reactivate(node.hostname(), Agent.system, + "Failed to redeploy after being failed by NodeFailer"); log.log(Level.WARNING, "Attempted to fail " + node + " for " + node.allocation().get().owner() + ", but redeploying without the node failed", e); return false; @@ -294,7 +295,7 @@ public class NodeFailer extends Maintainer { .filter(failedEvent -> failedEvent.at().isAfter(startOfThrottleWindow)) .count(); int allowedFailedNodes = (int) Math.max(nodes.size() * throttlePolicy.fractionAllowedToFail, - throttlePolicy.minimumAllowedToFail); + throttlePolicy.minimumAllowedToFail); boolean throttle = allowedFailedNodes < recentlyFailedNodes || (allowedFailedNodes == recentlyFailedNodes && !node.type().isDockerHost()); diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj index 1ad8706aa2f..0ae12b14f30 100755 --- a/searchlib/src/main/javacc/RankingExpressionParser.jj +++ b/searchlib/src/main/javacc/RankingExpressionParser.jj @@ -274,14 +274,16 @@ ReferenceNode feature() : { return new ReferenceNode(name, args, out); } } -// Query features can be referenced as "$name" instead of "query(name)". TODO: Warn this is deprecated +// Rank properties are referenced by $propertyname ReferenceNode legacyQueryFeature() : { String name; } { ( <DOLLAR> name = identifier() ) - { return new ReferenceNode("query", Arrays.asList((ExpressionNode)new NameNode(name)), null); } + { + return new ReferenceNode("query", Arrays.asList((ExpressionNode)new NameNode(name)), null); + } } String outs() : diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java index acdf668cdf5..b3599903714 100644 --- a/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java +++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java @@ -13,7 +13,6 @@ import java.util.Set; * map reference is volatile, but on most multi-cpu machines that has no cost unless modified.</p> * * @author baldersheim - * @since 5.2 */ public class CopyOnWriteHashMap<K, V> implements Map<K, V> { |