From ec609a2ed6c4b7d466f28e042f9088a1aff0c56e Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 25 Apr 2024 08:34:09 +0200 Subject: Use Instant to represent time so unit is clearly defined. --- .../java/ai/vespa/metricsproxy/core/MetricsManager.java | 2 +- .../main/java/ai/vespa/metricsproxy/core/VespaMetrics.java | 4 ++-- .../ai/vespa/metricsproxy/metric/model/MetricsPacket.java | 14 ++++++++------ .../metricsproxy/metric/model/json/GenericJsonUtil.java | 10 +++++----- .../vespa/metricsproxy/metric/model/json/GenericNode.java | 12 ++++++++---- .../metricsproxy/metric/model/json/GenericService.java | 10 ++++++++-- .../metricsproxy/metric/model/json/YamasJsonUtil.java | 7 ++++--- .../metric/model/prometheus/PrometheusModel.java | 2 +- .../metric/model/prometheus/PrometheusUtil.java | 2 +- .../ai/vespa/metricsproxy/node/NodeMetricGatherer.java | 3 ++- .../ai/vespa/metricsproxy/core/MetricsManagerTest.java | 2 +- .../ai/vespa/metricsproxy/http/HttpHandlerTestBase.java | 2 +- .../metricsproxy/http/metrics/MetricsHandlerTestBase.java | 7 ++++--- .../vespa/metricsproxy/metric/model/MetricsPacketTest.java | 3 ++- .../metric/model/json/GenericApplicationModelTest.java | 7 ++++--- .../metric/model/json/GenericJsonModelTest.java | 5 +++-- .../metricsproxy/metric/model/json/YamasJsonUtilTest.java | 3 ++- .../ai/vespa/metricsproxy/node/NodeMetricGathererTest.java | 2 +- 18 files changed, 58 insertions(+), 39 deletions(-) (limited to 'metrics-proxy') diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java index 60e85f3f9e4..1bc00c448c8 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java @@ -152,7 +152,7 @@ public class MetricsManager { static MetricsPacket.Builder adjustTimestamp(MetricsPacket.Builder builder, Instant startTime) { Duration age = Duration.between(startTime, builder.getTimestamp()); if (age.abs().minusMinutes(1).isNegative()) - builder.timestamp(startTime.getEpochSecond()); + builder.timestamp(startTime); return builder; } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java index 4dabc7a66d8..2edb67b73ab 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java @@ -104,7 +104,7 @@ public class VespaMetrics { private MetricsPacket.Builder getHealth(VespaService service) { HealthMetric health = service.getHealth(); return new MetricsPacket.Builder(service.getMonitoringName()) - .timestamp(System.currentTimeMillis() / 1000) + .timestamp(Instant.now()) .statusCode(health.getStatus().ordinal()) // TODO: MetricsPacket should use StatusCode instead of int .statusMessage(health.getMessage()) .putDimensions(service.getDimensions()) @@ -228,7 +228,7 @@ public class VespaMetrics { } private static void setMetaInfo(MetricsPacket.Builder builder, Instant timestamp) { - builder.timestamp(timestamp.getEpochSecond()) + builder.timestamp(timestamp) .statusCode(0) .statusMessage("Data collected successfully"); } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java index fb08d78a975..d667e783b45 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java @@ -29,13 +29,13 @@ public class MetricsPacket { public final int statusCode; public final String statusMessage; - public final long timestamp; public final ServiceId service; + private final Instant timestamp; private final Map metrics; private final Map dimensions; private final Set consumers; - private MetricsPacket(int statusCode, String statusMessage, long timestamp, ServiceId service, + private MetricsPacket(int statusCode, String statusMessage, Instant timestamp, ServiceId service, Map metrics, Map dimensions, Set consumers ) { this.statusCode = statusCode; this.statusMessage = statusMessage; @@ -48,7 +48,9 @@ public class MetricsPacket { public Map metrics() { return metrics; } public Map dimensions() { return dimensions; } - public Set consumers() { return consumers;} + public Set consumers() { return consumers; } + public Instant timestamp() { return timestamp; } + public ServiceId service() { return service; } @Override public String toString() { @@ -76,7 +78,7 @@ public class MetricsPacket { private ServiceId service; private int statusCode = 0; private String statusMessage = ""; - private long timestamp = 0L; + private Instant timestamp = Instant.EPOCH; private Map metrics = new LinkedHashMap<>(); private final Map dimensions = new LinkedHashMap<>(); private Set consumers = Set.of(); @@ -102,7 +104,7 @@ public class MetricsPacket { return this; } - public Builder timestamp(Long timestamp) { + public Builder timestamp(Instant timestamp) { if (timestamp != null) this.timestamp = timestamp; return this; } @@ -194,7 +196,7 @@ public class MetricsPacket { return ! metrics.isEmpty(); } - public Instant getTimestamp() { return Instant.ofEpochSecond(timestamp); } + public Instant getTimestamp() { return timestamp; } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java index 3d2bf7aaecf..2510426d7df 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java @@ -66,13 +66,13 @@ public class GenericJsonUtil { .toList(); var genericService = packets.stream().findFirst() .map(firstPacket -> new GenericService(serviceId.id, - firstPacket.timestamp, + firstPacket.timestamp(), StatusCode.values()[firstPacket.statusCode], firstPacket.statusMessage, genericMetricsList)) .get(); if (VESPA_NODE_SERVICE_ID.equals(serviceId)) { - jsonModel.node = new GenericNode(genericService.timestamp, genericService.metrics); + jsonModel.node = new GenericNode(genericService.timeAsInstant(), genericService.metrics); } else { genericServices.add(genericService); @@ -107,13 +107,13 @@ public class GenericJsonUtil { if (node.metrics == null || node.metrics.isEmpty()) { return List.of(new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) .statusCode(StatusCode.UP.ordinal()) - .timestamp(node.timestamp)); + .timestamp(node.timeAsInstant())); } for (var genericMetrics : node.metrics) { var packet = new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) .statusCode(StatusCode.UP.ordinal()) - .timestamp(node.timestamp); + .timestamp(node.timeAsInstant()); addMetrics(genericMetrics, packet); packets.add(packet); } @@ -138,7 +138,7 @@ public class GenericJsonUtil { return new MetricsPacket.Builder(ServiceId.toServiceId(service.name)) .statusCode(StatusCode.fromString(service.status.code).ordinal()) .statusMessage(service.status.description) - .timestamp(service.timestamp); + .timestamp(service.timeAsInstant()); } private static void addMetrics(GenericMetrics genericMetrics, MetricsPacket.Builder packet) { diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericNode.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericNode.java index d0a0b04b629..6c319ee0223 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericNode.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericNode.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.time.Instant; import java.util.List; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_ABSENT; @@ -19,15 +20,18 @@ import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_ABSENT; public class GenericNode { @JsonProperty("timestamp") - public Long timestamp; + public Long timestamp = Instant.EPOCH.getEpochSecond(); @JsonProperty("metrics") public List metrics; - public GenericNode() { } + public GenericNode() {} - GenericNode(Long timestamp, List metrics) { - this.timestamp = timestamp; + GenericNode(Instant timestamp, List metrics) { + this.timestamp = timestamp.getEpochSecond(); this.metrics = metrics; } + public Instant timeAsInstant() { + return Instant.ofEpochSecond(timestamp); + } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericService.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericService.java index 7e20be22793..b4fdd17c681 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericService.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericService.java @@ -6,7 +6,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; +import java.time.Instant; import java.util.List; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_ABSENT; @@ -35,13 +37,17 @@ public class GenericService { public GenericService() { } // TODO: take StatusCode instead of int - GenericService(String name, Long timestamp, StatusCode statusCode, String message, List metrics) { + GenericService(String name, Instant timestamp, StatusCode statusCode, String message, List metrics) { this.name = name; - this.timestamp = timestamp; + this.timestamp = timestamp.getEpochSecond(); status = new Status(statusCode, message); this.metrics = metrics; } + public Instant timeAsInstant() { + return Instant.ofEpochSecond(timestamp); + } + @JsonInclude(NON_EMPTY) @JsonPropertyOrder({ "code", "description" }) diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java index 649a4978ed9..2683917bbdc 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java @@ -13,6 +13,7 @@ import com.fasterxml.jackson.core.util.MinimalPrettyPrinter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -42,7 +43,7 @@ public class YamasJsonUtil { return new MetricsPacket.Builder(ServiceId.toServiceId(jsonModel.application)) .statusCode(jsonModel.status_code) .statusMessage(jsonModel.status_msg) - .timestamp(jsonModel.timestamp) + .timestamp(Instant.ofEpochSecond(jsonModel.timestamp)) .putMetrics(jsonModel.getMetricsList()) .putDimensions(jsonModel.getDimensionsById()) .addConsumers(jsonModel.getYamasConsumers()); @@ -126,8 +127,8 @@ public class YamasJsonUtil { if (addStatus) { generator.writeNumberField("status_code", metric.statusCode); } - if (metric.timestamp != 0) { - generator.writeNumberField("timestamp", metric.timestamp); + if ( ! Instant.EPOCH.equals(metric.timestamp())) { + generator.writeNumberField("timestamp", metric.timestamp().getEpochSecond()); } generator.writeStringField("application", metric.service.id); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusModel.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusModel.java index 364af572d48..b4d26069b6f 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusModel.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusModel.java @@ -64,7 +64,7 @@ public class PrometheusModel implements Enumeration { for (var packet : packets) { Number metric = packet.metrics().get(metricId); if (metric != null) { - sampleList.add(createSample(serviceId, metricId, metric, 1000 * packet.timestamp, packet.dimensions())); + sampleList.add(createSample(serviceId, metricId, metric, packet.timestamp().toEpochMilli(), packet.dimensions())); } } })); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java index 47b97fa0902..02078ef7e90 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java @@ -43,7 +43,7 @@ public class PrometheusUtil { // MetricsPacket status 0 means OK, but it's the opposite in Prometheus. var statusMetricValue = (firstPacket.statusCode == 0) ? 1 : 0; var sampleList = List.of(new Collector.MetricFamilySamples.Sample(statusMetricName, List.of(), List.of(), - statusMetricValue, firstPacket.timestamp * 1000)); + statusMetricValue, firstPacket.timestamp().toEpochMilli())); statusMetrics.add(new Collector.MetricFamilySamples(statusMetricName, Collector.Type.UNKNOWN, "status of service", sampleList)); } })); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java index ded2af0542f..b6c78197cda 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java @@ -15,6 +15,7 @@ import com.yahoo.component.annotation.Inject; import com.yahoo.container.jdisc.state.FileWrapper; import com.yahoo.container.jdisc.state.HostLifeGatherer; +import java.time.Instant; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -56,7 +57,7 @@ public class NodeMetricGatherer { protected static void addObjectToBuilders(List builders, JsonNode object) { MetricsPacket.Builder builder = new MetricsPacket.Builder(ServiceId.toServiceId(object.get("application").textValue())); - builder.timestamp(object.get("timestamp").longValue()); + builder.timestamp(Instant.ofEpochSecond(object.get("timestamp").longValue())); if (object.has("metrics")) { JsonNode metrics = object.get("metrics"); Iterator keys = metrics.fieldNames(); diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java index c63e0d7a0f0..47c699c8c2c 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java @@ -226,7 +226,7 @@ public class MetricsManagerTest { private Instant getAdjustedTimestamp(Instant startTime, Instant metricTime) { MetricsPacket.Builder builder = new MetricsPacket.Builder(toServiceId("foo")) - .timestamp(metricTime.getEpochSecond()); + .timestamp(metricTime); return MetricsManager.adjustTimestamp(builder, startTime).getTimestamp(); } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java index dbc0605d0a9..8ebcabe993d 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java @@ -55,7 +55,7 @@ public class HttpHandlerTestBase { MetricsManager metricsManager = TestUtil.createMetricsManager(vespaServices, getMetricsConsumers(), getApplicationDimensions(), getNodeDimensions()); metricsManager.setExtraMetrics(List.of( new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) - .timestamp(Instant.now().getEpochSecond()) + .timestamp(Instant.now()) .putMetrics(List.of(new Metric(MetricId.toMetricId(CPU_METRIC), 12.345))))); return metricsManager; } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java index 8e80dbddf9e..70cc8d1ab78 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java @@ -12,6 +12,7 @@ import org.junit.Ignore; import org.junit.Test; import java.io.IOException; +import java.time.Instant; import java.util.Locale; import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.INTERNAL_SERVICE_ID; @@ -172,10 +173,10 @@ public abstract class MetricsHandlerTestBase extends HttpHandlerTestBase public void all_timestamps_are_equal_and_non_zero() { GenericJsonModel jsonModel = getResponseAsGenericJsonModel(DEFAULT_CONSUMER); - Long nodeTimestamp = jsonModel.node.timestamp; - assertNotEquals(0L, (long) nodeTimestamp); + Instant nodeTimestamp = jsonModel.node.timeAsInstant(); + assertNotEquals(Instant.EPOCH, nodeTimestamp); for (var service : jsonModel.services) - assertEquals(nodeTimestamp, service.timestamp); + assertEquals(nodeTimestamp, service.timeAsInstant()); } @Test diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java index 7b490814f60..55d19e06c1d 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java @@ -4,6 +4,7 @@ package ai.vespa.metricsproxy.metric.model; import ai.vespa.metricsproxy.metric.Metric; import org.junit.Test; +import java.time.Instant; import java.util.List; import java.util.Map; import java.util.Set; @@ -27,7 +28,7 @@ public class MetricsPacketTest { MetricsPacket packet = new MetricsPacket.Builder(null) .statusCode(0) .statusMessage("") - .timestamp(0L) + .timestamp(Instant.EPOCH) .build(); fail("Expected exception due to null service."); } catch (Exception e) { diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericApplicationModelTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericApplicationModelTest.java index 54736851b3f..2cd024a6147 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericApplicationModelTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericApplicationModelTest.java @@ -7,6 +7,7 @@ import ai.vespa.metricsproxy.metric.model.StatusCode; import org.junit.Test; import java.io.IOException; +import java.time.Instant; import java.util.List; import java.util.Map; @@ -51,13 +52,13 @@ public class GenericApplicationModelTest { @Test public void metrics_packets_can_be_converted_to_generic_json_model() throws Exception { var nodePacket = new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) - .timestamp(123456L) + .timestamp(Instant.ofEpochSecond(123456L)) .putMetric(toMetricId("node-metric"), 1.234) .putDimension(toDimensionId("node-dim"), "node-dim-value") .build(); var servicePacket = new MetricsPacket.Builder(toServiceId("my-service")) - .timestamp(123456L) + .timestamp(Instant.ofEpochSecond(123456L)) .statusCode(0) .putMetric(toMetricId("service-metric"), 1234) .putDimension(toDimensionId("service-dim"), "service-dim-value") @@ -94,7 +95,7 @@ public class GenericApplicationModelTest { private MetricsPacket createMetricsPacket(String service, Number metricsValue, boolean isNode) { return new MetricsPacket.Builder(isNode ? VESPA_NODE_SERVICE_ID : toServiceId(service)) - .timestamp(1234L) + .timestamp(Instant.ofEpochSecond(1234L)) .statusCode(0) .putMetric(toMetricId(service + "-metric"), metricsValue) .putDimension(toDimensionId(service + "-dim"), isNode ? "node-dim-value" : "service-dim-value") diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonModelTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonModelTest.java index 9eb1ed8cd5a..40ffbba84f0 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonModelTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonModelTest.java @@ -6,6 +6,7 @@ import ai.vespa.metricsproxy.metric.model.StatusCode; import org.junit.Test; import java.io.IOException; +import java.time.Instant; import java.util.List; import static ai.vespa.metricsproxy.TestUtil.getFileContents; @@ -79,13 +80,13 @@ public class GenericJsonModelTest { @Test public void metrics_packets_can_be_converted_to_generic_json_model() throws Exception { var nodePacket = new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) - .timestamp(123456L) + .timestamp(Instant.ofEpochSecond(123456L)) .putMetric(toMetricId("node-metric"), 1.234) .putDimension(toDimensionId("node-dim"), "node-dim-value") .build(); var servicePacket = new MetricsPacket.Builder(toServiceId("my-service")) - .timestamp(123456L) + .timestamp(Instant.ofEpochSecond(123456L)) .statusCode(0) .putMetric(toMetricId("service-metric"), 1234) .putDimension(toDimensionId("service-dim"), "service-dim-value") diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java index aa85277b3b7..7f82092e9e4 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import org.junit.Test; import java.io.IOException; +import java.time.Instant; import java.util.List; import java.util.Set; @@ -43,7 +44,7 @@ public class YamasJsonUtilTest { @Test public void timestamp_0_in_packet_is_translated_to_null_in_json_model() throws IOException { - MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo")).timestamp(0L).build(); + MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo")).timestamp(Instant.EPOCH).build(); JsonNode json = metrics(packet, true); assertFalse(json.has("timestamp")); } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java index 20164b91a55..8b022b8753d 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java @@ -28,7 +28,7 @@ public class NodeMetricGathererTest { MetricsPacket packet = builders.remove(0).build(); assertEquals("host_life", packet.service.id); - assertEquals(123, packet.timestamp); + assertEquals(123, packet.timestamp().getEpochSecond()); assertEquals(12L, packet.metrics().get(MetricId.toMetricId("uptime"))); assertEquals(1L, packet.metrics().get(MetricId.toMetricId("alive"))); assertEquals(Set.of(ConsumerId.toConsumerId("Vespa")), packet.consumers()); -- cgit v1.2.3