mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Add new telemetry events
Summary: Adds a handful of new telemetry events, and makes a few tweaks to allow for better organization of telemetry. Test Plan: Manual. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D4100
This commit is contained in:
@@ -110,7 +110,7 @@ describe('Telemetry', function() {
|
||||
if (deploymentType === 'saas') {
|
||||
it('logs telemetry events', async function() {
|
||||
if (telemetryLevel === 'limited') {
|
||||
await telemetry.logEvent('documentOpened', {
|
||||
telemetry.logEvent(null, 'documentOpened', {
|
||||
limited: {
|
||||
docIdDigest: 'digest',
|
||||
isPublic: false,
|
||||
@@ -129,7 +129,7 @@ describe('Telemetry', function() {
|
||||
}
|
||||
|
||||
if (telemetryLevel === 'full') {
|
||||
await telemetry.logEvent('documentOpened', {
|
||||
telemetry.logEvent(null, 'documentOpened', {
|
||||
limited: {
|
||||
docIdDigest: 'digest',
|
||||
isPublic: false,
|
||||
@@ -157,13 +157,14 @@ describe('Telemetry', function() {
|
||||
} else {
|
||||
it('forwards telemetry events', async function() {
|
||||
if (telemetryLevel === 'limited') {
|
||||
await telemetry.logEvent('documentOpened', {
|
||||
telemetry.logEvent(null, 'documentOpened', {
|
||||
limited: {
|
||||
docIdDigest: 'digest',
|
||||
isPublic: false,
|
||||
},
|
||||
});
|
||||
assert.deepEqual(forwardEventSpy.lastCall.args, [
|
||||
null,
|
||||
'documentOpened',
|
||||
{
|
||||
docIdDigest: 'dige:Vq9L3nCkeufQ8euzDkXtM2Fl1cnsALqakjEeM6QlbXQ=',
|
||||
@@ -174,7 +175,7 @@ describe('Telemetry', function() {
|
||||
}
|
||||
|
||||
if (telemetryLevel === 'full') {
|
||||
await telemetry.logEvent('documentOpened', {
|
||||
telemetry.logEvent(null, 'documentOpened', {
|
||||
limited: {
|
||||
docIdDigest: 'digest',
|
||||
isPublic: false,
|
||||
@@ -184,6 +185,7 @@ describe('Telemetry', function() {
|
||||
},
|
||||
});
|
||||
assert.deepEqual(forwardEventSpy.lastCall.args, [
|
||||
null,
|
||||
'documentOpened',
|
||||
{
|
||||
docIdDigest: 'dige:Vq9L3nCkeufQ8euzDkXtM2Fl1cnsALqakjEeM6QlbXQ=',
|
||||
@@ -200,7 +202,7 @@ describe('Telemetry', function() {
|
||||
}
|
||||
} else {
|
||||
it('does not log telemetry events', async function() {
|
||||
await telemetry.logEvent('documentOpened', {
|
||||
telemetry.logEvent(null, 'documentOpened', {
|
||||
limited: {
|
||||
docIdDigest: 'digest',
|
||||
isPublic: false,
|
||||
@@ -214,14 +216,14 @@ describe('Telemetry', function() {
|
||||
if (telemetryLevel !== 'off') {
|
||||
it('throws an error when an event is invalid', async function() {
|
||||
await assert.isRejected(
|
||||
telemetry.logEvent('invalidEvent' as TelemetryEvent, {limited: {method: 'GET'}}),
|
||||
telemetry.logEventAsync(null, 'invalidEvent' as TelemetryEvent, {limited: {method: 'GET'}}),
|
||||
/Unknown telemetry event: invalidEvent/
|
||||
);
|
||||
});
|
||||
|
||||
it("throws an error when an event's metadata is invalid", async function() {
|
||||
await assert.isRejected(
|
||||
telemetry.logEvent('documentOpened', {limited: {invalidMetadata: 'GET'}}),
|
||||
telemetry.logEventAsync(null, 'documentOpened', {limited: {invalidMetadata: 'GET'}}),
|
||||
/Unknown metadata for telemetry event documentOpened: invalidMetadata/
|
||||
);
|
||||
});
|
||||
@@ -229,7 +231,7 @@ describe('Telemetry', function() {
|
||||
if (telemetryLevel === 'limited') {
|
||||
it("throws an error when an event's metadata requires an elevated telemetry level", async function() {
|
||||
await assert.isRejected(
|
||||
telemetry.logEvent('documentOpened', {limited: {userId: 1}}),
|
||||
telemetry.logEventAsync(null, 'documentOpened', {limited: {userId: 1}}),
|
||||
// eslint-disable-next-line max-len
|
||||
/Telemetry metadata userId of event documentOpened requires a minimum telemetry level of 2 but the current level is 1/
|
||||
);
|
||||
@@ -251,9 +253,11 @@ describe('Telemetry', function() {
|
||||
if (telemetryLevel === 'limited') {
|
||||
assert.deepEqual(metadata, {
|
||||
eventName: 'watchedVideoTour',
|
||||
eventCategory: 'Welcome',
|
||||
eventSource: `grist-${deploymentType}`,
|
||||
watchTimeSeconds: 30,
|
||||
installationId,
|
||||
isInternalUser: true,
|
||||
});
|
||||
} else {
|
||||
assert.containsAllKeys(metadata, [
|
||||
@@ -309,7 +313,7 @@ describe('Telemetry', function() {
|
||||
limited: {watchTimeSeconds: 30},
|
||||
},
|
||||
}, chimpy);
|
||||
const [event, metadata] = forwardEventSpy.lastCall.args;
|
||||
const [, event, metadata] = forwardEventSpy.lastCall.args;
|
||||
assert.equal(event, 'watchedVideoTour');
|
||||
if (telemetryLevel === 'limited') {
|
||||
assert.deepEqual(metadata, {
|
||||
@@ -330,7 +334,7 @@ describe('Telemetry', function() {
|
||||
} else {
|
||||
// The count below includes 2 apiUsage events triggered as side effects.
|
||||
assert.equal(forwardEventSpy.callCount, 4);
|
||||
assert.equal(forwardEventSpy.thirdCall.args[0], 'apiUsage');
|
||||
assert.equal(forwardEventSpy.thirdCall.args[1], 'apiUsage');
|
||||
}
|
||||
assert.isEmpty(loggedEvents);
|
||||
});
|
||||
@@ -345,7 +349,7 @@ describe('Telemetry', function() {
|
||||
|
||||
// Log enough events simultaneously to cause some to be skipped. (The limit is 25.)
|
||||
for (let i = 0; i < 30; i++) {
|
||||
void telemetry.logEvent('documentOpened', {
|
||||
void telemetry.logEvent(null, 'documentOpened', {
|
||||
limited: {
|
||||
docIdDigest: 'digest',
|
||||
isPublic: false,
|
||||
@@ -360,7 +364,7 @@ describe('Telemetry', function() {
|
||||
}
|
||||
} else {
|
||||
it('does not log telemetry events sent to /api/telemetry', async function() {
|
||||
await telemetry.logEvent('apiUsage', {limited: {method: 'GET'}});
|
||||
telemetry.logEvent(null, 'apiUsage', {limited: {method: 'GET'}});
|
||||
assert.isEmpty(loggedEvents);
|
||||
assert.equal(forwardEventSpy.callCount, 0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user