diff options
Diffstat (limited to 'config-model/src/test/java')
2 files changed, 97 insertions, 13 deletions
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java index 89319877d03..98f5bdbcd52 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java @@ -19,12 +19,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; +import java.util.Set; -import static java.util.Collections.emptyList; -import static java.util.Collections.emptySet; -import static java.util.Collections.singletonList; -import static java.util.stream.Collectors.toList; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Tony Vaagenes @@ -33,9 +32,9 @@ import static org.junit.jupiter.api.Assertions.*; public class FederationSearcherTest { private static class FederationFixture { - FederationSearcher federationSearchWithDefaultSources = newFederationSearcher(true, emptyList()); - private ComponentRegistry<SearchChain> searchChainRegistry = new ComponentRegistry<>(); - private SourceGroupRegistry sourceGroupRegistry = new SourceGroupRegistry(); + FederationSearcher federationSearchWithDefaultSources = newFederationSearcher(true, List.of()); + private final ComponentRegistry<SearchChain> searchChainRegistry = new ComponentRegistry<>(); + private final SourceGroupRegistry sourceGroupRegistry = new SourceGroupRegistry(); void initializeFederationSearcher(FederationSearcher searcher) { searcher.initialize(searchChainRegistry, sourceGroupRegistry); @@ -96,14 +95,14 @@ public class FederationSearcherTest { assertEquals(2, target.searchChain().size()); assertTrue(target.searchChain().stream() .map(FederationConfig.Target.SearchChain::providerId) - .collect(toList()).containsAll(List.of("provider1", "provider2"))); + .toList().containsAll(List.of("provider1", "provider2"))); } @Test void source_groups_are_not_inherited_when_inheritDefaultSources_is_false() throws Exception { FederationFixture f = new ProvidersWithSourceFixture(); - FederationSearcher federationSearcherWithoutDefaultSources = newFederationSearcher(false, emptyList()); + FederationSearcher federationSearcherWithoutDefaultSources = newFederationSearcher(false, List.of()); f.initializeFederationSearcher(federationSearcherWithoutDefaultSources); FederationConfig federationConfig = getConfig(federationSearcherWithoutDefaultSources); @@ -127,7 +126,7 @@ public class FederationSearcherTest { f.registerProviderWithSources(createProvider(ComponentId.fromString("provider1"))); FederationSearcher federation = newFederationSearcher(true, - singletonList(new TargetSpec(ComponentSpecification.fromString("provider1"), + List.of(new TargetSpec(ComponentSpecification.fromString("provider1"), new FederationOptions().setTimeoutInMilliseconds(12345)))); f.initializeFederationSearcher(federation); @@ -147,7 +146,7 @@ public class FederationSearcherTest { } private static ChainSpecification searchChainSpecification(ComponentId id) { - return new ChainSpecification(id, new ChainSpecification.Inheritance(null, null), emptyList(), emptySet()); + return new ChainSpecification(id, new ChainSpecification.Inheritance(null, null), List.of(), Set.of()); } private static Provider createProvider(ComponentId id) { @@ -161,7 +160,7 @@ public class FederationSearcherTest { private static FederationConfig getConfig(ConfigProducer configProducer) throws Exception { Optional<Class<?>> builderClassOpt = Arrays.stream(FederationConfig.class.getDeclaredClasses()) .filter(c -> c.getSimpleName().equals("Builder")).findFirst(); - if (builderClassOpt.isPresent() == false) { + if ( builderClassOpt.isEmpty()) { throw new RuntimeException("No Builder class in ConfigInstance."); } Class<?> builderClass = builderClassOpt.get(); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java index 21223974be1..5588787119c 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java @@ -5,12 +5,17 @@ import com.yahoo.component.ComponentId; import com.yahoo.container.core.ChainsConfig; import com.yahoo.prelude.cluster.ClusterSearcher; import com.yahoo.search.config.ClusterConfig; +import com.yahoo.search.searchchain.PhaseNames; import com.yahoo.vespa.defaults.Defaults; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.w3c.dom.Element; +import java.util.Collection; + import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** @@ -21,10 +26,15 @@ import static org.junit.jupiter.api.Assertions.assertEquals; */ public class SchemaChainsTest extends SchemaChainsTestBase { + private ChainsConfig chainsConfig; private ClusterConfig clusterConfig; @BeforeEach public void subscribe() { + ChainsConfig.Builder chainsBuilder = new ChainsConfig.Builder(); + chainsBuilder = (ChainsConfig.Builder)root.getConfig(chainsBuilder, "searchchains"); + chainsConfig = new ChainsConfig(chainsBuilder); + ClusterConfig.Builder clusterBuilder = new ClusterConfig.Builder(); clusterBuilder = (ClusterConfig.Builder)root.getConfig(clusterBuilder, "searchchains/chain/cluster2/component/" + ClusterSearcher.class.getName()); clusterConfig = new ClusterConfig(clusterBuilder); @@ -81,4 +91,79 @@ public class SchemaChainsTest extends SchemaChainsTestBase { assertEquals("cluster2", clusterConfig.clusterName()); } + private ChainsConfig.Chains findChain(String name) { + for (ChainsConfig.Chains chain : chainsConfig.chains()) { + if (name.equals(chain.id())) { + return chain; + } + } + return null; + } + + private static boolean contains(Collection<ChainsConfig.Chains.Phases> phases, String name) { + for (var phase : phases) { + if (name.equals(phase.id())) { + return true; + } + } + return false; + } + + private static void validateVespaPhasesChain(ChainsConfig.Chains chain) { + assertNotNull(chain); + assertEquals("vespaPhases", chain.id()); + assertEquals(5, chain.phases().size()); + assertTrue(contains(chain.phases(), PhaseNames.BACKEND)); + assertTrue(contains(chain.phases(), PhaseNames.BLENDED_RESULT)); + assertTrue(contains(chain.phases(), PhaseNames.RAW_QUERY)); + assertTrue(contains(chain.phases(), PhaseNames.TRANSFORMED_QUERY)); + assertTrue(contains(chain.phases(), PhaseNames.UNBLENDED_RESULT)); + assertTrue(chain.inherits().isEmpty()); + assertTrue(chain.components().isEmpty()); + assertTrue(chain.excludes().isEmpty()); + assertEquals(ChainsConfig.Chains.Type.SEARCH, chain.type()); + } + + private static void validateNativeChain(ChainsConfig.Chains chain) { + assertNotNull(chain); + assertEquals("native", chain.id()); + assertTrue(chain.phases().isEmpty()); + assertEquals(1, chain.inherits().size()); + assertEquals("vespaPhases", chain.inherits(0)); + assertEquals(2, chain.components().size()); + assertEquals("federation@native", chain.components(0)); + assertEquals("com.yahoo.prelude.statistics.StatisticsSearcher@native", chain.components(1)); + assertTrue(chain.excludes().isEmpty()); + assertEquals(ChainsConfig.Chains.Type.SEARCH, chain.type()); + } + + private static void validateVespaChain(ChainsConfig.Chains chain) { + assertNotNull(chain); + assertEquals("vespa", chain.id()); + assertTrue(chain.phases().isEmpty()); + assertEquals(1, chain.inherits().size()); + assertEquals("native", chain.inherits(0)); + assertEquals(10, chain.components().size()); + assertEquals("com.yahoo.prelude.querytransform.PhrasingSearcher@vespa", chain.components(0)); + assertEquals("com.yahoo.prelude.searcher.FieldCollapsingSearcher@vespa", chain.components(1)); + assertEquals("com.yahoo.search.yql.MinimalQueryInserter@vespa", chain.components(2)); + assertEquals("com.yahoo.search.yql.FieldFilter@vespa", chain.components(3)); + assertEquals("com.yahoo.prelude.searcher.JuniperSearcher@vespa", chain.components(4)); + assertEquals("com.yahoo.prelude.searcher.BlendingSearcher@vespa", chain.components(5)); + assertEquals("com.yahoo.prelude.searcher.PosSearcher@vespa", chain.components(6)); + assertEquals("com.yahoo.prelude.semantics.SemanticSearcher@vespa", chain.components(7)); + assertEquals("com.yahoo.search.grouping.GroupingQueryParser@vespa", chain.components(8)); + assertEquals("com.yahoo.search.querytransform.WeakAndReplacementSearcher@vespa", chain.components(9)); + assertTrue(chain.excludes().isEmpty()); + assertEquals(ChainsConfig.Chains.Type.SEARCH, chain.type()); + } + + @Test + public void require_all_default_chains_are_correct() { + assertEquals(61, chainsConfig.components().size()); + assertEquals(10, chainsConfig.chains().size()); + validateVespaPhasesChain(findChain("vespaPhases")); + validateNativeChain(findChain("native")); + validateVespaChain(findChain("vespa")); + } } |