diff options
author | Bjørn Christian Seime <bjorn.christian@seime.no> | 2020-01-14 12:35:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-14 12:35:22 +0100 |
commit | b9ef540883e10c5822476db2872a5ff7c4c8bbe2 (patch) | |
tree | 8edc0edf15703bcef1372509a737e8c93038a5aa | |
parent | c8681f2b84f9f63d941ee64e359c7b9c1df07df9 (diff) |
Revert "Bjorncs/access control validation"
12 files changed, 53 insertions, 296 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/HostedConfigModelRegistry.java b/config-model/src/main/java/com/yahoo/config/model/test/HostedConfigModelRegistry.java deleted file mode 100644 index 9099a527dea..00000000000 --- a/config-model/src/main/java/com/yahoo/config/model/test/HostedConfigModelRegistry.java +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.config.model.test; - -import com.yahoo.config.model.ConfigModelRegistry; -import com.yahoo.config.model.MapConfigModelRegistry; - -/** - * Creates a {@link ConfigModelRegistry} instance that simulates the hosted environment. - * - * @author bjorncs - */ -public class HostedConfigModelRegistry { - - private HostedConfigModelRegistry() {} - - public static ConfigModelRegistry create() { - return MapConfigModelRegistry.createFromList(new ModelBuilderAddingAccessControlFilter()); - } -} diff --git a/config-model/src/main/java/com/yahoo/config/model/test/ModelBuilderAddingAccessControlFilter.java b/config-model/src/main/java/com/yahoo/config/model/test/ModelBuilderAddingAccessControlFilter.java deleted file mode 100644 index c69efd5d447..00000000000 --- a/config-model/src/main/java/com/yahoo/config/model/test/ModelBuilderAddingAccessControlFilter.java +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.config.model.test; - -import com.yahoo.component.ComponentId; -import com.yahoo.component.ComponentSpecification; -import com.yahoo.component.chain.dependencies.Dependencies; -import com.yahoo.component.chain.model.ChainedComponentModel; -import com.yahoo.config.model.ConfigModel; -import com.yahoo.config.model.ConfigModelContext; -import com.yahoo.config.model.builder.xml.ConfigModelBuilder; -import com.yahoo.config.model.builder.xml.ConfigModelId; -import com.yahoo.container.bundle.BundleInstantiationSpecification; -import com.yahoo.vespa.model.container.ApplicationContainerCluster; -import com.yahoo.vespa.model.container.ContainerModel; -import com.yahoo.vespa.model.container.component.chain.Chain; -import com.yahoo.vespa.model.container.http.AccessControl; -import com.yahoo.vespa.model.container.http.Filter; -import com.yahoo.vespa.model.container.http.Http; -import com.yahoo.vespa.model.container.xml.ContainerModelBuilder; -import org.w3c.dom.Element; - -import java.util.Collection; -import java.util.List; - -/** - * A {@link ConfigModelBuilder} that configures a dummy filter component to the {@link AccessControl#ACCESS_CONTROL_CHAIN_ID} filter chain. - * - * @author bjorncs - */ -public class ModelBuilderAddingAccessControlFilter - extends ConfigModelBuilder<ModelBuilderAddingAccessControlFilter.ModelPlaceholder> { - - public ModelBuilderAddingAccessControlFilter() { - super(ModelPlaceholder.class); - } - - @Override - public List<ConfigModelId> handlesElements() { return ContainerModelBuilder.configModelIds; } - - @Override - public void doBuild(ModelPlaceholder model, Element spec, ConfigModelContext modelContext) { - for (ContainerModel containerModel : model.containers) { - addFilterToContainerCluster(containerModel); - } - } - - private static void addFilterToContainerCluster(ContainerModel containerModel) { - if (!(containerModel.getCluster() instanceof ApplicationContainerCluster)) return; - ApplicationContainerCluster cluster = (ApplicationContainerCluster) containerModel.getCluster(); - Http http = cluster.getHttp(); - if (http.getAccessControl().isPresent()) { - Chain<Filter> chain = http.getFilterChains() - .allChains() - .getComponent(AccessControl.ACCESS_CONTROL_CHAIN_ID); - if (chain == null) return; - if (!chain.getInnerComponents().isEmpty()) return; - chain.addInnerComponent(new DummyAccessControlFilterModel()); - } - } - - public static class ModelPlaceholder extends ConfigModel { - final Collection<ContainerModel> containers; - - public ModelPlaceholder(ConfigModelContext modelContext, Collection<ContainerModel> containers) { - super(modelContext); - this.containers = containers; - } - - @Override - public boolean isServing() { return false; } - } - - private static class DummyAccessControlFilterModel extends Filter { - - DummyAccessControlFilterModel() { super(createDummyComponentModel()); } - - static ChainedComponentModel createDummyComponentModel() { - return new ChainedComponentModel( - new BundleInstantiationSpecification( - new ComponentId("dummy-filter"), - new ComponentSpecification("com.test.DummyAccessControlFilter"), - new ComponentSpecification("dummy-bundle")), - Dependencies.emptyDependencies()); - } - } -} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidator.java deleted file mode 100644 index 774f0ba52bc..00000000000 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidator.java +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.model.application.validation; - -import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.vespa.model.VespaModel; -import com.yahoo.vespa.model.container.component.chain.Chain; -import com.yahoo.vespa.model.container.http.AccessControl; -import com.yahoo.vespa.model.container.http.Filter; -import com.yahoo.vespa.model.container.http.FilterChains; -import com.yahoo.vespa.model.container.http.Http; - -/** - * Validates that 'access-control' is not enabled when no access control filter implementation is available. - * - * @author bjorncs - */ -public class AccessControlFilterValidator extends Validator { - - @Override - public void validate(VespaModel model, DeployState deployState) { - model.getContainerClusters().forEach((id, cluster) -> { - Http http = cluster.getHttp(); - if (http != null) { - if (http.getAccessControl().isPresent()) { - verifyAccessControlFilterPresent(http); - } - } - }); - } - - private static void verifyAccessControlFilterPresent(Http http) { - FilterChains filterChains = http.getFilterChains(); - Chain<Filter> chain = filterChains.allChains().getComponent(AccessControl.ACCESS_CONTROL_CHAIN_ID); - if (chain.getInnerComponents().isEmpty()) { - // No access control filter configured - it's up to a config model plugin to provide an implementation of an access control filter. - throw new IllegalArgumentException("The 'access-control' feature is not available in open-source Vespa."); - } - } -} 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 4959970d98e..7d0d068f9d6 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 @@ -19,7 +19,7 @@ import com.yahoo.vespa.model.application.validation.change.IndexedSearchClusterC import com.yahoo.vespa.model.application.validation.change.IndexingModeChangeValidator; import com.yahoo.vespa.model.application.validation.change.StartupCommandChangeValidator; import com.yahoo.vespa.model.application.validation.change.StreamingSearchClusterChangeValidator; -import com.yahoo.vespa.model.application.validation.first.AccessControlOnFirstDeploymentValidator; +import com.yahoo.vespa.model.application.validation.first.AccessControlValidator; import java.time.Instant; import java.util.Arrays; @@ -57,7 +57,6 @@ public class Validation { new RankingConstantsValidator().validate(model, deployState); new SecretStoreValidator().validate(model, deployState); new TlsSecretsValidator().validate(model, deployState); - new AccessControlFilterValidator().validate(model, deployState); List<ConfigChangeAction> result = Collections.emptyList(); if (deployState.getProperties().isFirstTimeDeployment()) { @@ -92,7 +91,7 @@ public class Validation { } private static void validateFirstTimeDeployment(VespaModel model, DeployState deployState) { - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidator.java index 97153e42ee5..b7bbed7ffda 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidator.java @@ -23,7 +23,7 @@ import static com.yahoo.vespa.model.container.http.AccessControl.isBuiltinGetOnl * * @author gjoranv */ -public class AccessControlOnFirstDeploymentValidator extends Validator { +public class AccessControlValidator extends Validator { @Override public void validate(VespaModel model, DeployState deployState) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java deleted file mode 100644 index 8fad2aa9af4..00000000000 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yahoo.vespa.model.application.validation;// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -import com.yahoo.config.model.MapConfigModelRegistry; -import com.yahoo.config.model.NullConfigModelRegistry; -import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.test.MockApplicationPackage; -import com.yahoo.config.model.test.ModelBuilderAddingAccessControlFilter; -import com.yahoo.vespa.model.VespaModel; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.xml.sax.SAXException; - -import java.io.IOException; - -/** - * @author bjorncs - */ -public class AccessControlFilterValidatorTest { - - private static final String SERVICES_XML = String.join( - "\n", - "<services version='1.0'>", - " <container id='container-cluster-with-access-control' version='1.0'>", - " <http>", - " <filtering>", - " <access-control domain='foo' read='true' write='true'/>", - " </filtering>", - " </http>", - " </container>", - "</services>"); - - @Rule - public ExpectedException exceptionRule = ExpectedException.none(); - - @Test - public void validator_fails_with_empty_access_control_filter_chain() throws IOException, SAXException { - DeployState deployState = createDeployState(); - VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - - exceptionRule.expect(IllegalArgumentException.class); - exceptionRule.expectMessage("The 'access-control' feature is not available in open-source Vespa."); - new AccessControlFilterValidator().validate(model, deployState); - } - - @Test - public void validator_accepts_non_empty_access_control_filter_chain() throws IOException, SAXException { - DeployState deployState = createDeployState(); - VespaModel model = new VespaModel( - MapConfigModelRegistry.createFromList(new ModelBuilderAddingAccessControlFilter()), - deployState); - - new AccessControlFilterValidator().validate(model, deployState); - } - - private static DeployState createDeployState() { - return new DeployState.Builder() - .applicationPackage(new MockApplicationPackage.Builder().withServices(SERVICES_XML).build()) - .build(); - } -}
\ No newline at end of file diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java index c8f1224693b..17ca0e2dd07 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java @@ -29,7 +29,7 @@ import static org.junit.Assert.assertTrue; /** * @author gjoranv */ -public class AccessControlOnFirstDeploymentValidatorTest { +public class AccessControlValidatorTest { @Rule public final ExpectedException exceptionRule = ExpectedException.none(); @@ -57,7 +57,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml(true, true)); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -65,7 +65,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml(false, false)); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -76,7 +76,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -88,7 +88,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml(true, false)); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -105,7 +105,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -120,7 +120,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -133,7 +133,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { DeployState deployState = deployState(servicesXml); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } @Test @@ -143,7 +143,7 @@ public class AccessControlOnFirstDeploymentValidatorTest { LocalDate.parse("2000-01-01", DateTimeFormatter.ISO_DATE).atStartOfDay().atZone(ZoneOffset.UTC).toInstant()); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - new AccessControlOnFirstDeploymentValidator().validate(model, deployState); + new AccessControlValidator().validate(model, deployState); } private static DeployState deployState(String servicesXml) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java index 30a36715a17..66ed86e3eaa 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java @@ -24,9 +24,7 @@ public class ImplicitIndexingClusterTest { " <container version=\"1.0\" id=\"jdisc\">\n" + // " <search />\n" + // " <nodes count=\"1\" />\n" + // - " <http>\n" + // - " <server id=\"bar\" port=\"4080\" />\n" + // - " </http>\n" + // + ACCESS_CONTROL_XML + // " </container>\n" + // " <content id=\"music\" version=\"1.0\">\n" + // " <redundancy>1</redundancy>\n" + // @@ -44,6 +42,13 @@ public class ImplicitIndexingClusterTest { assertNotNull("Indexing chain not added to jdisc", jdisc.getDocprocChains().allChains().getComponent("indexing")); } + private final String ACCESS_CONTROL_XML = "<http>\n" +// + " <filtering>\n" +// + " <access-control domain=\"foo\" />\n" +// + " </filtering>\n" +// + " <server id=\"bar\" port=\"4080\" />\n" +// + "</http>\n"; + private static VespaModel buildMultiTenantVespaModel(String servicesXml) { ModelContext.Properties properties = new TestProperties().setMultitenant(true).setHostedVespa(true); DeployState.Builder deployStateBuilder = new DeployState.Builder() diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java index 2a1254d0d8d..0b56591d6a1 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java @@ -44,7 +44,6 @@ import static com.yahoo.vespa.config.server.ConfigServerBootstrap.Mode.BOOTSTRAP import static com.yahoo.vespa.config.server.ConfigServerBootstrap.Mode.INITIALIZE_ONLY; import static com.yahoo.vespa.config.server.ConfigServerBootstrap.VipStatusMode.VIP_STATUS_FILE; import static com.yahoo.vespa.config.server.ConfigServerBootstrap.VipStatusMode.VIP_STATUS_PROGRAMMATICALLY; -import static com.yahoo.vespa.config.server.deploy.DeployTester.createHostedModelFactory; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -62,7 +61,7 @@ public class ConfigServerBootstrapTest { public void testBootstrap() throws Exception { ConfigserverConfig configserverConfig = createConfigserverConfig(temporaryFolder); InMemoryProvisioner provisioner = new InMemoryProvisioner(true, "host0", "host1", "host3", "host4"); - DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), configserverConfig, provisioner); + DeployTester tester = new DeployTester(configserverConfig, provisioner); tester.deployApp("src/test/apps/hosted/"); File versionFile = temporaryFolder.newFile(); @@ -95,7 +94,7 @@ public class ConfigServerBootstrapTest { public void testBootstrapWithVipStatusFile() throws Exception { ConfigserverConfig configserverConfig = createConfigserverConfig(temporaryFolder); InMemoryProvisioner provisioner = new InMemoryProvisioner(true, "host0", "host1", "host3", "host4"); - DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), configserverConfig, provisioner); + DeployTester tester = new DeployTester(configserverConfig, provisioner); tester.deployApp("src/test/apps/hosted/"); File versionFile = temporaryFolder.newFile(); @@ -120,7 +119,7 @@ public class ConfigServerBootstrapTest { @Test public void testBootstrapWhenRedeploymentFails() throws Exception { ConfigserverConfig configserverConfig = createConfigserverConfig(temporaryFolder); - DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), configserverConfig); + DeployTester tester = new DeployTester(configserverConfig); tester.deployApp("src/test/apps/hosted/"); File versionFile = temporaryFolder.newFile(); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java index 54a80adf676..1121ac3a8cc 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.config.server.deploy; import com.google.common.io.Files; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.application.api.ApplicationPackage; -import com.yahoo.config.model.ConfigModelRegistry; import com.yahoo.config.model.NullConfigModelRegistry; import com.yahoo.config.model.api.HostProvisioner; import com.yahoo.config.model.api.Model; @@ -14,7 +13,6 @@ import com.yahoo.config.model.api.ModelFactory; import com.yahoo.config.model.api.ValidationParameters; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.provision.InMemoryProvisioner; -import com.yahoo.config.model.test.HostedConfigModelRegistry; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Capacity; @@ -101,10 +99,6 @@ public class DeployTester { this(modelFactories, configserverConfig, clock, Zone.defaultZone()); } - public DeployTester(List<ModelFactory> modelFactories, ConfigserverConfig configserverConfig, HostProvisioner hostProvisioner) { - this(modelFactories, configserverConfig, Clock.systemUTC(), hostProvisioner); - } - public DeployTester(List<ModelFactory> modelFactories, ConfigserverConfig configserverConfig, Clock clock, HostProvisioner provisioner) { this(modelFactories, configserverConfig, clock, Zone.defaultZone(), provisioner); } @@ -171,26 +165,6 @@ public class DeployTester { public static ModelFactory createFailingModelFactory(Version version) { return new FailingModelFactory(version); } - public static CountingModelFactory createHostedModelFactory(Version version, Clock clock) { - return new CountingModelFactory(HostedConfigModelRegistry.create(), version, clock, Zone.defaultZone()); - } - - public static CountingModelFactory createHostedModelFactory(Version version, Zone zone) { - return new CountingModelFactory(HostedConfigModelRegistry.create(), version, Clock.systemUTC(), zone); - } - - public static CountingModelFactory createHostedModelFactory(Version version) { - return new CountingModelFactory(HostedConfigModelRegistry.create(), version, Clock.systemUTC(), Zone.defaultZone()); - } - - public static CountingModelFactory createHostedModelFactory(Clock clock) { - return new CountingModelFactory(HostedConfigModelRegistry.create(), clock); - } - - public static CountingModelFactory createHostedModelFactory() { - return new CountingModelFactory(HostedConfigModelRegistry.create(), Clock.systemUTC()); - } - /** * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet. */ @@ -346,14 +320,6 @@ public class DeployTester { this.wrapped = new VespaModelFactory(version, new NullConfigModelRegistry(), clock, zone); } - public CountingModelFactory(ConfigModelRegistry registry, Clock clock) { - this.wrapped = new VespaModelFactory(registry, clock); - } - - public CountingModelFactory(ConfigModelRegistry registry, Version version, Clock clock, Zone zone) { - this.wrapped = new VespaModelFactory(version, registry, clock, zone); - } - /** Returns the number of models created successfully by this instance */ public int creationCount() { return creationCount; } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java index dd0c4eaf342..8f4ba0a7b7c 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java @@ -13,7 +13,6 @@ import com.yahoo.config.model.api.ValidationParameters; import com.yahoo.config.model.provision.Host; import com.yahoo.config.model.provision.Hosts; import com.yahoo.config.model.provision.InMemoryProvisioner; -import com.yahoo.config.model.test.HostedConfigModelRegistry; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; @@ -41,7 +40,7 @@ import java.util.stream.IntStream; import static com.yahoo.vespa.config.server.deploy.DeployTester.CountingModelFactory; import static com.yahoo.vespa.config.server.deploy.DeployTester.createFailingModelFactory; -import static com.yahoo.vespa.config.server.deploy.DeployTester.createHostedModelFactory; +import static com.yahoo.vespa.config.server.deploy.DeployTester.createModelFactory; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; @@ -63,7 +62,7 @@ public class HostedDeployTest { @Test public void testRedeployWithVersion() throws IOException { - CountingModelFactory modelFactory = createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()); + CountingModelFactory modelFactory = createModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()); DeployTester tester = new DeployTester(List.of(modelFactory), createConfigserverConfig()); tester.deployApp("src/test/apps/hosted/", "4.5.6"); @@ -75,7 +74,7 @@ public class HostedDeployTest { @Test public void testRedeploy() throws IOException { - DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), createConfigserverConfig()); + DeployTester tester = new DeployTester(createConfigserverConfig()); ApplicationId appId = tester.applicationId(); tester.deployApp("src/test/apps/hosted/"); assertFalse(tester.applicationRepository().getActiveSession(appId).getMetaData().isInternalRedeploy()); @@ -88,9 +87,9 @@ public class HostedDeployTest { @Test public void testDeployMultipleVersions() throws IOException { - List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("6.1.0")), - createHostedModelFactory(Version.fromString("6.2.0")), - createHostedModelFactory(Version.fromString("7.0.0"))); + List<ModelFactory> modelFactories = List.of(createModelFactory(Version.fromString("6.1.0")), + createModelFactory(Version.fromString("6.2.0")), + createModelFactory(Version.fromString("7.0.0"))); DeployTester tester = new DeployTester(modelFactories, createConfigserverConfig()); tester.deployApp("src/test/apps/hosted/", "6.2.0"); assertEquals(4, tester.getAllocatedHostsOf(tester.applicationId()).getHosts().size()); @@ -107,12 +106,12 @@ public class HostedDeployTest { createHost("host3"), // Use a host with no version as well createHost("host4", "6.1.0")); - CountingModelFactory factory600 = createHostedModelFactory(Version.fromString("6.0.0")); - CountingModelFactory factory610 = createHostedModelFactory(Version.fromString("6.1.0")); - CountingModelFactory factory620 = createHostedModelFactory(Version.fromString("6.2.0")); - CountingModelFactory factory700 = createHostedModelFactory(Version.fromString("7.0.0")); - CountingModelFactory factory710 = createHostedModelFactory(Version.fromString("7.1.0")); - CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0")); + CountingModelFactory factory600 = createModelFactory(Version.fromString("6.0.0")); + CountingModelFactory factory610 = createModelFactory(Version.fromString("6.1.0")); + CountingModelFactory factory620 = createModelFactory(Version.fromString("6.2.0")); + CountingModelFactory factory700 = createModelFactory(Version.fromString("7.0.0")); + CountingModelFactory factory710 = createModelFactory(Version.fromString("7.1.0")); + CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0")); List<ModelFactory> modelFactories = List.of(factory600, factory610, factory620, factory700, factory710, factory720); @@ -138,10 +137,10 @@ public class HostedDeployTest { public void testCreateOnlyNeededModelVersionsNewNodes() throws IOException { List<Host> hosts = List.of(createHost("host1"), createHost("host2"), createHost("host3"), createHost("host4")); - CountingModelFactory factory600 = createHostedModelFactory(Version.fromString("6.0.0")); - CountingModelFactory factory610 = createHostedModelFactory(Version.fromString("6.1.0")); - CountingModelFactory factory700 = createHostedModelFactory(Version.fromString("7.0.0")); - CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0")); + CountingModelFactory factory600 = createModelFactory(Version.fromString("6.0.0")); + CountingModelFactory factory610 = createModelFactory(Version.fromString("6.1.0")); + CountingModelFactory factory700 = createModelFactory(Version.fromString("7.0.0")); + CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0")); List<ModelFactory> modelFactories = List.of(factory600, factory610, factory700, factory720); DeployTester tester = createTester(hosts, modelFactories, prodZone); @@ -163,9 +162,9 @@ public class HostedDeployTest { List<Host> hosts = List.of(createHost("host1", "7.0.0"), createHost("host2", "7.0.0"), createHost("host3", "7.0.0"), createHost("host4", "7.0.0")); - CountingModelFactory factory700 = createHostedModelFactory(Version.fromString("7.0.0"), devZone); - CountingModelFactory factory710 = createHostedModelFactory(Version.fromString("7.1.0"), devZone); - CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0"), devZone); + CountingModelFactory factory700 = createModelFactory(Version.fromString("7.0.0"), devZone); + CountingModelFactory factory710 = createModelFactory(Version.fromString("7.1.0"), devZone); + CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0"), devZone); List<ModelFactory> modelFactories = List.of(factory700, factory710, factory720); DeployTester tester = createTester(hosts, modelFactories, devZone); @@ -190,7 +189,7 @@ public class HostedDeployTest { createHost("host3", "7.0.0"), createHost("host4", "7.0.0")); ModelFactory factory700 = createFailingModelFactory(Version.fromString("7.0.0")); - CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0"), devZone); + CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0"), devZone); List<ModelFactory> modelFactories = List.of(factory700, factory720); DeployTester tester = createTester(hosts, modelFactories, devZone, Clock.systemUTC()); @@ -237,8 +236,8 @@ public class HostedDeployTest { createHost("host3", newestOnOldMajorVersion), createHost("host4", newestOnOldMajorVersion)); - CountingModelFactory factory1 = createHostedModelFactory(Version.fromString(oldestVersion)); - CountingModelFactory factory2 = createHostedModelFactory(Version.fromString(newestOnOldMajorVersion)); + CountingModelFactory factory1 = createModelFactory(Version.fromString(oldestVersion)); + CountingModelFactory factory2 = createModelFactory(Version.fromString(newestOnOldMajorVersion)); ModelFactory factory3 = createFailingModelFactory(Version.fromString(newestOnNewMajorVersion)); List<ModelFactory> modelFactories = List.of(factory1, factory2, factory3); @@ -262,7 +261,7 @@ public class HostedDeployTest { createHost("host3", "7.0.0")); List<ModelFactory> modelFactories = List.of(createFailingModelFactory(Version.fromString("7.0.0")), - createHostedModelFactory(Version.fromString("7.1.0"))); + createModelFactory(Version.fromString("7.1.0"))); DeployTester tester = createTester(hosts, modelFactories, prodZone); tester.deployApp("src/test/apps/hosted/", "7.1.0"); @@ -275,8 +274,8 @@ public class HostedDeployTest { **/ @Test public void testCreateOnlyNeededModelVersionsWhenNoHostsAllocated() throws IOException { - CountingModelFactory factory700 = createHostedModelFactory(Version.fromString("7.0.0")); - CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0")); + CountingModelFactory factory700 = createModelFactory(Version.fromString("7.0.0")); + CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0")); List<ModelFactory> modelFactories = List.of(factory700, factory720); DeployTester tester = createTester(List.of(createHost("host1")), modelFactories, prodZone); @@ -290,9 +289,9 @@ public class HostedDeployTest { // Provisioner does not reuse hosts, so need twice as many hosts as app requires List<Host> hosts = IntStream.rangeClosed(1, 8).mapToObj(i -> createHost("host" + i, "6.0.0")).collect(Collectors.toList()); - List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("6.0.0")), - createHostedModelFactory(Version.fromString("6.1.0")), - createHostedModelFactory(Version.fromString("6.2.0"))); + List<ModelFactory> modelFactories = List.of(createModelFactory(Version.fromString("6.0.0")), + createModelFactory(Version.fromString("6.1.0")), + createModelFactory(Version.fromString("6.2.0"))); DeployTester tester = createTester(hosts, modelFactories, prodZone, Clock.systemUTC()); ApplicationId applicationId = tester.applicationId(); @@ -310,7 +309,7 @@ public class HostedDeployTest { public void testRedeployAfterExpiredValidationOverride() throws IOException { // Old version of model fails, but application disables loading old models until 2016-10-10, so deployment works ManualClock clock = new ManualClock("2016-10-09T00:00:00"); - List<ModelFactory> modelFactories = List.of(createHostedModelFactory(clock), + List<ModelFactory> modelFactories = List.of(createModelFactory(clock), createFailingModelFactory(Version.fromString("1.0.0"))); // older than default DeployTester tester = new DeployTester(modelFactories, createConfigserverConfig()); tester.deployApp("src/test/apps/validationOverride/", clock.instant()); @@ -404,7 +403,7 @@ public class HostedDeployTest { private final ConfigChangeAction action; ConfigChangeActionsModelFactory(Version vespaVersion, ConfigChangeAction action) { - super(HostedConfigModelRegistry.create(), vespaVersion); + super(vespaVersion); this.action = action; } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java b/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java index 65994a41eae..691f818020e 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.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.vespa.config.server.model; -import com.yahoo.config.model.ConfigModelRegistry; import com.yahoo.config.model.NullConfigModelRegistry; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.ModelCreateResult; @@ -22,11 +21,6 @@ public class TestModelFactory extends VespaModelFactory { this.vespaVersion = vespaVersion; } - public TestModelFactory(ConfigModelRegistry registry, Version vespaVersion) { - super(registry); - this.vespaVersion = vespaVersion; - } - // Needed for testing (to get hold of ModelContext) @Override public ModelCreateResult createAndValidateModel(ModelContext modelContext, ValidationParameters validationParameters) { |