aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-07-30 12:40:39 +0200
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-07-30 12:40:39 +0200
commitaa43693517b3c165c4a03f38527596c5e1705b90 (patch)
treeee27801c0982f6e5bceea2f1048dc9c560470c42 /node-repository
parent3197221efc2bec4d764849332bccae9ce43ec934 (diff)
Fix flaky NodeMetricsDbTest
ManualClock is initialized internally to Instant.now(). If this instant has a zero subsecond part db.getWindow(clock.instant().minus(Duration.ofHours(30)), Resource.cpu, List.of("host0")).measurementCount() returns 30, while otherwise returns 29. It's hard to say what is correct when falling exactly on this boundary, so this PR avoids the whole problem by ensuring the boundary is not hit (by adding an arbitrary 1 minute).
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java
index af87c008260..bb293a76d09 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java
@@ -5,6 +5,7 @@ import com.yahoo.test.ManualClock;
import org.junit.Test;
import java.time.Duration;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
@@ -14,7 +15,7 @@ public class NodeMetricsDbTest {
@Test
public void testNodeMetricsDb() {
- ManualClock clock = new ManualClock();
+ ManualClock clock = new ManualClock(Instant.ofEpochSecond(1596102538L));
NodeMetricsDb db = new NodeMetricsDb();
List<NodeMetrics.MetricValue> values = new ArrayList<>();
for (int i = 0; i < 40; i++) {
@@ -23,6 +24,9 @@ public class NodeMetricsDbTest {
}
db.add(values);
+ // Avoid off-by-one bug when the below windows starts exactly on one of the above getEpochSecond() timestamps.
+ clock.advance(Duration.ofMinutes(1));
+
assertEquals(29, db.getWindow(clock.instant().minus(Duration.ofHours(30)), Resource.cpu, List.of("host0")).measurementCount());
assertEquals( 0, db.getWindow(clock.instant().minus(Duration.ofHours(30)), Resource.memory, List.of("host0")).measurementCount());
db.gc(clock);