summaryrefslogtreecommitdiffstats
path: root/node-repository/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository/src/test')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java27
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java15
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java7
9 files changed, 58 insertions, 24 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java
index 2f331c53f74..cc988b2ec1e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.provision.applications;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.ProvisionLock;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.hosted.provision.NodeRepositoryTester;
@@ -30,7 +31,7 @@ public class ApplicationsTest {
assertEquals(app1, applications.get(app1).get().id());
assertEquals(List.of(app1), applications.ids());
NestedTransaction t = new NestedTransaction();
- applications.remove(app1, t, provisionLock(app1));
+ applications.remove(new ApplicationTransaction(provisionLock(app1), t));
t.commit();
assertTrue(applications.get(app1).isEmpty());
assertEquals(List.of(), applications.ids());
@@ -38,14 +39,14 @@ public class ApplicationsTest {
applications.put(new Application(app1), () -> {});
applications.put(new Application(app2), () -> {});
t = new NestedTransaction();
- applications.put(new Application(app3), t, () -> {});
+ applications.put(new Application(app3), new ApplicationTransaction(provisionLock(app1), t));
assertEquals(List.of(app1, app2), applications.ids());
t.commit();
assertEquals(List.of(app1, app2, app3), applications.ids());
t = new NestedTransaction();
- applications.remove(app1, t, provisionLock(app1));
- applications.remove(app2, t, provisionLock(app2));
- applications.remove(app3, t, provisionLock(app3));
+ applications.remove(new ApplicationTransaction(provisionLock(app1), t));
+ applications.remove(new ApplicationTransaction(provisionLock(app2), t));
+ applications.remove(new ApplicationTransaction(provisionLock(app3), t));
assertEquals(List.of(app1, app2, app3), applications.ids());
t.commit();
assertTrue(applications.get(app1).isEmpty());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java
index 2635258956a..5c2bbf1742f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java
@@ -6,13 +6,18 @@ import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeResources;
+import com.yahoo.vespa.hosted.provision.applications.ScalingEvent;
import com.yahoo.vespa.hosted.provision.autoscale.Metric;
import com.yahoo.vespa.hosted.provision.testutils.MockDeployer;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
+import java.util.List;
+
+import static com.yahoo.config.provision.NodeResources.DiskSpeed.fast;
+import static com.yahoo.config.provision.NodeResources.StorageType.remote;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -78,24 +83,32 @@ public class AutoscalingMaintainerTest {
var tester = new AutoscalingMaintainerTester(new MockDeployer.ApplicationContext(app1, cluster1, app1Capacity));
// Initial deployment at time 0
+ System.out.println("Initial deploy");
tester.deploy(app1, cluster1, app1Capacity);
// Measure overload
tester.clock().advance(Duration.ofSeconds(1));
+ System.out.println("Advance by 1 second to " + tester.clock().instant());
+ System.out.println("Emit metrics");
+ tester.addMeasurements(Metric.generation, 0, 1, app1);
tester.addMeasurements(Metric.cpu, 0.9f, 500, app1);
tester.addMeasurements(Metric.memory, 0.9f, 500, app1);
tester.addMeasurements(Metric.disk, 0.9f, 500, app1);
// Causes autoscaling
tester.clock().advance(Duration.ofSeconds(1));
+ System.out.println("Advance by 1 second to " + tester.clock().instant());
Instant firstMaintenanceTime = tester.clock().instant();
+ System.out.println("Run maintenance");
tester.maintainer().maintain();
assertTrue(tester.deployer().lastDeployTime(app1).isPresent());
assertEquals(firstMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli());
- assertEquals(1, tester.nodeMetricsDb().getEvents(app1).size());
- assertEquals(app1, tester.nodeMetricsDb().getEvents(app1).get(0).application());
- assertEquals(0, tester.nodeMetricsDb().getEvents(app1).get(0).generation());
- assertEquals(firstMaintenanceTime.toEpochMilli(), tester.nodeMetricsDb().getEvents(app1).get(0).time().toEpochMilli());
+ List<ScalingEvent> events = tester.nodeRepository().applications().get(app1).get().cluster(cluster1.id()).get().scalingEvents();
+ assertEquals(1, events.size());
+ assertEquals(2, events.get(0).from().nodes());
+ assertEquals(4, events.get(0).to().nodes());
+ assertEquals(1, events.get(0).generation());
+ assertEquals(firstMaintenanceTime.toEpochMilli(), events.get(0).at().toEpochMilli());
// Measure overload still, since change is not applied, but metrics are discarded
tester.clock().advance(Duration.ofSeconds(1));
@@ -117,7 +130,7 @@ public class AutoscalingMaintainerTest {
// Add measurement of the expected generation, leading to rescaling
tester.clock().advance(Duration.ofSeconds(1));
- tester.addMeasurements(Metric.generation, 0, 1, app1);
+ tester.addMeasurements(Metric.generation, 1, 1, app1);
tester.addMeasurements(Metric.cpu, 0.1f, 500, app1);
tester.addMeasurements(Metric.memory, 0.1f, 500, app1);
tester.addMeasurements(Metric.disk, 0.1f, 500, app1);
@@ -125,8 +138,8 @@ public class AutoscalingMaintainerTest {
Instant lastMaintenanceTime = tester.clock().instant();
tester.maintainer().maintain();
assertEquals(lastMaintenanceTime.toEpochMilli(), tester.deployer().lastDeployTime(app1).get().toEpochMilli());
- assertEquals(2, tester.nodeMetricsDb().getEvents(app1).size());
- assertEquals(1, tester.nodeMetricsDb().getEvents(app1).get(1).generation());
+ events = tester.nodeRepository().applications().get(app1).get().cluster(cluster1.id()).get().scalingEvents();
+ assertEquals(2, events.get(0).generation());
}
@Test
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
index 58a8edb4631..ceedb41ab31 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
@@ -1,8 +1,10 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
+import com.yahoo.config.provision.ActivationContext;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
@@ -330,7 +332,7 @@ public class FailedExpirerTest {
(level, message) -> System.out.println(level + ": " + message) );
try (var lock = provisioner.lock(applicationId)) {
NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator));
- provisioner.activate(transaction, Set.copyOf(preparedNodes), lock);
+ provisioner.activate(Set.copyOf(preparedNodes), new ActivationContext(0), new ApplicationTransaction(lock, transaction));
transaction.commit();
}
return this;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
index 5117a7b7397..824ebe40ea8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
@@ -1,7 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
+import com.yahoo.config.provision.ActivationContext;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
@@ -250,7 +252,7 @@ public class NodeFailTester {
List<HostSpec> hosts = provisioner.prepare(applicationId, cluster, capacity, null);
try (var lock = provisioner.lock(applicationId)) {
NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator));
- provisioner.activate(transaction, hosts, lock);
+ provisioner.activate(hosts, new ActivationContext(0), new ApplicationTransaction(lock, transaction));
transaction.commit();
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
index 35c8a9a9251..21003324696 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
@@ -82,7 +83,8 @@ public class RebalancerTest {
// --- Making the system stable enables rebalancing
NestedTransaction tx = new NestedTransaction();
- tester.nodeRepository().deactivate(List.of(cpuSkewedNode), tx, new ProvisionLock(cpuApp, () -> {}));
+ tester.nodeRepository().deactivate(List.of(cpuSkewedNode),
+ new ApplicationTransaction(new ProvisionLock(cpuApp, () -> {}), tx));
tx.commit();
// ... if activation fails when trying, we clean up the state
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
index aba5810784b..bdae9d28fe2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
@@ -1,8 +1,10 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
+import com.yahoo.config.provision.ActivationContext;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java
index 598831d1eeb..72f9e9597de 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java
@@ -7,8 +7,10 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.vespa.hosted.provision.applications.Application;
import com.yahoo.vespa.hosted.provision.applications.Cluster;
+import com.yahoo.vespa.hosted.provision.applications.ScalingEvent;
import org.junit.Test;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -30,13 +32,19 @@ public class ApplicationSerializerTest {
new ClusterResources( 8, 4, new NodeResources(1, 2, 3, 4)),
new ClusterResources(12, 6, new NodeResources(3, 6, 21, 24)),
Optional.empty(),
- Optional.empty()));
+ Optional.empty(),
+ List.of()));
+ var minResources = new NodeResources(1, 2, 3, 4);
clusters.add(new Cluster(ClusterSpec.Id.from("c2"),
true,
- new ClusterResources( 8, 4, new NodeResources(1, 2, 3, 4)),
+ new ClusterResources( 8, 4, minResources),
new ClusterResources(14, 7, new NodeResources(3, 6, 21, 24)),
Optional.of(new ClusterResources(20, 10, new NodeResources(0.5, 4, 14, 16))),
- Optional.of(new ClusterResources(10, 5, new NodeResources(2, 4, 14, 16)))));
+ Optional.of(new ClusterResources(10, 5, new NodeResources(2, 4, 14, 16))),
+ List.of(new ScalingEvent(new ClusterResources(10, 5, minResources),
+ new ClusterResources(12, 6, minResources),
+ 7L,
+ Instant.ofEpochMilli(12345L)))));
Application original = new Application(ApplicationId.from("myTenant", "myApplication", "myInstance"),
clusters);
@@ -56,6 +64,7 @@ public class ApplicationSerializerTest {
assertEquals(originalCluster.maxResources(), serializedCluster.maxResources());
assertEquals(originalCluster.suggestedResources(), serializedCluster.suggestedResources());
assertEquals(originalCluster.targetResources(), serializedCluster.targetResources());
+ assertEquals(originalCluster.scalingEvents(), serializedCluster.scalingEvents());
}
}
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 4fae7cf0ab9..fb732c641b8 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
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
@@ -50,7 +51,6 @@ import static org.mockito.Mockito.when;
@RunWith(Parameterized.class)
public class InfraDeployerImplTest {
-
@Parameterized.Parameters(name = "application={0}")
public static Iterable<Object[]> parameters() {
return List.of(
@@ -136,15 +136,15 @@ public class InfraDeployerImplTest {
private void verifyActivated(String... hostnames) {
verify(duperModelInfraApi).infraApplicationActivated(
eq(application.getApplicationId()), eq(Stream.of(hostnames).map(HostName::from).collect(Collectors.toList())));
- ArgumentMatcher<ProvisionLock> lockMatcher = lock -> {
- assertEquals(application.getApplicationId(), lock.application());
+ ArgumentMatcher<ApplicationTransaction> transactionMatcher = t -> {
+ assertEquals(application.getApplicationId(), t.application());
return true;
};
ArgumentMatcher<Collection<HostSpec>> hostsMatcher = hostSpecs -> {
assertEquals(Set.of(hostnames), hostSpecs.stream().map(HostSpec::hostname).collect(Collectors.toSet()));
return true;
};
- verify(provisioner).activate(any(), argThat(hostsMatcher), argThat(lockMatcher));
+ verify(provisioner).activate(argThat(hostsMatcher), any(), argThat(transactionMatcher));
}
private Node addNode(int id, Node.State state, Optional<Version> wantedVespaVersion) {
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 2a43b9f44f6..5acfc6f69d4 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
@@ -2,8 +2,10 @@
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
+import com.yahoo.config.provision.ActivationContext;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
+import com.yahoo.config.provision.ApplicationTransaction;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
@@ -209,7 +211,7 @@ public class ProvisioningTester {
try (var lock = provisioner.lock(application)) {
NestedTransaction transaction = new NestedTransaction();
transaction.add(new CuratorTransaction(curator));
- provisioner.activate(transaction, hosts, lock);
+ provisioner.activate(hosts, new ActivationContext(0), new ApplicationTransaction(lock, transaction));
transaction.commit();
}
assertEquals(toHostNames(hosts), toHostNames(nodeRepository.getNodes(application, Node.State.active)));
@@ -239,7 +241,8 @@ public class ProvisioningTester {
public void deactivate(ApplicationId applicationId) {
try (var lock = nodeRepository.lock(applicationId)) {
NestedTransaction deactivateTransaction = new NestedTransaction();
- nodeRepository.deactivate(deactivateTransaction, new ProvisionLock(applicationId, lock));
+ nodeRepository.deactivate(new ApplicationTransaction(new ProvisionLock(applicationId, lock),
+ deactivateTransaction));
deactivateTransaction.commit();
}
}