summaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com/yahoo/search/federation
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-07 17:00:28 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-10-07 17:05:04 +0200
commite8f2842df4e486af6b31e2ffbc1d5569b8d26850 (patch)
treeb4aa7928ebf4ab6dc85f039325138857a24b4eaa /container-search/src/test/java/com/yahoo/search/federation
parent6cd3e5387169803041c5628178181ee15e7b929c (diff)
- Use the default threadpool for federation.
- Move test classes into the same package as the code to avoid making test only methods public. - Deprecate old AsyncExecution.search/fill methods and let them run in its own thread. There should be no external usage of this class.
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search/federation')
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/AddHitsWithRelevanceSearcher.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java)4
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/BlockingSearcher.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java)4
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java)3
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java)80
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java)46
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationTester.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java)10
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/HitCountTestCase.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java)34
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/SetHitCountsSearcher.java (renamed from container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java)2
9 files changed, 105 insertions, 81 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java b/container-search/src/test/java/com/yahoo/search/federation/AddHitsWithRelevanceSearcher.java
index 9c885a1632b..e4eada1968d 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/AddHitsWithRelevanceSearcher.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
@@ -10,7 +10,7 @@ import com.yahoo.search.searchchain.Execution;
/**
* @author Tony Vaagenes
*/
-public class AddHitsWithRelevanceSearcher extends Searcher {
+class AddHitsWithRelevanceSearcher extends Searcher {
public static final int numHitsAdded = 5;
private final String chainName;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java b/container-search/src/test/java/com/yahoo/search/federation/BlockingSearcher.java
index fd2ae7fad61..f06ab5b7fdc 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/BlockingSearcher.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
@@ -9,7 +9,7 @@ import com.yahoo.search.searchchain.Execution;
/**
* @author Tony Vaagenes
*/
-public class BlockingSearcher extends Searcher {
+class BlockingSearcher extends Searcher {
@Override
public synchronized Result search(Query query, Execution execution) {
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java
index c8a1007f366..da25baacd51 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.google.common.collect.ImmutableList;
import com.yahoo.component.ComponentId;
@@ -9,7 +9,6 @@ import com.yahoo.prelude.IndexModel;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
-import com.yahoo.search.federation.FederationSearcher;
import com.yahoo.search.federation.sourceref.SearchChainResolver;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.SearchChainRegistry;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java b/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java
index 3cd9e4a6408..a17104f888d 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java
@@ -19,6 +19,7 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
@@ -57,7 +58,7 @@ public class FederationResultTest {
if (expectedTimeoutNames.contains(targetResult.target.getId().toString()))
assertTrue(targetResult.target.getId() + " timed out", timedOut(result));
else
- assertTrue(targetResult.target.getId() + " did not time out", ! timedOut(result));
+ assertFalse(targetResult.target.getId() + " did not time out", timedOut(result));
}
}
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/FederationSearcherTest.java
index b42500ee4f5..7651849a519 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.Chain;
@@ -10,12 +10,8 @@ import com.yahoo.processing.execution.chain.ChainRegistry;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
-import com.yahoo.search.federation.FederationConfig;
-import com.yahoo.search.federation.FederationSearcher;
-import com.yahoo.search.federation.TimeoutException;
import com.yahoo.search.federation.selection.FederationTarget;
import com.yahoo.search.federation.selection.TargetSelector;
-import com.yahoo.search.federation.StrictContractsConfig;
import com.yahoo.search.result.ErrorHit;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
@@ -24,18 +20,21 @@ import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.Execution.Context;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.*;
+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 Tony Vaagenes
@@ -44,6 +43,18 @@ public class FederationSearcherTest {
private static final String hasBeenFilled = "hasBeenFilled";
+ private ExecutorService executor;
+
+ @Before
+ public void setUp() throws Exception {
+ executor = Executors.newFixedThreadPool(16);
+ }
+
+ @After
+ public void tearDown() {
+ assertEquals(0, executor.shutdownNow().size());
+ }
+
@Test
public void require_that_hits_are_not_automatically_filled() {
Result result = federationToSingleAddHitSearcher().search();
@@ -58,7 +69,7 @@ public class FederationSearcherTest {
@Test
public void require_that_hits_can_be_filled_when_moved() {
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new AddHitSearcher());
tester.addSearchChain("chain2", new AddHitSearcher());
@@ -86,7 +97,7 @@ public class FederationSearcherTest {
@Test
public void require_that_hits_can_be_filled_for_multiple_chains_and_queries() {
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new AddHitSearcher());
tester.addSearchChain("chain2", new ModifyQueryAndAddHitSearcher("modified1"));
tester.addSearchChain("chain3", new ModifyQueryAndAddHitSearcher("modified2"));
@@ -100,7 +111,7 @@ public class FederationSearcherTest {
@Test
public void require_that_hits_that_time_out_in_fill_are_removed() {
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new AddHitSearcher());
tester.addSearchChain("chain2", new TimeoutInFillSearcher());
@@ -118,7 +129,7 @@ public class FederationSearcherTest {
public void require_that_optional_search_chains_does_not_delay_federation() {
BlockingSearcher blockingSearcher = new BlockingSearcher();
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new AddHitSearcher());
tester.addOptionalSearchChain("chain2", blockingSearcher);
@@ -147,7 +158,7 @@ public class FederationSearcherTest {
@Test
public void require_that_calling_a_single_slow_source_with_long_timeout_does_not_delay_federation() {
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1",
new FederationOptions().setUseByDefault(true).setRequestTimeoutInMilliseconds(3600 * 1000),
new BlockingSearcher() );
@@ -177,14 +188,14 @@ public class FederationSearcherTest {
FederationSearcher searcher = new FederationSearcher(
new FederationConfig(new FederationConfig.Builder().targetSelector(targetSelectorId.toString())),
new StrictContractsConfig(new StrictContractsConfig.Builder()),
- targetSelectors);
+ targetSelectors, executor);
Query query = new Query();
query.setTimeout(20000);
Result result = new Execution(searcher, Context.createContextStub()).search(query);
HitGroup myChainGroup = (HitGroup) result.hits().get(0);
- assertThat(myChainGroup.getId(), is(new URI("source:myChain")));
- assertThat(myChainGroup.get(0).getId(), is(new URI("myHit")));
+ assertEquals(myChainGroup.getId(), new URI("source:myChain"));
+ assertEquals(myChainGroup.get(0).getId(), new URI("myHit"));
}
@Test
@@ -196,7 +207,7 @@ public class FederationSearcherTest {
FederationSearcher searcher = new FederationSearcher(
new FederationConfig(new FederationConfig.Builder().targetSelector(targetSelectorId.toString())),
new StrictContractsConfig(new StrictContractsConfig.Builder()),
- targetSelectors);
+ targetSelectors, executor);
Query query = new Query();
query.setTimeout(20000);
@@ -206,11 +217,11 @@ public class FederationSearcherTest {
Hit hit1 = hitsIterator.next();
Hit hit2 = hitsIterator.next();
- assertThat(hit1.getSource(), is("chain1"));
- assertThat(hit2.getSource(), is("chain2"));
+ assertEquals(hit1.getSource(), "chain1");
+ assertEquals(hit2.getSource(), "chain2");
- assertThat(hit1.getField("data"), is("modifyTargetQuery:custom-data:1"));
- assertThat(hit2.getField("data"), is("modifyTargetQuery:custom-data:2"));
+ assertEquals(hit1.getField("data"), "modifyTargetQuery:custom-data:1");
+ assertEquals(hit2.getField("data"), "modifyTargetQuery:custom-data:2");
}
private Hit getFirstHit(Hit hitGroup) {
@@ -220,15 +231,6 @@ public class FederationSearcherTest {
throw new IllegalArgumentException("Expected HitGroup");
}
- private List<Hit> getNonErrorHits(Result result) {
- List<Hit> nonErrorHits = new ArrayList<>();
- for (Hit hit : result.hits()) {
- if (!(hit instanceof ErrorHit))
- nonErrorHits.add(hit);
- }
-
- return nonErrorHits;
- }
private static void assertFilled(Hit hit) {
if (hit.isMeta()) return;
assertTrue((Boolean)hit.getField(hasBeenFilled));
@@ -239,7 +241,7 @@ public class FederationSearcherTest {
}
private FederationTester federationToSingleAddHitSearcher() {
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new AddHitSearcher());
return tester;
}
@@ -326,8 +328,8 @@ public class FederationSearcherTest {
@Override
public Collection<FederationTarget<String>> getTargets(Query query, ChainRegistry<Searcher> searcherChainRegistry) {
- return Arrays.asList(
- new FederationTarget<>(new Chain<>("myChain", Collections.<Searcher>emptyList()), new FederationOptions(), "hello"));
+ return List.of(
+ new FederationTarget<>(new Chain<>("myChain", List.of()), new FederationOptions(), "hello"));
}
@Override
@@ -339,13 +341,13 @@ public class FederationSearcherTest {
@Override
public void modifyTargetResult(FederationTarget<String> target, Result result) {
checkTarget(target);
- assertThat(result.getQuery().properties().getString(keyName), is("called"));
+ assertEquals(result.getQuery().properties().getString(keyName), "called");
result.hits().add(new Hit("myHit"));
}
private void checkTarget(FederationTarget<String> target) {
- assertThat(target.getCustomData(), is("hello"));
- assertThat(target.getChain().getId(), is(ComponentId.fromString("myChain")));
+ assertEquals(target.getCustomData(), "hello");
+ assertEquals(target.getChain().getId(), ComponentId.fromString("myChain"));
}
}
@@ -359,7 +361,7 @@ public class FederationSearcherTest {
}
private FederationTarget<String> createTarget(int number) {
- return new FederationTarget<>(new Chain<>("chain" + number, Collections.<Searcher>emptyList()),
+ return new FederationTarget<>(new Chain<>("chain" + number, List.of()),
new FederationOptions(),
"custom-data:" + number);
}
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java
index 33198b4496e..65640cc94f0 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.Chain;
@@ -7,13 +7,8 @@ import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
-import com.yahoo.search.federation.FederationConfig;
-import com.yahoo.search.federation.FederationSearcher;
-import com.yahoo.search.federation.StrictContractsConfig;
-import com.yahoo.search.federation.selection.TargetSelector;
import com.yahoo.search.federation.sourceref.SearchChainResolver;
import com.yahoo.search.query.profile.QueryProfile;
-import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
@@ -29,10 +24,17 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
-import static org.junit.Assert.*;
import static com.yahoo.search.federation.StrictContractsConfig.PropagateSourceProperties;
+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.assertSame;
+import static org.junit.Assert.assertTrue;
/**
* Test for federation searcher. The searcher is also tested in
@@ -40,7 +42,6 @@ import static com.yahoo.search.federation.StrictContractsConfig.PropagateSourceP
*
* @author Arne Bergene Fossaa
*/
-@SuppressWarnings("deprecation")
public class FederationSearcherTestCase {
static final String SOURCE1 = "source1";
@@ -63,17 +64,20 @@ public class FederationSearcherTestCase {
private FederationConfig.Builder builder;
private SearchChainRegistry chainRegistry;
+ private ExecutorService executor;
@Before
public void setUp() throws Exception {
builder = new FederationConfig.Builder();
chainRegistry = new SearchChainRegistry();
+ executor = Executors.newFixedThreadPool(16);
}
@After
public void tearDown() {
builder = null;
chainRegistry = null;
+ assertEquals(0, executor.shutdownNow().size());
}
private void addChained(Searcher searcher, String sourceName) {
@@ -103,7 +107,7 @@ public class FederationSearcherTestCase {
}
private Searcher buildFederation(StrictContractsConfig contracts) throws RuntimeException {
- return new FederationSearcher(new FederationConfig(builder), contracts, new ComponentRegistry<>());
+ return new FederationSearcher(new FederationConfig(builder), contracts, new ComponentRegistry<>(), executor);
}
private SearchChain createSearchChain(ComponentId chainId,Searcher searcher) {
@@ -161,12 +165,12 @@ public class FederationSearcherTestCase {
}, SOURCE2);
- Chain<Searcher> mainChain = new Chain<>("default",
+ return new Chain<>("default",
new FederationSearcher(new FederationConfig(builder),
new StrictContractsConfig(
new StrictContractsConfig.Builder().searchchains(strictContracts)),
- new ComponentRegistry<>()));
- return mainChain;
+ new ComponentRegistry<>(),
+ executor));
}
@Test
@@ -208,7 +212,7 @@ public class FederationSearcherTestCase {
assertEquals("source:mySource2", result.hits().get(1).getId().stringValue());
assertEquals("nalle", result.hits().get(0).getQuery().getPresentation().getSummary());
assertNull(result.hits().get(1).getQuery().getPresentation().getSummary());
- assertEquals(null, result.hits().get(0).getQuery().properties().get("custom"));
+ assertNull(result.hits().get(0).getQuery().properties().get("custom"));
}
@Test
@@ -219,8 +223,8 @@ public class FederationSearcherTestCase {
assertEquals("source:mySource2", result.hits().get(1).getId().stringValue());
assertEquals("nalle", result.hits().get(0).getQuery().getPresentation().getSummary());
assertEquals("foo", result.hits().get(0).getQuery().properties().get("customSourceProperty"));
- assertEquals(null, result.hits().get(1).getQuery().properties().get("customSourceProperty"));
- assertEquals(null, result.hits().get(0).getQuery().properties().get("custom.source.property"));
+ assertNull(result.hits().get(1).getQuery().properties().get("customSourceProperty"));
+ assertNull(result.hits().get(0).getQuery().properties().get("custom.source.property"));
assertEquals("bar", result.hits().get(1).getQuery().properties().get("custom.source.property"));
assertEquals(13, result.hits().get(0).getQuery().properties().get("hits"));
assertEquals(1, result.hits().get(0).getQuery().properties().get("offset"));
@@ -347,12 +351,12 @@ public class FederationSearcherTestCase {
ComponentId provider1 = new ComponentId("provider1");
ComponentId provider2 = new ComponentId("provider2");
ComponentId news = new ComponentId("news");
- builder.addSearchChain(provider1, options, Collections.<String> emptyList());
- builder.addSearchChain(provider2, options, Collections.<String> emptyList());
- builder.addSourceForProvider(news, provider1, provider1, true, options, Collections.<String> emptyList());
- builder.addSourceForProvider(news, provider2, provider2, false, options, Collections.<String> emptyList());
+ builder.addSearchChain(provider1, options, List.of());
+ builder.addSearchChain(provider2, options, List.of());
+ builder.addSourceForProvider(news, provider1, provider1, true, options, List.of());
+ builder.addSourceForProvider(news, provider2, provider2, false, options, List.of());
- return new FederationSearcher(new ComponentId("federation"), builder.build());
+ return new FederationSearcher(new ComponentId("federation"), builder.build(), executor);
}
private static class MockProvider extends Searcher {
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java b/container-search/src/test/java/com/yahoo/search/federation/FederationTester.java
index 393529781b2..433fe557b24 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationTester.java
@@ -1,18 +1,18 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.Chain;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
-import com.yahoo.search.federation.FederationSearcher;
import com.yahoo.search.federation.sourceref.SearchChainResolver;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.SearchChainRegistry;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
import java.util.Collections;
+import java.util.concurrent.Executor;
/**
* @author Tony Vaagenes
@@ -23,7 +23,11 @@ class FederationTester {
private final SearchChainRegistry registry = new SearchChainRegistry();
private Execution execution;
+ private final Executor executor;
+ FederationTester(Executor executor) {
+ this.executor = executor;
+ }
void addSearchChain(String id, Searcher... searchers) {
addSearchChain(id, federationOptions(), searchers);
}
@@ -47,7 +51,7 @@ class FederationTester {
}
FederationSearcher buildFederationSearcher() {
- return new FederationSearcher(ComponentId.fromString("federation"), builder.build());
+ return new FederationSearcher(ComponentId.fromString("federation"), builder.build(), executor);
}
public Result search() {
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/HitCountTestCase.java
index 74eb7992a38..163263b7640 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/HitCountTestCase.java
@@ -1,31 +1,45 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.StringStartsWith.startsWith;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
/**
* @author Tony Vaagenes
*/
public class HitCountTestCase {
+ private ExecutorService executor;
+
+ @Before
+ public void setUp() throws Exception {
+ executor = Executors.newFixedThreadPool(16);
+ }
+
+ @After
+ public void tearDown() {
+ assertEquals(0, executor.shutdownNow().size());
+ }
+
@Test
public void require_that_offset_and_hits_are_adjusted_when_federating() {
final int chain1RelevanceMultiplier = 1;
final int chain2RelevanceMultiplier = 10;
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new AddHitsWithRelevanceSearcher("chain1", chain1RelevanceMultiplier));
tester.addSearchChain("chain2", new AddHitsWithRelevanceSearcher("chain2", chain2RelevanceMultiplier));
@@ -47,14 +61,14 @@ public class HitCountTestCase {
final long chain2TotalHitCount = 7;
final long chain2DeepHitCount = 11;
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1", new SetHitCountsSearcher(chain1TotalHitCount, chain1DeepHitCount));
tester.addSearchChain("chain2", new SetHitCountsSearcher(chain2TotalHitCount, chain2DeepHitCount));
Result result = tester.searchAndFill();
- assertThat(result.getTotalHitCount(), is(chain1TotalHitCount + chain2TotalHitCount));
- assertThat(result.getDeepHitCount(), is(chain1DeepHitCount + chain2DeepHitCount));
+ assertEquals(result.getTotalHitCount(), chain1TotalHitCount + chain2TotalHitCount);
+ assertEquals(result.getDeepHitCount(), chain1DeepHitCount + chain2DeepHitCount);
}
@Test
@@ -65,7 +79,7 @@ public class HitCountTestCase {
final long chain2TotalHitCount = 11;
final long chain2DeepHitCount = 15;
- FederationTester tester = new FederationTester();
+ FederationTester tester = new FederationTester(executor);
tester.addSearchChain("chain1",
new SetHitCountsSearcher(chain1TotalHitCount, chain1DeepHitCount));
@@ -110,7 +124,7 @@ public class HitCountTestCase {
private void assertAllHitsFrom(String chainName, HitGroup flattenedHits) {
for (Hit hit : flattenedHits) {
- assertThat(hit.getId().toString(), startsWith(chainName));
+ assertTrue(hit.getId().toString().startsWith(chainName));
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java b/container-search/src/test/java/com/yahoo/search/federation/SetHitCountsSearcher.java
index 36b5e7efa37..fe299fbeb95 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/SetHitCountsSearcher.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.federation.test;
+package com.yahoo.search.federation;
import com.yahoo.search.Query;
import com.yahoo.search.Result;