diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseDataCollector.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseDataCollector.java index 2fa39a1e4d9..6816db724cf 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseDataCollector.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseDataCollector.java @@ -37,6 +37,7 @@ import com.microsoft.applicationinsights.agent.internal.telemetry.TelemetryClient; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; +import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -247,8 +248,8 @@ private void addDependency(RemoteDependencyData telemetry, int itemCount) { if (counters == null) { return; } - counters.rddsAndDuations.addAndGet( - Counters.encodeCountAndDuration(itemCount, parseDurationToMillis(telemetry.getDuration()))); + long durationMillis = parseDurationToMillis(telemetry.getDuration()); + counters.rddsAndDuations.addAndGet(Counters.encodeCountAndDuration(itemCount, durationMillis)); Boolean success = telemetry.isSuccess(); if (success != null && !success) { // success should not be null counters.unsuccessfulRdds.incrementAndGet(); @@ -262,7 +263,7 @@ private void addDependency(RemoteDependencyData telemetry, int itemCount) { quickPulseDependencyDocument.setCommandName(telemetry.getData()); quickPulseDependencyDocument.setTarget(telemetry.getTarget()); quickPulseDependencyDocument.setSuccess(telemetry.isSuccess()); - quickPulseDependencyDocument.setDuration(telemetry.getDuration()); + quickPulseDependencyDocument.setDuration(Duration.ofMillis(durationMillis).toString()); quickPulseDependencyDocument.setResultCode(telemetry.getResultCode()); quickPulseDependencyDocument.setOperationName(telemetry.getId()); quickPulseDependencyDocument.setDependencyTypeName(telemetry.getType()); @@ -317,10 +318,9 @@ private void addRequest(RequestData requestTelemetry, int itemCount, String oper if (counters == null) { return; } - + long durationMillis = parseDurationToMillis(requestTelemetry.getDuration()); counters.requestsAndDurations.addAndGet( - Counters.encodeCountAndDuration( - itemCount, parseDurationToMillis(requestTelemetry.getDuration()))); + Counters.encodeCountAndDuration(itemCount, durationMillis)); if (!requestTelemetry.isSuccess()) { counters.unsuccessfulRequests.incrementAndGet(); } @@ -330,7 +330,7 @@ private void addRequest(RequestData requestTelemetry, int itemCount, String oper quickPulseRequestDocument.setOperationId(requestTelemetry.getId()); quickPulseRequestDocument.setVersion("1.0"); quickPulseRequestDocument.setSuccess(requestTelemetry.isSuccess()); - quickPulseRequestDocument.setDuration(requestTelemetry.getDuration()); + quickPulseRequestDocument.setDuration(Duration.ofMillis(durationMillis).toString()); quickPulseRequestDocument.setResponseCode(requestTelemetry.getResponseCode()); quickPulseRequestDocument.setOperationName(operationName); quickPulseRequestDocument.setName(requestTelemetry.getName()); diff --git a/agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseIntegrationTests.java b/agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseIntegrationTests.java index fe23dce7c34..3411e68e5b8 100644 --- a/agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseIntegrationTests.java +++ b/agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/quickpulse/QuickPulseIntegrationTests.java @@ -95,7 +95,7 @@ public void testPostRequest() throws InterruptedException { String expectedPingRequestBody = "\\{\"Documents\":null,\"InstrumentationKey\":null,\"Metrics\":null,\"InvariantVersion\":1,\"Timestamp\":\"\\\\/Date\\(\\d+\\)\\\\/\",\"Version\":\"\\(unknown\\)\",\"StreamId\":\"qpid123\",\"MachineName\":\"machine1\",\"Instance\":\"instance1\",\"RoleName\":null\\}"; String expectedPostRequestBody = - "\\[\\{\"Documents\":\\[\\{\"__type\":\"RequestTelemetryDocument\",\"DocumentType\":\"Request\",\"Version\":\"1.0\",\"OperationId\":null,\"Properties\":\\{\"customProperty\":\"customValue\"\\},\"Name\":\"request-test\",\"Success\":true,\"Duration\":\"\\d+:\\d+:\\d+\\.\\d+\",\"ResponseCode\":\"200\",\"OperationName\":null,\"Url\":\"foo\"\\},\\{\"__type\":\"DependencyTelemetryDocument\",\"DocumentType\":\"RemoteDependency\",\"Version\":\"1.0\",\"OperationId\":null,\"Properties\":\\{\"customProperty\":\"customValue\"\\},\"Name\":\"dep-test\",\"Target\":null,\"Success\":true,\"Duration\":\"\\d+:\\d+:\\d+.\\d+\",\"ResultCode\":null,\"CommandName\":\"dep-test-cmd\",\"DependencyTypeName\":null,\"OperationName\":null\\},\\{\"__type\":\"ExceptionTelemetryDocument\",\"DocumentType\":\"Exception\",\"Version\":\"1.0\",\"OperationId\":null,\"Properties\":null,\"Exception\":\"\",\"ExceptionMessage\":\"test\",\"ExceptionType\":\"java.lang.Exception\"\\}\\],\"InstrumentationKey\":\"" + "\\[\\{\"Documents\":\\[\\{\"__type\":\"RequestTelemetryDocument\",\"DocumentType\":\"Request\",\"Version\":\"1.0\",\"OperationId\":null,\"Properties\":\\{\"customProperty\":\"customValue\"\\},\"Name\":\"request-test\",\"Success\":true,\"Duration\":\"PT.*S\",\"ResponseCode\":\"200\",\"OperationName\":null,\"Url\":\"foo\"\\},\\{\"__type\":\"DependencyTelemetryDocument\",\"DocumentType\":\"RemoteDependency\",\"Version\":\"1.0\",\"OperationId\":null,\"Properties\":\\{\"customProperty\":\"customValue\"\\},\"Name\":\"dep-test\",\"Target\":null,\"Success\":true,\"Duration\":\"PT.*S\",\"ResultCode\":null,\"CommandName\":\"dep-test-cmd\",\"DependencyTypeName\":null,\"OperationName\":null\\},\\{\"__type\":\"ExceptionTelemetryDocument\",\"DocumentType\":\"Exception\",\"Version\":\"1.0\",\"OperationId\":null,\"Properties\":null,\"Exception\":\"\",\"ExceptionMessage\":\"test\",\"ExceptionType\":\"java.lang.Exception\"\\}\\],\"InstrumentationKey\":\"" + instrumentationKey + "\",\"Metrics\":\\[\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Requests\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Request Duration\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Requests Failed\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Requests Succeeded\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Dependency Calls\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Dependency Call Duration\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Dependency Calls Failed\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Dependency Calls Succeeded\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\ApplicationInsights\\\\\\\\Exceptions\\\\\\/Sec\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\Memory\\\\\\\\Committed Bytes\",\"Value\":\\d+,\"Weight\":\\d+\\},\\{\"Name\":\"\\\\\\\\Processor\\(_Total\\)\\\\\\\\% Processor Time\",\"Value\":-?\\d+,\"Weight\":\\d+\\}\\],\"InvariantVersion\":1,\"Timestamp\":\"\\\\\\/Date\\(\\d+\\)\\\\\\/\",\"Version\":\"[^\"]*\",\"StreamId\":null,\"MachineName\":\"machine1\",\"Instance\":\"instance1\",\"RoleName\":null\\}\\]"; QuickPulsePingSender pingSender =