diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManager.java index 056fd0391..5e1bba00c 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManager.java @@ -55,8 +55,9 @@ public class CallQualitySurveyManager { .setResponseId(UUID.randomUUID().toString()) .setSubmissionTimestamp(clock.millis() * 1000) .setUserSatisfied(submitCallQualitySurveyRequest.getUserSatisfied()) - .setStartTimestamp(submitCallQualitySurveyRequest.getStartTimestamp()) - .setEndTimestamp(submitCallQualitySurveyRequest.getEndTimestamp()) + // We receive timestamps as milliseconds since the epoch, but the backing data store wants microseconds + .setStartTimestamp(submitCallQualitySurveyRequest.getStartTimestamp() * 1_000) + .setEndTimestamp(submitCallQualitySurveyRequest.getEndTimestamp() * 1_000) .setCallType(submitCallQualitySurveyRequest.getCallType()) .setSuccess(submitCallQualitySurveyRequest.getSuccess()) .setCallEndReason(submitCallQualitySurveyRequest.getCallEndReason()); diff --git a/service/src/main/proto/org/signal/chat/call_quality.proto b/service/src/main/proto/org/signal/chat/call_quality.proto index dabcb9fab..e8d3736e8 100644 --- a/service/src/main/proto/org/signal/chat/call_quality.proto +++ b/service/src/main/proto/org/signal/chat/call_quality.proto @@ -36,12 +36,10 @@ message SubmitCallQualitySurveyRequest { // to submit debug logs optional string debug_log_url = 4; - // The time at which the call started in microseconds since the epoch (see - // https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp_type) + // The time at which the call started in milliseconds since the epoch int64 start_timestamp = 5; - // The time at which the call ended in microseconds since the epoch (see - // https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp_type) + // The time at which the call ended in milliseconds since the epoch int64 end_timestamp = 6; // The type of call; note that direct voice calls can become video calls and diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManagerTest.java index 67328781c..858aff442 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManagerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/CallQualitySurveyManagerTest.java @@ -122,8 +122,8 @@ class CallQualitySurveyManagerTest { assertEquals(List.of("too_hot", "too_cold"), callQualitySurveyResponsePubSubMessage.getCallQualityIssuesList()); assertEquals("But this one is just right", callQualitySurveyResponsePubSubMessage.getAdditionalIssuesDescription()); assertEquals("https://example.com/", callQualitySurveyResponsePubSubMessage.getDebugLogUrl()); - assertEquals(123456789, callQualitySurveyResponsePubSubMessage.getStartTimestamp()); - assertEquals(987654321, callQualitySurveyResponsePubSubMessage.getEndTimestamp()); + assertEquals(123456789L * 1_000, callQualitySurveyResponsePubSubMessage.getStartTimestamp()); + assertEquals(987654321L * 1_000, callQualitySurveyResponsePubSubMessage.getEndTimestamp()); assertEquals("direct_video", callQualitySurveyResponsePubSubMessage.getCallType()); assertTrue(callQualitySurveyResponsePubSubMessage.getSuccess()); assertEquals("caller_hang_up", callQualitySurveyResponsePubSubMessage.getCallEndReason());