summaryrefslogtreecommitdiffstats
path: root/node-repository/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository/src/test/java')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java7
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java32
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java32
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java3
9 files changed, 63 insertions, 23 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
index 3a29204d2f4..b2bc21d1cf1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
@@ -266,7 +266,7 @@ public class CapacityCheckerTester {
nodeModel.parentHostname, f, nodeModel.type);
if (membership != null) {
- return node.allocate(owner, membership, Instant.now());
+ return node.allocate(owner, membership, node.flavor().resources(), Instant.now());
} else {
return node;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
index 0a4ca831d3d..71788fb1a30 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
@@ -199,6 +199,7 @@ public class DynamicProvisioningMaintainerTest {
.map(app -> new Allocation(
app,
ClusterMembership.from("container/default/0/0", Version.fromString("7.3")),
+ flavor.resources(),
Generation.initial(),
false));
var ipConfig = new IP.Config(state == Node.State.active ? Set.of("::1") : Set.of(), Set.of());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
index db4ba661b64..ed6e6c6e9a7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
@@ -126,12 +126,12 @@ public class MetricsReporterTest {
Node container1 = Node.createDockerNode(Set.of("::2"), "container1",
"dockerHost", new NodeResources(1, 3, 2, 1), NodeType.tenant);
- container1 = container1.with(allocation(Optional.of("app1")).get());
+ container1 = container1.with(allocation(Optional.of("app1"), container1).get());
nodeRepository.addDockerNodes(new LockedNodeList(List.of(container1), nodeRepository.lockAllocation()));
Node container2 = Node.createDockerNode(Set.of("::3"), "container2",
"dockerHost", new NodeResources(2, 4, 4, 1), NodeType.tenant);
- container2 = container2.with(allocation(Optional.of("app2")).get());
+ container2 = container2.with(allocation(Optional.of("app2"), container2).get());
nodeRepository.addDockerNodes(new LockedNodeList(List.of(container2), nodeRepository.lockAllocation()));
Orchestrator orchestrator = mock(Orchestrator.class);
@@ -171,10 +171,11 @@ public class MetricsReporterTest {
.instanceName("default").build();
}
- private Optional<Allocation> allocation(Optional<String> tenant) {
+ private Optional<Allocation> allocation(Optional<String> tenant, Node owner) {
if (tenant.isPresent()) {
Allocation allocation = new Allocation(app(tenant.get()),
ClusterMembership.from("container/id1/0/3", new Version()),
+ owner.flavor().resources(),
Generation.initial(),
false);
return Optional.of(allocation);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
index 0cfdf80a8a1..5a4c87aaf77 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
@@ -10,6 +10,7 @@ import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.NetworkPorts;
import com.yahoo.config.provision.NodeFlavors;
+import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.host.FlavorOverrides;
@@ -70,6 +71,7 @@ public class SerializationTest {
@Test
public void testReservedNodeSerialization() {
Node node = createNode();
+ NodeResources requestedResources = new NodeResources(1.2, 3.4, 5.6, 7.8, NodeResources.DiskSpeed.any);
clock.advance(Duration.ofMinutes(3));
assertEquals(0, node.history().events().size());
@@ -77,6 +79,7 @@ public class SerializationTest {
ApplicationName.from("myApplication"),
InstanceName.from("myInstance")),
ClusterMembership.from("content/myId/0/0", Vtag.currentVersion),
+ requestedResources,
clock.instant());
assertEquals(1, node.history().events().size());
node = node.withRestart(new Generation(1, 2));
@@ -99,6 +102,7 @@ public class SerializationTest {
assertEquals(2, copy.status().failCount());
assertEquals(node.allocation().get().owner(), copy.allocation().get().owner());
assertEquals(node.allocation().get().membership(), copy.allocation().get().membership());
+ assertEquals(node.allocation().get().requestedResources(), copy.allocation().get().requestedResources());
assertEquals(node.allocation().get().isRemovable(), copy.allocation().get().isRemovable());
assertEquals(1, copy.history().events().size());
assertEquals(clock.instant().truncatedTo(MILLIS), copy.history().event(History.Event.Type.reserved).get().at());
@@ -106,17 +110,6 @@ public class SerializationTest {
}
@Test
- public void testDefaultType() {
- Node node = createNode().allocate(ApplicationId.from(TenantName.from("myTenant"),
- ApplicationName.from("myApplication"),
- InstanceName.from("myInstance")),
- ClusterMembership.from("content/myId/0/0", Vtag.currentVersion),
- clock.instant());
- Node copy = nodeSerializer.fromJson(Node.State.provisioned, nodeSerializer.toJson(node));
- assertEquals(NodeType.host, copy.type());
- }
-
- @Test
public void testRebootAndRestartAndTypeNoCurrentValuesSerialization() {
String nodeData =
"{\n" +
@@ -127,11 +120,13 @@ public class SerializationTest {
" \"history\" : [\n" +
" {\n" +
" \"type\" : \"provisioned\",\n" +
- " \"at\" : 1444391401389\n" +
+ " \"at\" : 1444391401389,\n" +
+ " \"agent\" : \"system\"\n" +
" },\n" +
" {\n" +
" \"type\" : \"reserved\",\n" +
- " \"at\" : 1444391402611\n" +
+ " \"at\" : 1444391402611,\n" +
+ " \"agent\" : \"system\"\n" +
" }\n" +
" ],\n" +
" \"instance\" : {\n" +
@@ -172,6 +167,7 @@ public class SerializationTest {
ApplicationName.from("myApplication"),
InstanceName.from("myInstance")),
ClusterMembership.from("content/myId/0/0", Vtag.currentVersion),
+ node.flavor().resources(),
clock.instant());
assertEquals(1, node.history().events().size());
clock.advance(Duration.ofMinutes(2));
@@ -221,6 +217,7 @@ public class SerializationTest {
ApplicationName.from("myApplication"),
InstanceName.from("myInstance")),
ClusterMembership.from("content/myId/0/0", Vtag.currentVersion),
+ node.flavor().resources(),
clock.instant());
node = node.with(node.status().setFailCount(0));
@@ -405,6 +402,7 @@ public class SerializationTest {
ApplicationName.from("myApplication"),
InstanceName.from("myInstance")),
ClusterMembership.from("content/myId/0/0", Vtag.currentVersion),
+ node.flavor().resources(),
clock.instant());
assertTrue(node.allocation().isPresent());
node = node.with(node.allocation().get().withNetworkPorts(ports));
@@ -437,7 +435,13 @@ public class SerializationTest {
}
private Node createNode() {
- return Node.create("myId", new IP.Config(Set.of("127.0.0.1"), Set.of()), "myHostname", Optional.empty(), Optional.empty(), nodeFlavors.getFlavorOrThrow("default"), NodeType.host);
+ return Node.create("myId",
+ new IP.Config(Set.of("127.0.0.1"), Set.of()),
+ "myHostname",
+ Optional.empty(),
+ Optional.empty(),
+ nodeFlavors.getFlavorOrThrow("default"),
+ NodeType.tenant);
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
index e3aefdd4512..9cd95e401a9 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
@@ -80,7 +80,7 @@ public class AllocationSimulator {
private Node node(String hostname, Flavor flavor, Optional<String> parent, Optional<String> tenant) {
var ipConfig = new IP.Config(Set.of("127.0.0.1"), parent.isPresent() ? Set.of() : getAdditionalIP());
return new Node("fake", ipConfig, hostname, parent, flavor, Status.initial(),
- parent.isPresent() ? Node.State.ready : Node.State.active, allocation(tenant), History.empty(),
+ parent.isPresent() ? Node.State.ready : Node.State.active, allocation(tenant, flavor), History.empty(),
parent.isPresent() ? NodeType.tenant : NodeType.host, new Reports(), Optional.empty());
}
@@ -90,10 +90,11 @@ public class AllocationSimulator {
return h;
}
- private Optional<Allocation> allocation(Optional<String> tenant) {
+ private Optional<Allocation> allocation(Optional<String> tenant, Flavor flavor) {
if (tenant.isPresent()) {
Allocation allocation = new Allocation(app(tenant.get()),
ClusterMembership.from("container/id1/3", new Version()),
+ flavor.resources(),
Generation.initial(),
false);
return Optional.of(allocation);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java
index a3512c480d3..618df82e38b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java
@@ -426,7 +426,7 @@ public class DynamicDockerAllocationTest {
Node node1a = Node.create("open1", new IP.Config(Set.of("127.0.233." + index), Set.of()), hostname, Optional.of(parentHostname), Optional.empty(), new Flavor(flavor), NodeType.tenant);
ClusterMembership clusterMembership1 = ClusterMembership.from(
clusterSpec.with(Optional.of(ClusterSpec.Group.from(0))), index); // Need to add group here so that group is serialized in node allocation
- Node node1aAllocation = node1a.allocate(id, clusterMembership1, Instant.now());
+ Node node1aAllocation = node1a.allocate(id, clusterMembership1, node1a.flavor().resources(), Instant.now());
tester.nodeRepository().addNodes(Collections.singletonList(node1aAllocation));
NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(tester.getCurator()));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java
index da77bebccda..48bd091011e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java
@@ -140,7 +140,7 @@ public class InfraDeployerImplTest {
Optional<Node> nodeWithAllocation = wantedVespaVersion.map(version -> {
ClusterSpec clusterSpec = application.getClusterSpecWithVersion(version).with(Optional.of(ClusterSpec.Group.from(0)));
ClusterMembership membership = ClusterMembership.from(clusterSpec, 1);
- Allocation allocation = new Allocation(application.getApplicationId(), membership, Generation.initial(), false);
+ Allocation allocation = new Allocation(application.getApplicationId(), membership, node.flavor().resources(), Generation.initial(), false);
return node.with(allocation);
});
return nodeRepository.database().writeTo(state, nodeWithAllocation.orElse(node), Agent.system, Optional.empty());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index 877038b8722..a8b534e02ef 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -320,6 +320,38 @@ public class ProvisioningTest {
}
@Test
+ public void requested_resources_info_is_retained() {
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
+
+ tester.makeReadyNodes(13, defaultResources, NodeType.host, 1);
+ tester.prepareAndActivateInfraApplication(tester.makeApplicationId(), NodeType.host);
+ ApplicationId application = tester.makeApplicationId();
+
+ {
+ // Deploy with disk-speed any and make sure that information is retained
+ SystemState state = prepare(application, 0, 0, 3, 3,
+ defaultResources.anySpeed(),
+ tester);
+ assertEquals(6, state.allHosts.size());
+ tester.activate(application, state.allHosts);
+ assertTrue(state.allHosts.stream().allMatch(host -> host.requestedResources().get().diskSpeed() == NodeResources.DiskSpeed.any));
+ assertTrue(tester.nodeRepository().getNodes(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.any));
+ }
+
+ {
+ // Deploy (with some additional nodes) with disk-speed fast and make sure *that* information is retained
+ // even though it does not lead to new nodes
+ SystemState state = prepare(application, 0, 0, 5, 3,
+ defaultResources,
+ tester);
+ assertEquals(8, state.allHosts.size());
+ tester.activate(application, state.allHosts);
+ assertTrue(state.allHosts.stream().allMatch(host -> host.requestedResources().get().diskSpeed() == NodeResources.DiskSpeed.fast));
+ assertTrue(tester.nodeRepository().getNodes(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.fast));
+ }
+ }
+
+ @Test
public void deploy_specific_vespa_version() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index af635ada89d..242b0d8ca9e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -148,12 +148,13 @@ public class ProvisioningTester {
return hosts1;
}
- public void activate(ApplicationId application, Collection<HostSpec> hosts) {
+ public Collection<HostSpec> activate(ApplicationId application, Collection<HostSpec> hosts) {
NestedTransaction transaction = new NestedTransaction();
transaction.add(new CuratorTransaction(curator));
provisioner.activate(transaction, application, hosts);
transaction.commit();
assertEquals(toHostNames(hosts), toHostNames(nodeRepository.getNodes(application, Node.State.active)));
+ return hosts;
}
public void prepareAndActivateInfraApplication(ApplicationId application, NodeType nodeType, Version version) {