From e83ca93bfceceaec23c3b0a15b05b01c0f614e48 Mon Sep 17 00:00:00 2001 From: Matt Drees Date: Mon, 13 Nov 2023 10:18:54 -0700 Subject: [PATCH 1/3] [EP-2470] Enable DD APM Tracing This configures the DD RUM component to send tracing headers in all requests sent to the api url (cortex gateway). This should let us correlate front-end behavior with back-end traces/errors/logs. I am not %100 sure that envServiceProvider can have read() called like this; but I see other envService methods being called on the provider, so I'm guessing it works. I don't have a quick way to test this locally. --- src/common/datadog.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/datadog.config.js b/src/common/datadog.config.js index 0350a4098..03f77deb6 100644 --- a/src/common/datadog.config.js +++ b/src/common/datadog.config.js @@ -10,6 +10,7 @@ const dataDogConfig = /* @ngInject */ function (envServiceProvider) { site: 'datadoghq.com', service: 'give-web', env: envServiceProvider.get(), + allowedTracingUrls: [envServiceProvider.read('apiUrl')], version: process.env.GITHUB_SHA, sessionSampleRate: envServiceProvider.is('staging') ? 100 : 10, sessionReplaySampleRate: envServiceProvider.is('staging') ? 100 : 1, From 5a7b393ccab47299f9e4af60ebe60344908c6cf9 Mon Sep 17 00:00:00 2001 From: Matt Drees Date: Mon, 13 Nov 2023 10:28:42 -0700 Subject: [PATCH 2/3] Fix some incorrect spec verbiage Probably left over copy/paste from the rollbar specs. --- src/common/datadog.config.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/datadog.config.spec.js b/src/common/datadog.config.spec.js index 40df2ba88..81907e109 100644 --- a/src/common/datadog.config.spec.js +++ b/src/common/datadog.config.spec.js @@ -4,7 +4,7 @@ import * as module from './datadog.config' describe('dataDogConfig', () => { process.env.DATADOG_RUM_CLIENT_TOKEN = '1234' - describe('pipe $log to Rollbar', () => { + describe('configure Datadog RUM', () => { beforeEach(() => { // Use rollbar config function somewhere angular.module('testDataDogConfig', ['environment']) @@ -14,7 +14,7 @@ describe('dataDogConfig', () => { inject(() => {}) }) - it('should send $log.log to rollbar and call through to $log', () => { + it('should call init() and start session reply recording', () => { expect(window.datadogRum).not.toEqual(undefined) expect(window.datadogRum.init).toEqual(expect.any(Function)) expect(window.datadogRum.startSessionReplayRecording).toEqual(expect.any(Function)) From 3b5f1f8c6cb5fa0617c4f9eac308166a2e17d951 Mon Sep 17 00:00:00 2001 From: Daniel Bisgrove Date: Tue, 14 Nov 2023 08:32:52 -0500 Subject: [PATCH 3/3] Fixing datadog tests --- src/common/app.config.js | 3 ++- src/common/datadog-shouldNotLoad.config.spec.js | 12 ++++++++---- src/common/datadog.config.spec.js | 16 ++++++++++------ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/common/app.config.js b/src/common/app.config.js index 5a94a42ba..8542fea72 100644 --- a/src/common/app.config.js +++ b/src/common/app.config.js @@ -5,7 +5,8 @@ import 'angular-translate' import rollbarConfig from './rollbar.config' import dataDogConfig from './datadog.config.js' -const appConfig = /* @ngInject */ function (envServiceProvider, $compileProvider, $logProvider, $httpProvider, $locationProvider, $qProvider, $translateProvider) { +// Exported for datadog.config tests. +export const appConfig = /* @ngInject */ function (envServiceProvider, $compileProvider, $logProvider, $httpProvider, $locationProvider, $qProvider, $translateProvider) { $httpProvider.useApplyAsync(true) envServiceProvider.config({ diff --git a/src/common/datadog-shouldNotLoad.config.spec.js b/src/common/datadog-shouldNotLoad.config.spec.js index c1b257ffa..1608a6b24 100644 --- a/src/common/datadog-shouldNotLoad.config.spec.js +++ b/src/common/datadog-shouldNotLoad.config.spec.js @@ -1,16 +1,20 @@ import angular from 'angular' import 'angular-mocks' +import { appConfig } from './app.config' import * as module from './datadog.config' describe('dataDogConfig', () => { describe('pipe $log to Rollbar', () => { beforeEach(() => { - // Use rollbar config function somewhere - angular.module('testDataDogConfig', ['environment']) + // Added appConfig as needed the envServiceProvider vars + angular.module('testAppAndDataDogConfig', [ + 'environment', + 'pascalprecht.translate' + ]) + .config(appConfig) .config(module.default) - // Init and run the test module - angular.mock.module('testDataDogConfig') + angular.mock.module('testAppAndDataDogConfig') inject(() => {}) }) diff --git a/src/common/datadog.config.spec.js b/src/common/datadog.config.spec.js index 81907e109..9cc274972 100644 --- a/src/common/datadog.config.spec.js +++ b/src/common/datadog.config.spec.js @@ -1,19 +1,23 @@ import angular from 'angular' import 'angular-mocks' import * as module from './datadog.config' +import { appConfig } from './app.config' describe('dataDogConfig', () => { process.env.DATADOG_RUM_CLIENT_TOKEN = '1234' describe('configure Datadog RUM', () => { beforeEach(() => { - // Use rollbar config function somewhere - angular.module('testDataDogConfig', ['environment']) + // Added appConfig as needed the envServiceProvider vars + angular.module('testAppAndDataDogConfig', [ + 'environment', + 'pascalprecht.translate' + ]) + .config(appConfig) .config(module.default) - // Init and run the test module - angular.mock.module('testDataDogConfig') - inject(() => {}) + angular.mock.module('testAppAndDataDogConfig') + inject(() => {}) }) - + it('should call init() and start session reply recording', () => { expect(window.datadogRum).not.toEqual(undefined) expect(window.datadogRum.init).toEqual(expect.any(Function))