use of com.yahoo.transaction.NestedTransaction in project vespa by vespa-engine.
the class ProvisioningTest method application_deployment_constant_application_size.
@Test
public void application_deployment_constant_application_size() {
ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
ApplicationId application1 = tester.makeApplicationId();
ApplicationId application2 = tester.makeApplicationId();
tester.makeReadyNodes(21, "default");
// deploy
SystemState state1 = prepare(application1, 2, 2, 3, 3, "default", tester);
tester.activate(application1, state1.allHosts);
// redeploy
SystemState state2 = prepare(application1, 2, 2, 3, 3, "default", tester);
state2.assertEquals(state1);
tester.activate(application1, state2.allHosts);
// deploy another application
SystemState state1App2 = prepare(application2, 2, 2, 3, 3, "default", tester);
assertFalse("Hosts to different apps are disjunct", state1App2.allHosts.removeAll(state1.allHosts));
tester.activate(application2, state1App2.allHosts);
// prepare twice
SystemState state3 = prepare(application1, 2, 2, 3, 3, "default", tester);
SystemState state4 = prepare(application1, 2, 2, 3, 3, "default", tester);
state3.assertEquals(state2);
state4.assertEquals(state3);
tester.activate(application1, state4.allHosts);
// remove nodes before deploying
SystemState state5 = prepare(application1, 2, 2, 3, 3, "default", tester);
HostSpec removed = tester.removeOne(state5.allHosts);
tester.activate(application1, state5.allHosts);
assertEquals(removed.hostname(), tester.nodeRepository().getNodes(application1, Node.State.inactive).get(0).hostname());
// remove some of the clusters
SystemState state6 = prepare(application1, 0, 2, 0, 3, "default", tester);
tester.activate(application1, state6.allHosts);
assertEquals(5, tester.getNodes(application1, Node.State.active).size());
assertEquals(5, tester.getNodes(application1, Node.State.inactive).size());
// delete app
NestedTransaction removeTransaction = new NestedTransaction();
tester.provisioner().remove(removeTransaction, application1);
removeTransaction.commit();
assertEquals(tester.toHostNames(state1.allHosts), tester.toHostNames(tester.nodeRepository().getNodes(application1, Node.State.inactive)));
assertEquals(0, tester.getNodes(application1, Node.State.active).size());
// other application is unaffected
assertEquals(state1App2.hostNames(), tester.toHostNames(tester.nodeRepository().getNodes(application2, Node.State.active)));
// fail a node from app2 and make sure it does not get inactive nodes from first
HostSpec failed = tester.removeOne(state1App2.allHosts);
tester.fail(failed);
assertEquals(9, tester.getNodes(application2, Node.State.active).size());
SystemState state2App2 = prepare(application2, 2, 2, 3, 3, "default", tester);
assertFalse("Hosts to different apps are disjunct", state2App2.allHosts.removeAll(state1.allHosts));
assertEquals("A new node was reserved to replace the failed one", 10, state2App2.allHosts.size());
assertFalse("The new host is not the failed one", state2App2.allHosts.contains(failed));
tester.activate(application2, state2App2.allHosts);
// deploy first app again
SystemState state7 = prepare(application1, 2, 2, 3, 3, "default", tester);
state7.assertEquals(state1);
tester.activate(application1, state7.allHosts);
assertEquals(0, tester.getNodes(application1, Node.State.inactive).size());
// restart
HostFilter allFilter = HostFilter.all();
HostFilter hostFilter = HostFilter.hostname(state6.allHosts.iterator().next().hostname());
HostFilter clusterTypeFilter = HostFilter.clusterType(ClusterSpec.Type.container);
HostFilter clusterIdFilter = HostFilter.clusterId(ClusterSpec.Id.from("container1"));
tester.provisioner().restart(application1, allFilter);
tester.provisioner().restart(application1, hostFilter);
tester.provisioner().restart(application1, clusterTypeFilter);
tester.provisioner().restart(application1, clusterIdFilter);
tester.assertRestartCount(application1, allFilter, hostFilter, clusterTypeFilter, clusterIdFilter);
}
use of com.yahoo.transaction.NestedTransaction in project vespa by vespa-engine.
the class NodeFailTester method activate.
private void activate(ApplicationId applicationId, ClusterSpec cluster, Capacity capacity) {
List<HostSpec> hosts = provisioner.prepare(applicationId, cluster, capacity, 1, null);
NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator));
provisioner.activate(transaction, applicationId, hosts);
transaction.commit();
}
use of com.yahoo.transaction.NestedTransaction in project vespa by vespa-engine.
the class RetiredExpirerTest method activate.
private void activate(ApplicationId applicationId, ClusterSpec cluster, int nodes, int groups, NodeRepositoryProvisioner provisioner) {
List<HostSpec> hosts = provisioner.prepare(applicationId, cluster, Capacity.fromNodeCount(nodes), groups, null);
NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator));
provisioner.activate(transaction, applicationId, hosts);
transaction.commit();
}
use of com.yahoo.transaction.NestedTransaction in project vespa by vespa-engine.
the class ProvisioningTester method deactivate.
public void deactivate(ApplicationId applicationId) {
NestedTransaction deactivateTransaction = new NestedTransaction();
nodeRepository.deactivate(applicationId, deactivateTransaction);
deactivateTransaction.commit();
}
use of com.yahoo.transaction.NestedTransaction in project vespa by vespa-engine.
the class MockNodeRepository method activate.
private void activate(List<HostSpec> hosts, ApplicationId application, NodeRepositoryProvisioner provisioner) {
NestedTransaction transaction = new NestedTransaction();
provisioner.activate(transaction, application, hosts);
transaction.commit();
}
Aggregations