Search in sources :

Example 71 with Zone

use of com.yahoo.config.provision.Zone in project vespa by vespa-engine.

the class OperatorChangeApplicationMaintainerTest method test_application_maintenance.

@Test
public void test_application_maintenance() throws InterruptedException {
    ManualClock clock = new ManualClock();
    Curator curator = new MockCurator();
    Zone zone = new Zone(Environment.prod, RegionName.from("us-east"));
    this.nodeRepository = new NodeRepository(nodeFlavors, curator, clock, zone, new MockNameResolver().mockAnyLookup(), new DockerImage("docker-registry.domain.tld:8080/dist/vespa"), true);
    this.fixture = new Fixture(zone, nodeRepository, nodeFlavors, curator);
    createReadyNodes(15, nodeRepository, nodeFlavors);
    createHostNodes(2, nodeRepository, nodeFlavors);
    // Create applications
    fixture.activate();
    OperatorChangeApplicationMaintainer maintainer = new OperatorChangeApplicationMaintainer(fixture.deployer, nodeRepository, clock, Duration.ofMinutes(1), new JobControl(nodeRepository.database()));
    clock.advance(Duration.ofMinutes(2));
    maintainer.maintain();
    assertEquals("No changes -> no redeployments", 0, fixture.deployer.redeployments);
    nodeRepository.fail(nodeRepository.getNodes(fixture.app1).get(3).hostname(), Agent.system, "Failing to unit test");
    clock.advance(Duration.ofMinutes(2));
    maintainer.maintain();
    assertEquals("System change -> no redeployments", 0, fixture.deployer.redeployments);
    clock.advance(Duration.ofSeconds(1));
    nodeRepository.fail(nodeRepository.getNodes(fixture.app2).get(4).hostname(), Agent.operator, "Manual node failing");
    clock.advance(Duration.ofMinutes(2));
    maintainer.maintain();
    assertEquals("Operator change -> redeployment", 1, fixture.deployer.redeployments);
    clock.advance(Duration.ofMinutes(2));
    maintainer.maintain();
    assertEquals("No further operator changes -> no (new) redeployments", 1, fixture.deployer.redeployments);
}
Also used : ManualClock(com.yahoo.test.ManualClock) MockNameResolver(com.yahoo.vespa.hosted.provision.testutils.MockNameResolver) Zone(com.yahoo.config.provision.Zone) NodeRepository(com.yahoo.vespa.hosted.provision.NodeRepository) Curator(com.yahoo.vespa.curator.Curator) MockCurator(com.yahoo.vespa.curator.mock.MockCurator) DockerImage(com.yahoo.config.provision.DockerImage) MockCurator(com.yahoo.vespa.curator.mock.MockCurator) Test(org.junit.Test)

Aggregations

Zone (com.yahoo.config.provision.Zone)71 Test (org.junit.Test)64 ApplicationId (com.yahoo.config.provision.ApplicationId)51 Node (com.yahoo.vespa.hosted.provision.Node)17 Flavor (com.yahoo.config.provision.Flavor)15 ClusterSpec (com.yahoo.config.provision.ClusterSpec)13 HostSpec (com.yahoo.config.provision.HostSpec)12 OutOfCapacityException (com.yahoo.config.provision.OutOfCapacityException)10 HashSet (java.util.HashSet)8 DeployState (com.yahoo.config.model.deploy.DeployState)6 NestedTransaction (com.yahoo.transaction.NestedTransaction)6 Curator (com.yahoo.vespa.curator.Curator)6 MockCurator (com.yahoo.vespa.curator.mock.MockCurator)6 NodeList (com.yahoo.vespa.hosted.provision.NodeList)6 MockNameResolver (com.yahoo.vespa.hosted.provision.testutils.MockNameResolver)6 ConfigserverConfig (com.yahoo.cloud.config.ConfigserverConfig)5 Version (com.yahoo.component.Version)5 RegionName (com.yahoo.config.provision.RegionName)5 TenantName (com.yahoo.config.provision.TenantName)5 FlavorsConfig (com.yahoo.config.provisioning.FlavorsConfig)5