aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java62
1 files changed, 43 insertions, 19 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
index 1e8e444896f..9472801ef2c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
@@ -6,6 +6,7 @@ import com.yahoo.component.Version;
import com.yahoo.config.application.api.DeploymentSpec;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.AthenzDomain;
import com.yahoo.config.provision.AthenzService;
import com.yahoo.config.provision.CloudName;
@@ -233,35 +234,58 @@ public class ControllerTest {
@Test
public void testDnsUpdatesForGlobalEndpoint() {
- var context = tester.newDeploymentContext("tenant1", "app1", "default");
+ var betaContext = tester.newDeploymentContext("tenant1", "app1", "beta");
+ var defaultContext = tester.newDeploymentContext("tenant1", "app1", "default");
ApplicationPackage applicationPackage = new ApplicationPackageBuilder()
+ .instances("beta,default")
.endpoint("default", "foo")
.region("us-west-1")
.region("us-central-1") // Two deployments should result in each DNS alias being registered once
.build();
- context.submit(applicationPackage).deploy();
+ betaContext.submit(applicationPackage).deploy();
+
+ { // Expected rotation names are passed to beta instance deployments
+ Collection<Deployment> betaDeployments = betaContext.instance().deployments().values();
+ assertFalse(betaDeployments.isEmpty());
+ for (Deployment deployment : betaDeployments) {
+ assertEquals("Rotation names are passed to config server in " + deployment.zone(),
+ Set.of("rotation-id-01",
+ "beta--app1--tenant1.global.vespa.oath.cloud"),
+ tester.configServer().containerEndpointNames(betaContext.deploymentIdIn(deployment.zone())));
+ }
+ betaContext.flushDnsUpdates();
+ }
- Collection<Deployment> deployments = context.instance().deployments().values();
- assertFalse(deployments.isEmpty());
- for (Deployment deployment : deployments) {
- assertEquals("Rotation names are passed to config server in " + deployment.zone(),
- Set.of("rotation-id-01",
- "app1--tenant1.global.vespa.oath.cloud"),
- tester.configServer().containerEndpointNames(context.deploymentIdIn(deployment.zone())));
+ { // Expected rotation names are passed to default instance deployments
+ Collection<Deployment> defaultDeployments = defaultContext.instance().deployments().values();
+ assertFalse(defaultDeployments.isEmpty());
+ for (Deployment deployment : defaultDeployments) {
+ assertEquals("Rotation names are passed to config server in " + deployment.zone(),
+ Set.of("rotation-id-02",
+ "app1--tenant1.global.vespa.oath.cloud"),
+ tester.configServer().containerEndpointNames(defaultContext.deploymentIdIn(deployment.zone())));
+ }
+ defaultContext.flushDnsUpdates();
}
- context.flushDnsUpdates();
- assertEquals(1, tester.controllerTester().nameService().records().size());
+ Map<String, String> rotationCnames = Map.of("beta--app1--tenant1.global.vespa.oath.cloud", "rotation-fqdn-01.",
+ "app1--tenant1.global.vespa.oath.cloud", "rotation-fqdn-02.");
+ rotationCnames.forEach((cname, data) -> {
+ var record = tester.controllerTester().findCname(cname);
+ assertTrue(record.isPresent());
+ assertEquals(cname, record.get().name().asString());
+ assertEquals(data, record.get().data().asString());
+ });
- var record = tester.controllerTester().findCname("app1--tenant1.global.vespa.oath.cloud");
- assertTrue(record.isPresent());
- assertEquals("app1--tenant1.global.vespa.oath.cloud", record.get().name().asString());
- assertEquals("rotation-fqdn-01.", record.get().data().asString());
+ Map<ApplicationId, List<String>> globalDnsNamesByInstance = Map.of(betaContext.instanceId(), List.of("beta--app1--tenant1.global.vespa.oath.cloud"),
+ defaultContext.instanceId(), List.of("app1--tenant1.global.vespa.oath.cloud"));
- List<String> globalDnsNames = tester.controller().routing().readDeclaredEndpointsOf(context.instanceId())
- .scope(Endpoint.Scope.global)
- .mapToList(Endpoint::dnsName);
- assertEquals(List.of("app1--tenant1.global.vespa.oath.cloud"), globalDnsNames);
+ globalDnsNamesByInstance.forEach((instance, dnsNames) -> {
+ List<String> actualDnsNames = tester.controller().routing().readDeclaredEndpointsOf(instance)
+ .scope(Endpoint.Scope.global)
+ .mapToList(Endpoint::dnsName);
+ assertEquals("Global DNS names for " + instance, dnsNames, actualDnsNames);
+ });
}
@Test