summaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-04-25 08:34:09 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2024-04-25 08:34:09 +0200
commitec609a2ed6c4b7d466f28e042f9088a1aff0c56e (patch)
treeb34412f6e629d2224ecdffc025dc84e6bfacc57d /metrics-proxy
parent7ecc42bbc5d746f1e8c914ae18f348a825df1dab (diff)
Use Instant to represent time so unit is clearly defined.
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java14
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java10
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericNode.java12
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericService.java10
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java7
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusModel.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java7
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericApplicationModelTest.java7
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonModelTest.java5
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java2
18 files changed, 58 insertions, 39 deletions
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<MetricId, Number> metrics;
private final Map<DimensionId, String> dimensions;
private final Set<ConsumerId> consumers;
- private MetricsPacket(int statusCode, String statusMessage, long timestamp, ServiceId service,
+ private MetricsPacket(int statusCode, String statusMessage, Instant timestamp, ServiceId service,
Map<MetricId, Number> metrics, Map<DimensionId, String> dimensions, Set<ConsumerId> consumers ) {
this.statusCode = statusCode;
this.statusMessage = statusMessage;
@@ -48,7 +48,9 @@ public class MetricsPacket {
public Map<MetricId, Number> metrics() { return metrics; }
public Map<DimensionId, String> dimensions() { return dimensions; }
- public Set<ConsumerId> consumers() { return consumers;}
+ public Set<ConsumerId> 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<MetricId, Number> metrics = new LinkedHashMap<>();
private final Map<DimensionId, String> dimensions = new LinkedHashMap<>();
private Set<ConsumerId> 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<GenericMetrics> metrics;
- public GenericNode() { }
+ public GenericNode() {}
- GenericNode(Long timestamp, List<GenericMetrics> metrics) {
- this.timestamp = timestamp;
+ GenericNode(Instant timestamp, List<GenericMetrics> 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<GenericMetrics> metrics) {
+ GenericService(String name, Instant timestamp, StatusCode statusCode, String message, List<GenericMetrics> 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<MetricFamilySamples> {
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<MetricsPacket.Builder> 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<MODEL> 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());