Skip to content

Commit 61cc544

Browse files
suchitadoshi1987Suchita Doshi
authored andcommitted
Add capability to pass in custom telemetry keys
1 parent 6a432a5 commit 61cc544

4 files changed

Lines changed: 46 additions & 18 deletions

File tree

lib/gather/gather-single-telemetry.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
const puppeteer = require('puppeteer');
2-
const { setTelemetry, getTelemetry } = require('../utils/telemetry');
2+
const { setTelemetryWithKey } = require('../utils/telemetry');
33

44
const DEFAULT_PUPPETEER_ARGS = { ignoreHTTPSErrors: true };
55

6-
module.exports = async function gatherSingleTelemetry(url, gatherFn, ...args) {
6+
module.exports = async function gatherSingleTelemetry(url, options = {}, gatherFn, ...args) {
77
const browser = await puppeteer.launch(DEFAULT_PUPPETEER_ARGS);
88
const page = await browser.newPage();
99

@@ -28,10 +28,7 @@ module.exports = async function gatherSingleTelemetry(url, gatherFn, ...args) {
2828
...args
2929
);
3030

31-
// get the current telemetry and add the `single-telemetry` key to it.
32-
const currentTelemetry = getTelemetry();
33-
currentTelemetry['single-telemetry'] = telemetry;
34-
setTelemetry(currentTelemetry);
31+
setTelemetryWithKey(options.telemetryKey, telemetry);
3532
await browser.close();
3633

3734
async function bridgeEvaluate(page, fn, ...rawArgs) {

lib/gather/gather-single-telemetry.test.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const startApp = require('../../test/helpers/start-app');
22
const gatherSingleTelemetry = require('./gather-single-telemetry');
33
const { getTelemetry } = require('../utils/telemetry');
44
const APP_TIMEOUT = 100000;
5+
const TELEMETRY_KEY = 'single-telemetry';
56

67
function resolverWithoutArgs() {
78
return { foo: 'bar' };
@@ -25,18 +26,27 @@ describe('Gather single telemetry', () => {
2526
}, APP_TIMEOUT);
2627

2728
test('can determine base single telemetry case', async () => {
28-
await gatherSingleTelemetry('http://localhost:4200', resolverWithoutArgs);
29-
let telemetry = getTelemetry();
30-
expect(telemetry['single-telemetry']).toEqual({
29+
await gatherSingleTelemetry(
30+
'http://localhost:4200',
31+
{ telemetryKey: TELEMETRY_KEY },
32+
resolverWithoutArgs
33+
);
34+
let telemetry = getTelemetry(TELEMETRY_KEY);
35+
expect(telemetry).toEqual({
3136
foo: 'bar',
3237
});
3338
});
3439

3540
test('can determine single telemetry with arguments passed', async () => {
3641
const lookupNames = ['component:foo', 'helper:bar'];
37-
await gatherSingleTelemetry('http://localhost:4200', resolverWithArgs, lookupNames);
38-
let telemetry = getTelemetry();
39-
expect(telemetry['single-telemetry']).toEqual([
42+
await gatherSingleTelemetry(
43+
'http://localhost:4200',
44+
{ telemetryKey: TELEMETRY_KEY },
45+
resolverWithArgs,
46+
lookupNames
47+
);
48+
let telemetry = getTelemetry(TELEMETRY_KEY);
49+
expect(telemetry).toEqual([
4050
{ name: 'foo', type: 'component' },
4151
{ name: 'bar', type: 'helper' },
4252
]);

lib/utils/telemetry.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,23 @@ const { getModulePathFor } = require('./get-module-path-for');
44
const CACHE_KEY = 'telemetry';
55

66
function setTelemetry(newTelemetry) {
7-
let data = JSON.stringify(newTelemetry);
7+
setTelemetryWithKey(CACHE_KEY, newTelemetry);
8+
}
89

9-
cache.set(CACHE_KEY, data);
10+
function setTelemetryWithKey(cacheKey, newTelemetry) {
11+
let data = JSON.stringify(newTelemetry);
12+
cache.set(cacheKey, data);
1013
}
1114

12-
function getTelemetry() {
13-
let telemetryExists = cache.has(CACHE_KEY);
15+
function getTelemetry(cacheKey) {
16+
cacheKey = cacheKey || CACHE_KEY;
17+
let telemetryExists = cache.has(cacheKey);
1418

1519
if (!telemetryExists) {
1620
return {};
1721
}
1822

19-
let telemetryData = cache.get(CACHE_KEY).value;
23+
let telemetryData = cache.get(cacheKey).value;
2024
let telemetry = {};
2125

2226
try {
@@ -51,5 +55,6 @@ function _generateModuleKey(modulePath) {
5155
module.exports = {
5256
getTelemetry,
5357
setTelemetry,
58+
setTelemetryWithKey,
5459
getTelemetryFor,
5560
};

lib/utils/telemetry.test.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { getTelemetry, setTelemetry, getTelemetryFor } = require('./telemetry');
1+
const { getTelemetry, setTelemetry, setTelemetryWithKey, getTelemetryFor } = require('./telemetry');
22

33
describe('get/set Telemetry', () => {
44
test('can get the set telemetry', () => {
@@ -16,6 +16,22 @@ describe('get/set Telemetry', () => {
1616
});
1717
});
1818

19+
describe('get/set Telemetry with keys', () => {
20+
test('can get the set telemetry with keys', () => {
21+
let fakeTelemetry = {
22+
a: 1,
23+
b: 2,
24+
};
25+
26+
setTelemetryWithKey('fake-telemetry', fakeTelemetry);
27+
28+
let telemetry = getTelemetry('fake-telemetry');
29+
30+
expect(Object.keys(telemetry)).toEqual(Object.keys(fakeTelemetry));
31+
expect(Object.values(telemetry)).toEqual(Object.values(fakeTelemetry));
32+
});
33+
});
34+
1935
describe('getTelemetryFor', () => {
2036
test('gets the data for the filePath', () => {
2137
let fakeTelemetry = { a: 1 };

0 commit comments

Comments
 (0)