aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2019-12-13 11:26:33 +0100
committerGitHub <noreply@github.com>2019-12-13 11:26:33 +0100
commit49d070d9b6ff69711ab8f669f5d12548a50f0d35 (patch)
tree1608920ed5cb51a1a78a7483a57440f8dc1f240b
parentb0098c4d582e071dae1957d38ce4dc2b915e5184 (diff)
parentfd72be5dde13ba093fdcb71fde2997a861f9b26b (diff)
Merge pull request #11560 from vespa-engine/jvenstad/deplorch-cleanup-1
Jvenstad/deplorch cleanup 1
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java13
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java4
-rw-r--r--tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Metric.java4
-rw-r--r--tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Statistic.java7
6 files changed, 24 insertions, 12 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java
index 4ab485a4004..bc6fd093e2f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java
@@ -157,8 +157,10 @@ public class VespaVersion implements Comparable<VespaVersion> {
if (!target.equalOrHigherThan(normal)) return true; // Confidence can always change to < normal
var hourOfDay = instant.atZone(ZoneOffset.UTC).getHour();
- // Confidence can only be raised between 05:00:00 and 11:59:59 UTC
- return hourOfDay >= 5 && hourOfDay <= 11;
+ var dayOfWeek = instant.atZone(ZoneOffset.UTC).getDayOfWeek();
+ // Confidence can only be raised between 05:00:00 and 11:59:59 UTC, and not during weekends or Friday.
+ return hourOfDay >= 5 && hourOfDay <= 11
+ && dayOfWeek.getValue() < 5;
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
index af58f8e825e..038a2afb306 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
@@ -26,10 +26,13 @@ import com.yahoo.vespa.hosted.controller.maintenance.OutstandingChangeDeployer;
import com.yahoo.vespa.hosted.controller.maintenance.ReadyJobsTrigger;
import com.yahoo.vespa.hosted.controller.maintenance.Upgrader;
+import java.time.DayOfWeek;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.temporal.TemporalAdjusters;
import java.util.Collections;
import java.util.logging.Logger;
@@ -116,11 +119,11 @@ public class DeploymentTester {
return nameServiceDispatcher;
}
- public DeploymentTester atHourOfDay(int hour) {
- var dateTime = tester.clock().instant().atZone(ZoneOffset.UTC);
- return at(LocalDateTime.of(dateTime.getYear(), dateTime.getMonth(), dateTime.getDayOfMonth(), hour,
- dateTime.getMinute(), dateTime.getSecond())
- .toInstant(ZoneOffset.UTC));
+ public DeploymentTester atMondayMorning() {
+ return at(tester.clock().instant().atZone(ZoneOffset.UTC)
+ .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
+ .withHour(5)
+ .toInstant());
}
public DeploymentTester at(Instant instant) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
index cfd4610c7b2..c4a3a34a4f6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
@@ -35,7 +35,7 @@ import static org.junit.Assert.assertTrue;
*/
public class UpgraderTest {
- private final DeploymentTester tester = new DeploymentTester().atHourOfDay(5);
+ private final DeploymentTester tester = new DeploymentTester().atMondayMorning();
@Test
public void testUpgrading() {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
index ae81b83ccf0..eb23ccee326 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
@@ -177,7 +177,7 @@ public class VersionStatusTest {
@Test
public void testVersionConfidence() {
- DeploymentTester tester = new DeploymentTester().atHourOfDay(5);
+ DeploymentTester tester = new DeploymentTester().atMondayMorning();
Version version0 = new Version("6.2");
tester.controllerTester().upgradeSystem(version0);
tester.upgrader().maintain();
@@ -420,7 +420,7 @@ public class VersionStatusTest {
@Test
public void testConfidenceChangeRespectsTimeWindow() {
- DeploymentTester tester = new DeploymentTester().atHourOfDay(5);
+ DeploymentTester tester = new DeploymentTester().atMondayMorning();
// Canaries and normal application deploys on initial version
Version version0 = Version.fromString("7.1");
tester.controllerTester().upgradeSystem(version0);
diff --git a/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Metric.java b/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Metric.java
index cb3c8e77a9a..cc9d5d82b2c 100644
--- a/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Metric.java
+++ b/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Metric.java
@@ -7,6 +7,7 @@ import java.util.Set;
import java.util.StringJoiner;
import static java.util.Map.copyOf;
+import static java.util.stream.Collectors.reducing;
import static java.util.stream.Collectors.toUnmodifiableMap;
/**
@@ -58,7 +59,8 @@ public class Metric {
/** Returns a collapsed version of this, with all statistics aggregated. This does not preserve last, 95 and 99 percentile values. */
public Metric collapse() {
- return collapse(statistics.keySet().iterator().next().keySet());
+ Map<String, ?> firstStatistic = statistics.keySet().iterator().next();
+ return firstStatistic == null ? this : collapse(firstStatistic.keySet());
}
/** If this Metric contains a single point, returns the Statistic of that point; otherwise, throws an exception. */
diff --git a/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Statistic.java b/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Statistic.java
index fc52900bdac..f1cb89641b3 100644
--- a/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Statistic.java
+++ b/tenant-cd/src/main/java/ai/vespa/hosted/cd/metric/Statistic.java
@@ -1,6 +1,7 @@
package ai.vespa.hosted.cd.metric;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.StringJoiner;
@@ -22,6 +23,10 @@ public class Statistic {
}
public static Statistic of(Map<Type, Double> data) {
+ for (Type type : List.of(Type.count, Type.rate, Type.average))
+ if ( ! data.containsKey(type))
+ throw new IllegalArgumentException("Required data type '" + type + "' not present in '" + data + "'");
+
return new Statistic(copyOf(data));
}
@@ -40,7 +45,7 @@ public class Statistic {
Statistic mergedWith(Statistic other) {
if (data.keySet().equals(other.data.keySet()))
- throw new IllegalArgumentException("Incompatible key sets '" + data.keySet() + "' and '" + other.data.keySet() + "'.");
+ throw new IllegalArgumentException("Unequal key sets '" + data.keySet() + "' and '" + other.data.keySet() + "'.");
Map<Type, Double> merged = new HashMap<>();
double n1 = get(Type.count), n2 = other.get(Type.count);