summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-01-10 17:56:12 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2020-01-13 16:26:40 +0100
commite4f98750a282bbd66482d0e7a1cd16e454728e85 (patch)
tree4438f29f4b3cac5ae3f56c4a5bc7a2233eae1ec9 /configserver
parentff6f9d5a0064b6084c66e0b8dde45ca0f35dfd58 (diff)
Validate presence of http filter when 'access-control' is enabled
Add AccessControlFilterValidator that verifies precense of http filter. Remove use of 'access-control' in ImplicitIndexingClusterTest. Introduce HostedConfigModelRegistry for hosted specific tests using 'access-control'.
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java34
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java61
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java6
4 files changed, 75 insertions, 33 deletions
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 0b56591d6a1..2a1254d0d8d 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,6 +44,7 @@ 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;
@@ -61,7 +62,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(configserverConfig, provisioner);
+ DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), configserverConfig, provisioner);
tester.deployApp("src/test/apps/hosted/");
File versionFile = temporaryFolder.newFile();
@@ -94,7 +95,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(configserverConfig, provisioner);
+ DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), configserverConfig, provisioner);
tester.deployApp("src/test/apps/hosted/");
File versionFile = temporaryFolder.newFile();
@@ -119,7 +120,7 @@ public class ConfigServerBootstrapTest {
@Test
public void testBootstrapWhenRedeploymentFails() throws Exception {
ConfigserverConfig configserverConfig = createConfigserverConfig(temporaryFolder);
- DeployTester tester = new DeployTester(configserverConfig);
+ DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), 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 1121ac3a8cc..54a80adf676 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,6 +4,7 @@ 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;
@@ -13,6 +14,7 @@ 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;
@@ -99,6 +101,10 @@ 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);
}
@@ -165,6 +171,26 @@ 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.
*/
@@ -320,6 +346,14 @@ 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 8f4ba0a7b7c..dd0c4eaf342 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,6 +13,7 @@ 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;
@@ -40,7 +41,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.createModelFactory;
+import static com.yahoo.vespa.config.server.deploy.DeployTester.createHostedModelFactory;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
@@ -62,7 +63,7 @@ public class HostedDeployTest {
@Test
public void testRedeployWithVersion() throws IOException {
- CountingModelFactory modelFactory = createModelFactory(Version.fromString("4.5.6"), Clock.systemUTC());
+ CountingModelFactory modelFactory = createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC());
DeployTester tester = new DeployTester(List.of(modelFactory), createConfigserverConfig());
tester.deployApp("src/test/apps/hosted/", "4.5.6");
@@ -74,7 +75,7 @@ public class HostedDeployTest {
@Test
public void testRedeploy() throws IOException {
- DeployTester tester = new DeployTester(createConfigserverConfig());
+ DeployTester tester = new DeployTester(List.of(createHostedModelFactory()), createConfigserverConfig());
ApplicationId appId = tester.applicationId();
tester.deployApp("src/test/apps/hosted/");
assertFalse(tester.applicationRepository().getActiveSession(appId).getMetaData().isInternalRedeploy());
@@ -87,9 +88,9 @@ public class HostedDeployTest {
@Test
public void testDeployMultipleVersions() throws IOException {
- List<ModelFactory> modelFactories = List.of(createModelFactory(Version.fromString("6.1.0")),
- createModelFactory(Version.fromString("6.2.0")),
- createModelFactory(Version.fromString("7.0.0")));
+ List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("6.1.0")),
+ createHostedModelFactory(Version.fromString("6.2.0")),
+ createHostedModelFactory(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());
@@ -106,12 +107,12 @@ public class HostedDeployTest {
createHost("host3"), // Use a host with no version as well
createHost("host4", "6.1.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"));
+ 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"));
List<ModelFactory> modelFactories = List.of(factory600, factory610, factory620,
factory700, factory710, factory720);
@@ -137,10 +138,10 @@ public class HostedDeployTest {
public void testCreateOnlyNeededModelVersionsNewNodes() throws IOException {
List<Host> hosts = List.of(createHost("host1"), createHost("host2"), createHost("host3"), createHost("host4"));
- 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"));
+ 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"));
List<ModelFactory> modelFactories = List.of(factory600, factory610, factory700, factory720);
DeployTester tester = createTester(hosts, modelFactories, prodZone);
@@ -162,9 +163,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 = 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);
+ 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);
List<ModelFactory> modelFactories = List.of(factory700, factory710, factory720);
DeployTester tester = createTester(hosts, modelFactories, devZone);
@@ -189,7 +190,7 @@ public class HostedDeployTest {
createHost("host3", "7.0.0"), createHost("host4", "7.0.0"));
ModelFactory factory700 = createFailingModelFactory(Version.fromString("7.0.0"));
- CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0"), devZone);
+ CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0"), devZone);
List<ModelFactory> modelFactories = List.of(factory700, factory720);
DeployTester tester = createTester(hosts, modelFactories, devZone, Clock.systemUTC());
@@ -236,8 +237,8 @@ public class HostedDeployTest {
createHost("host3", newestOnOldMajorVersion),
createHost("host4", newestOnOldMajorVersion));
- CountingModelFactory factory1 = createModelFactory(Version.fromString(oldestVersion));
- CountingModelFactory factory2 = createModelFactory(Version.fromString(newestOnOldMajorVersion));
+ CountingModelFactory factory1 = createHostedModelFactory(Version.fromString(oldestVersion));
+ CountingModelFactory factory2 = createHostedModelFactory(Version.fromString(newestOnOldMajorVersion));
ModelFactory factory3 = createFailingModelFactory(Version.fromString(newestOnNewMajorVersion));
List<ModelFactory> modelFactories = List.of(factory1, factory2, factory3);
@@ -261,7 +262,7 @@ public class HostedDeployTest {
createHost("host3", "7.0.0"));
List<ModelFactory> modelFactories = List.of(createFailingModelFactory(Version.fromString("7.0.0")),
- createModelFactory(Version.fromString("7.1.0")));
+ createHostedModelFactory(Version.fromString("7.1.0")));
DeployTester tester = createTester(hosts, modelFactories, prodZone);
tester.deployApp("src/test/apps/hosted/", "7.1.0");
@@ -274,8 +275,8 @@ public class HostedDeployTest {
**/
@Test
public void testCreateOnlyNeededModelVersionsWhenNoHostsAllocated() throws IOException {
- CountingModelFactory factory700 = createModelFactory(Version.fromString("7.0.0"));
- CountingModelFactory factory720 = createModelFactory(Version.fromString("7.2.0"));
+ CountingModelFactory factory700 = createHostedModelFactory(Version.fromString("7.0.0"));
+ CountingModelFactory factory720 = createHostedModelFactory(Version.fromString("7.2.0"));
List<ModelFactory> modelFactories = List.of(factory700, factory720);
DeployTester tester = createTester(List.of(createHost("host1")), modelFactories, prodZone);
@@ -289,9 +290,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(createModelFactory(Version.fromString("6.0.0")),
- createModelFactory(Version.fromString("6.1.0")),
- createModelFactory(Version.fromString("6.2.0")));
+ List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("6.0.0")),
+ createHostedModelFactory(Version.fromString("6.1.0")),
+ createHostedModelFactory(Version.fromString("6.2.0")));
DeployTester tester = createTester(hosts, modelFactories, prodZone, Clock.systemUTC());
ApplicationId applicationId = tester.applicationId();
@@ -309,7 +310,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(createModelFactory(clock),
+ List<ModelFactory> modelFactories = List.of(createHostedModelFactory(clock),
createFailingModelFactory(Version.fromString("1.0.0"))); // older than default
DeployTester tester = new DeployTester(modelFactories, createConfigserverConfig());
tester.deployApp("src/test/apps/validationOverride/", clock.instant());
@@ -403,7 +404,7 @@ public class HostedDeployTest {
private final ConfigChangeAction action;
ConfigChangeActionsModelFactory(Version vespaVersion, ConfigChangeAction action) {
- super(vespaVersion);
+ super(HostedConfigModelRegistry.create(), 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 691f818020e..65994a41eae 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,6 +1,7 @@
// 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;
@@ -21,6 +22,11 @@ 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) {