From f6d0dc1931ca881f63152270b9ad0f88743ce71d Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Thu, 20 Jun 2024 12:11:45 -0400 Subject: [PATCH] MM-58772 Change PerformanceReporter to use Date.now for timestamps (#27396) * MM-58772 Change PerformanceReporter to use Date.now for timestamps * Let timestamps be equal in test --- .../performance_telemetry/reporter.test.ts | 17 ++++++++++++----- .../src/utils/performance_telemetry/reporter.ts | 6 +++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/webapp/channels/src/utils/performance_telemetry/reporter.test.ts b/webapp/channels/src/utils/performance_telemetry/reporter.test.ts index ab84e2e96d..c4a1df1e5b 100644 --- a/webapp/channels/src/utils/performance_telemetry/reporter.test.ts +++ b/webapp/channels/src/utils/performance_telemetry/reporter.test.ts @@ -33,9 +33,15 @@ describe('PerformanceReporter', () => { const testMarkA = performance.mark('testMarkA'); const testMarkB = performance.mark('testMarkB'); + + const timeA = Date.now(); measureAndReport('testMeasureA', 'testMarkA', 'testMarkB'); + await waitForObservations(); + const testMarkC = performance.mark('testMarkC'); + + const timeBC = Date.now(); measureAndReport('testMeasureB', 'testMarkA', 'testMarkC'); measureAndReport('testMeasureC', 'testMarkB', 'testMarkC'); @@ -49,26 +55,27 @@ describe('PerformanceReporter', () => { expect(sendBeacon.mock.calls[0][0]).toEqual(siteUrl + '/api/v4/client_perf'); const report = JSON.parse(sendBeacon.mock.calls[0][1]); expect(report).toMatchObject({ - start: performance.timeOrigin + testMarkA.startTime, - end: performance.timeOrigin + testMarkB.startTime, histograms: [ { metric: 'testMeasureA', value: testMarkB.startTime - testMarkA.startTime, - timestamp: performance.timeOrigin + testMarkA.startTime, }, { metric: 'testMeasureB', value: testMarkC.startTime - testMarkA.startTime, - timestamp: performance.timeOrigin + testMarkA.startTime, }, { metric: 'testMeasureC', value: testMarkC.startTime - testMarkB.startTime, - timestamp: performance.timeOrigin + testMarkB.startTime, }, ], }); + expect(report.start).toEqual(report.histograms[0].timestamp); + expect(report.end).toEqual(report.histograms[2].timestamp); + expect(report.histograms[0].timestamp).toBeGreaterThanOrEqual(timeA); + expect(report.histograms[0].timestamp).toBeLessThanOrEqual(timeBC); + expect(report.histograms[1].timestamp).toBeGreaterThanOrEqual(timeBC); + expect(report.histograms[2].timestamp).toBeGreaterThanOrEqual(timeBC); reporter.disconnect(); }); diff --git a/webapp/channels/src/utils/performance_telemetry/reporter.ts b/webapp/channels/src/utils/performance_telemetry/reporter.ts index 6a003a5e86..21d2cde24d 100644 --- a/webapp/channels/src/utils/performance_telemetry/reporter.ts +++ b/webapp/channels/src/utils/performance_telemetry/reporter.ts @@ -126,7 +126,7 @@ export default class PerformanceReporter { this.histogramMeasures.push({ metric: Measure.PageLoad, value: entries[0].duration, - timestamp: performance.timeOrigin + entries[0].startTime, + timestamp: Date.now(), }); } @@ -162,7 +162,7 @@ export default class PerformanceReporter { this.histogramMeasures.push({ metric: entry.name, value: entry.duration, - timestamp: performance.timeOrigin + entry.startTime, + timestamp: Date.now(), }); } @@ -187,7 +187,7 @@ export default class PerformanceReporter { this.histogramMeasures.push({ metric: metric.name, value: metric.value, - timestamp: performance.timeOrigin + performance.now(), + timestamp: Date.now(), }); }