diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-07-30 12:40:39 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-07-30 12:40:39 +0200 |
commit | aa43693517b3c165c4a03f38527596c5e1705b90 (patch) | |
tree | ee27801c0982f6e5bceea2f1048dc9c560470c42 /node-repository/src/test/java/com | |
parent | 3197221efc2bec4d764849332bccae9ce43ec934 (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/src/test/java/com')
-rw-r--r-- | node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java | 6 |
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); |