@webex/internal-plugin-metrics 1.157.0 → 1.157.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/metrics.js +12 -6
- package/dist/metrics.js.map +1 -1
- package/package.json +5 -5
- package/src/metrics.js +10 -2
- package/test/unit/spec/metrics.js +21 -11
package/dist/metrics.js
CHANGED
|
@@ -24,8 +24,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
24
24
|
|
|
25
25
|
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
26
26
|
|
|
27
|
-
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
28
|
-
|
|
29
27
|
var _webexCore = require("@webex/webex-core");
|
|
30
28
|
|
|
31
29
|
var _common = require("@webex/common");
|
|
@@ -102,7 +100,6 @@ var Metrics = _webexCore.WebexPlugin.extend({
|
|
|
102
100
|
};
|
|
103
101
|
payload.tags = _objectSpread(_objectSpread({}, props.tags), {}, {
|
|
104
102
|
browser: getBrowserName(),
|
|
105
|
-
org_id: this.webex.credentials.getOrgId(),
|
|
106
103
|
os: getOSName(),
|
|
107
104
|
// Node does not like this so we need to check if it exists or not
|
|
108
105
|
// eslint-disable-next-line no-undef
|
|
@@ -111,6 +108,13 @@ var Metrics = _webexCore.WebexPlugin.extend({
|
|
|
111
108
|
client_id: this.webex.credentials.config.client_id,
|
|
112
109
|
user_id: this.webex.internal.device.userId
|
|
113
110
|
});
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
payload.tags.org_id = this.webex.credentials.getOrgId();
|
|
114
|
+
} catch (_unused) {
|
|
115
|
+
this.logger.info('metrics: unable to get orgId');
|
|
116
|
+
}
|
|
117
|
+
|
|
114
118
|
payload.fields = _objectSpread(_objectSpread({}, props.fields), {}, {
|
|
115
119
|
browser_version: getBrowserVersion(),
|
|
116
120
|
os_version: getOSVersion(),
|
|
@@ -132,9 +136,11 @@ var Metrics = _webexCore.WebexPlugin.extend({
|
|
|
132
136
|
|
|
133
137
|
if (props.eventPayload) {
|
|
134
138
|
payload.eventPayload = props.eventPayload;
|
|
135
|
-
}
|
|
139
|
+
} // Mocking the time in tests when running in node
|
|
140
|
+
// is impossible so unable to use Date.now()
|
|
141
|
+
|
|
136
142
|
|
|
137
|
-
payload.timestamp = (
|
|
143
|
+
payload.timestamp = new Date().valueOf();
|
|
138
144
|
|
|
139
145
|
if (preLoginId) {
|
|
140
146
|
var _payload = {
|
|
@@ -191,7 +197,7 @@ var Metrics = _webexCore.WebexPlugin.extend({
|
|
|
191
197
|
};
|
|
192
198
|
return this.callDiagnosticEventsBatcher.request(event);
|
|
193
199
|
},
|
|
194
|
-
version: "1.157.
|
|
200
|
+
version: "1.157.1"
|
|
195
201
|
});
|
|
196
202
|
|
|
197
203
|
var _default = Metrics;
|
package/dist/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["metrics.js"],"names":["getOSName","getOSVersion","getBrowserName","getBrowserVersion","getSparkUserAgent","webex","config","appName","appVersion","appPlatform","sparkUserAgent","CLIENT_NAME","Metrics","WebexPlugin","extend","children","batcher","Batcher","clientMetricsBatcher","ClientMetricsBatcher","callDiagnosticEventsBatcher","CallDiagnosticEventsBatcher","namespace","submit","key","value","request","submitClientMetrics","eventName","props","preLoginId","Error","payload","metricName","tags","browser","
|
|
1
|
+
{"version":3,"sources":["metrics.js"],"names":["getOSName","getOSVersion","getBrowserName","getBrowserVersion","getSparkUserAgent","webex","config","appName","appVersion","appPlatform","sparkUserAgent","CLIENT_NAME","Metrics","WebexPlugin","extend","children","batcher","Batcher","clientMetricsBatcher","ClientMetricsBatcher","callDiagnosticEventsBatcher","CallDiagnosticEventsBatcher","namespace","submit","key","value","request","submitClientMetrics","eventName","props","preLoginId","Error","payload","metricName","tags","browser","os","domain","window","location","hostname","client_id","credentials","user_id","internal","device","userId","org_id","getOrgId","logger","info","fields","browser_version","os_version","sdk_version","version","platform","spark_user_agent","type","metrics","context","app","locale","name","eventPayload","timestamp","Date","valueOf","_payload","postPreLoginMetric","aliasUser","method","api","resource","headers","body","qs","alias","getClientToken","then","token","authorization","toString","submitCallDiagnosticEvents","event"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {BrowserDetection} from '@webex/common';\n\nimport {CLIENT_NAME} from './config';\nimport Batcher from './batcher';\nimport ClientMetricsBatcher from './client-metrics-batcher';\nimport CallDiagnosticEventsBatcher from './call-diagnostic-events-batcher';\n\nconst {\n getOSName,\n getOSVersion,\n getBrowserName,\n getBrowserVersion\n} = BrowserDetection();\n\nfunction getSparkUserAgent(webex) {\n const {\n appName,\n appVersion,\n appPlatform\n } = webex?.config ?? {};\n\n let sparkUserAgent = CLIENT_NAME;\n\n if (appName) {\n sparkUserAgent += ` ${appName}/${appVersion ?? '0.0'}`;\n }\n\n if (appPlatform) {\n sparkUserAgent += ` ${appPlatform}`;\n }\n\n return sparkUserAgent;\n}\n\n\nconst Metrics = WebexPlugin.extend({\n children: {\n batcher: Batcher,\n clientMetricsBatcher: ClientMetricsBatcher,\n callDiagnosticEventsBatcher: CallDiagnosticEventsBatcher\n },\n\n namespace: 'Metrics',\n\n submit(key, value) {\n return this.batcher.request(Object.assign({key}, value));\n },\n\n\n /**\n * This corresponds to #sendSemiStructured() in the deprecated metrics handler\n * @param {string} eventName\n * @param {Object} props\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n submitClientMetrics(eventName, props = {}, preLoginId) {\n if (!eventName) {\n throw Error('Missing behavioral metric name. Please provide one');\n }\n const payload = {metricName: eventName};\n\n payload.tags = {\n ...props.tags,\n browser: getBrowserName(),\n os: getOSName(),\n\n // Node does not like this so we need to check if it exists or not\n // eslint-disable-next-line no-undef\n domain: typeof window !== 'undefined' ? window.location.hostname || 'non-browser' : 'non-browser', // Check what else we could measure\n client_id: this.webex.credentials.config.client_id,\n user_id: this.webex.internal.device.userId\n };\n\n try {\n payload.tags.org_id = this.webex.credentials.getOrgId();\n }\n catch {\n this.logger.info('metrics: unable to get orgId');\n }\n\n\n payload.fields = {\n ...props.fields,\n browser_version: getBrowserVersion(),\n os_version: getOSVersion(),\n sdk_version: this.webex.version,\n platform: 'Web',\n spark_user_agent: getSparkUserAgent(this.webex)\n };\n\n\n payload.type = props.type || this.webex.config.metrics.type;\n\n\n payload.context = {\n ...props.context,\n app: {\n version: this.webex.version\n },\n locale: 'en-US',\n os: {\n name: getOSName(),\n version: getOSVersion()\n }\n };\n\n\n if (props.eventPayload) {\n payload.eventPayload = props.eventPayload;\n }\n\n // Mocking the time in tests when running in node\n // is impossible so unable to use Date.now()\n payload.timestamp = new Date().valueOf();\n\n if (preLoginId) {\n const _payload = {\n metrics: [payload]\n };\n\n // Do not batch these because pre-login events occur during onboarding, so we will be partially blind\n // to users' progress through the reg flow if we wait to persist pre-login metrics for people who drop off because\n // their metrics will not post from a queue flush in time\n return this.postPreLoginMetric(_payload, preLoginId);\n }\n\n return this.clientMetricsBatcher.request(payload);\n },\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n aliasUser(preLoginId) {\n return this.request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId\n },\n body: {},\n qs: {\n alias: true\n }\n });\n },\n\n postPreLoginMetric(payload, preLoginId) {\n return this.webex.credentials.getClientToken().then((token) =>\n this.request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics-prelogin',\n headers: {\n authorization: token.toString(),\n 'x-prelogin-userid': preLoginId\n },\n body: payload\n }));\n },\n\n submitCallDiagnosticEvents(payload) {\n const event = {\n type: 'diagnostic-event',\n eventPayload: payload\n };\n\n return this.callDiagnosticEventsBatcher.request(event);\n }\n});\n\nexport default Metrics;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-metrics",
|
|
3
|
-
"version": "1.157.
|
|
3
|
+
"version": "1.157.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ian W. Remmel <iremmel@cisco.com>",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@babel/runtime-corejs2": "^7.14.8",
|
|
20
|
-
"@webex/internal-plugin-device": "1.157.
|
|
21
|
-
"@webex/webex-core": "1.157.
|
|
22
|
-
"@webex/common": "1.157.
|
|
23
|
-
"@webex/common-timers": "1.157.
|
|
20
|
+
"@webex/internal-plugin-device": "1.157.1",
|
|
21
|
+
"@webex/webex-core": "1.157.1",
|
|
22
|
+
"@webex/common": "1.157.1",
|
|
23
|
+
"@webex/common-timers": "1.157.1",
|
|
24
24
|
"envify": "^4.1.0"
|
|
25
25
|
}
|
|
26
26
|
}
|
package/src/metrics.js
CHANGED
|
@@ -68,7 +68,6 @@ const Metrics = WebexPlugin.extend({
|
|
|
68
68
|
payload.tags = {
|
|
69
69
|
...props.tags,
|
|
70
70
|
browser: getBrowserName(),
|
|
71
|
-
org_id: this.webex.credentials.getOrgId(),
|
|
72
71
|
os: getOSName(),
|
|
73
72
|
|
|
74
73
|
// Node does not like this so we need to check if it exists or not
|
|
@@ -78,6 +77,13 @@ const Metrics = WebexPlugin.extend({
|
|
|
78
77
|
user_id: this.webex.internal.device.userId
|
|
79
78
|
};
|
|
80
79
|
|
|
80
|
+
try {
|
|
81
|
+
payload.tags.org_id = this.webex.credentials.getOrgId();
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
this.logger.info('metrics: unable to get orgId');
|
|
85
|
+
}
|
|
86
|
+
|
|
81
87
|
|
|
82
88
|
payload.fields = {
|
|
83
89
|
...props.fields,
|
|
@@ -109,7 +115,9 @@ const Metrics = WebexPlugin.extend({
|
|
|
109
115
|
payload.eventPayload = props.eventPayload;
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
|
|
118
|
+
// Mocking the time in tests when running in node
|
|
119
|
+
// is impossible so unable to use Date.now()
|
|
120
|
+
payload.timestamp = new Date().valueOf();
|
|
113
121
|
|
|
114
122
|
if (preLoginId) {
|
|
115
123
|
const _payload = {
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import {assert} from '@webex/test-helper-chai';
|
|
6
|
-
import Metrics, {config} from '@webex/internal-plugin-metrics';
|
|
7
6
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
7
|
+
import {Token, Credentials} from '@webex/webex-core';
|
|
8
8
|
import FakeTimers from '@sinonjs/fake-timers';
|
|
9
9
|
import sinon from 'sinon';
|
|
10
|
+
import Metrics, {config} from '@webex/internal-plugin-metrics';
|
|
10
11
|
|
|
11
12
|
function promiseTick(count) {
|
|
12
13
|
let promise = Promise.resolve();
|
|
@@ -60,7 +61,7 @@ describe('plugin-metrics', () => {
|
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
beforeEach(() => {
|
|
63
|
-
clock = FakeTimers.install({now:
|
|
64
|
+
clock = FakeTimers.install({now: 0});
|
|
64
65
|
});
|
|
65
66
|
|
|
66
67
|
afterEach(() => {
|
|
@@ -85,13 +86,9 @@ describe('plugin-metrics', () => {
|
|
|
85
86
|
});
|
|
86
87
|
};
|
|
87
88
|
|
|
88
|
-
webex.credentials = {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
config: {
|
|
92
|
-
client_id: 'client_id'
|
|
93
|
-
}
|
|
94
|
-
};
|
|
89
|
+
webex.credentials = new Credentials(undefined, {parent: webex});
|
|
90
|
+
sinon.stub(webex.credentials, 'getClientToken').returns(Promise.resolve('token'));
|
|
91
|
+
|
|
95
92
|
webex.internal = {...webex.internal, device: {userId: 'userId'}};
|
|
96
93
|
webex.config = {
|
|
97
94
|
...webex.config,
|
|
@@ -138,7 +135,7 @@ describe('plugin-metrics', () => {
|
|
|
138
135
|
describe('#submitClientMetrics()', () => {
|
|
139
136
|
describe('before login', () => {
|
|
140
137
|
it('posts pre-login metric', () => {
|
|
141
|
-
const date =
|
|
138
|
+
const date = clock.now;
|
|
142
139
|
const promise = metrics.submitClientMetrics(eventName, mockPayload, preLoginId);
|
|
143
140
|
|
|
144
141
|
return promiseTick(50)
|
|
@@ -157,6 +154,7 @@ describe('plugin-metrics', () => {
|
|
|
157
154
|
assert.property(metric, 'timestamp');
|
|
158
155
|
assert.property(metric, 'type');
|
|
159
156
|
assert.property(metric, 'eventPayload');
|
|
157
|
+
assert.notProperty(metric.tags, 'org_id');
|
|
160
158
|
|
|
161
159
|
assert.equal(metric.timestamp, date);
|
|
162
160
|
assert.equal(metric.metricName, 'test_event');
|
|
@@ -169,13 +167,18 @@ describe('plugin-metrics', () => {
|
|
|
169
167
|
});
|
|
170
168
|
describe('after login', () => {
|
|
171
169
|
it('submits a metric to clientmetrics', () => {
|
|
170
|
+
webex.credentials.supertoken = new Token({
|
|
171
|
+
access_token: 'a_b_orgid'
|
|
172
|
+
}, {parent: webex});
|
|
173
|
+
|
|
172
174
|
const testPayload = {
|
|
173
175
|
tags: {success: true},
|
|
174
176
|
fields: {perceivedDurationInMillis: 314},
|
|
175
177
|
context: {},
|
|
176
178
|
eventPayload: {value: 'splunk business metric payload'}
|
|
177
179
|
};
|
|
178
|
-
const date =
|
|
180
|
+
const date = clock.now;
|
|
181
|
+
|
|
179
182
|
const promise = metrics.submitClientMetrics('test', testPayload);
|
|
180
183
|
|
|
181
184
|
return promiseTick(50)
|
|
@@ -218,6 +221,13 @@ describe('plugin-metrics', () => {
|
|
|
218
221
|
assert.equal(metric.eventPayload.value, 'splunk business metric payload');
|
|
219
222
|
});
|
|
220
223
|
});
|
|
224
|
+
|
|
225
|
+
it('throws error if no metric name is given', () => {
|
|
226
|
+
assert.throws(
|
|
227
|
+
() => metrics.submitClientMetrics(),
|
|
228
|
+
'Missing behavioral metric name. Please provide one'
|
|
229
|
+
);
|
|
230
|
+
});
|
|
221
231
|
});
|
|
222
232
|
});
|
|
223
233
|
|