@webex/calling 3.9.0-multi-llms.3 → 3.9.0-multi-llms.5

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.
Files changed (27) hide show
  1. package/dist/CallingClient/registration/register.js +435 -365
  2. package/dist/CallingClient/registration/register.js.map +1 -1
  3. package/dist/CallingClient/registration/register.test.js +96 -24
  4. package/dist/CallingClient/registration/register.test.js.map +1 -1
  5. package/dist/CallingClient/registration/webWorker.js +20 -6
  6. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  7. package/dist/CallingClient/registration/webWorker.test.js +71 -24
  8. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  9. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  10. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  11. package/dist/Metrics/index.js +85 -50
  12. package/dist/Metrics/index.js.map +1 -1
  13. package/dist/Metrics/index.test.js +54 -25
  14. package/dist/Metrics/index.test.js.map +1 -1
  15. package/dist/common/Utils.js.map +1 -1
  16. package/dist/module/CallingClient/registration/register.js +23 -2
  17. package/dist/module/CallingClient/registration/webWorker.js +15 -2
  18. package/dist/module/CallingClient/registration/webWorkerStr.js +19 -3
  19. package/dist/module/Metrics/index.js +56 -23
  20. package/dist/types/CallingClient/registration/register.d.ts +1 -0
  21. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  22. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  23. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  24. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  25. package/dist/types/Metrics/index.d.ts.map +1 -1
  26. package/dist/types/common/Utils.d.ts.map +1 -1
  27. package/package.json +3 -3
@@ -23,16 +23,15 @@ var webex = (0, _testUtil.getTestUtilsWebex)();
23
23
  describe('CALLING: Metric tests', function () {
24
24
  var metricManager = (0, _index.getMetricManager)(webex, _types3.ServiceIndicator.CALLING);
25
25
  var mockDeviceInfo = (0, _testUtil.getMockDeviceInfo)();
26
- var mockSubmitClientMetric = jest.fn();
26
+ var submitClientMetricSpy = jest.spyOn(webex.internal.metrics, 'submitClientMetrics');
27
27
  var MOCK_VERSION_NUMBER = '1.0.0';
28
28
  var originalEnv = process.env;
29
- webex.internal.metrics.submitClientMetrics = mockSubmitClientMetric;
30
29
  var mockCallId = '123456';
31
30
  var mockCorrelationId = '0931237';
32
31
  var mockCallAction = 'S_SEND_CALL_SETUP';
33
32
  var mockMediaAction = 'S_SEND_ROAP_OFFER';
34
33
  beforeEach(function () {
35
- mockSubmitClientMetric.mockClear();
34
+ submitClientMetricSpy.mockClear();
36
35
  process.env = _objectSpread(_objectSpread({}, originalEnv), {}, {
37
36
  CALLING_SDK_VERSION: MOCK_VERSION_NUMBER
38
37
  });
@@ -66,7 +65,7 @@ describe('CALLING: Metric tests', function () {
66
65
  type: _types.METRIC_TYPE.BEHAVIORAL
67
66
  };
68
67
  metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, _constants.REGISTRATION_UTIL, 'PRIMARY', 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15', undefined, undefined);
69
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.REGISTRATION, expectedData);
68
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.REGISTRATION, expectedData);
70
69
  });
71
70
  it('submit registration failure metric', function () {
72
71
  metricManager.setDeviceInfo(mockDeviceInfo);
@@ -95,12 +94,42 @@ describe('CALLING: Metric tests', function () {
95
94
  type: _types.METRIC_TYPE.BEHAVIORAL
96
95
  };
97
96
  metricManager.submitRegistrationMetric(_types.METRIC_EVENT.REGISTRATION_ERROR, _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.BEHAVIORAL, _constants.REGISTRATION_UTIL, 'BACKUP', 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15', undefined, clientError);
98
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.REGISTRATION_ERROR, expectedData);
97
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.REGISTRATION_ERROR, expectedData);
98
+ });
99
+ it('submit keepalive failure metric', function () {
100
+ metricManager.setDeviceInfo(mockDeviceInfo);
101
+ var clientError = (0, _CallingDeviceError.createClientError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
102
+ var err = {};
103
+ err.context = {};
104
+ err.message = 'Unknown Error';
105
+ err.type = _types2.ERROR_TYPE.NOT_FOUND;
106
+ clientError.setError(err);
107
+ var expectedData = {
108
+ tags: {
109
+ action: _types.REG_ACTION.KEEPALIVE_FAILURE,
110
+ device_id: mockDeviceInfo.device.deviceId,
111
+ service_indicator: _types3.ServiceIndicator.CALLING
112
+ },
113
+ fields: {
114
+ device_url: mockDeviceInfo.device.clientDeviceUri,
115
+ mobius_url: mockDeviceInfo.device.uri,
116
+ calling_sdk_version: MOCK_VERSION_NUMBER,
117
+ reg_source: _constants.REGISTRATION_UTIL,
118
+ server_type: 'BACKUP',
119
+ trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',
120
+ keepalive_count: 1,
121
+ error: clientError.getError().message,
122
+ error_type: clientError.getError().type
123
+ },
124
+ type: _types.METRIC_TYPE.BEHAVIORAL
125
+ };
126
+ metricManager.submitRegistrationMetric(_types.METRIC_EVENT.KEEPALIVE_ERROR, _types.REG_ACTION.KEEPALIVE_FAILURE, _types.METRIC_TYPE.BEHAVIORAL, _constants.REGISTRATION_UTIL, 'BACKUP', 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15', 1, clientError);
127
+ expect(submitClientMetricSpy).toHaveBeenCalledWith(_types.METRIC_EVENT.KEEPALIVE_ERROR, expectedData);
99
128
  });
100
129
  it('submit unknown registration metric', function () {
101
130
  var logSpy = jest.spyOn(_Logger.default, 'warn');
102
131
  metricManager.submitRegistrationMetric('invalidMetricName', _types.REG_ACTION.REGISTER, _types.METRIC_TYPE.OPERATIONAL, _constants.REGISTRATION_UTIL, 'PRIMARY', undefined, undefined, undefined);
103
- expect(mockSubmitClientMetric).not.toBeCalled();
132
+ expect(submitClientMetricSpy).not.toBeCalled();
104
133
  expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
105
134
  file: 'metric',
106
135
  method: 'submitRegistrationMetric'
@@ -128,7 +157,7 @@ describe('CALLING: Metric tests', function () {
128
157
  type: _types.METRIC_TYPE.BEHAVIORAL
129
158
  };
130
159
  metricManager.submitCallMetric(_types.METRIC_EVENT.CALL, mockCallAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
131
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.CALL, expectedData);
160
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.CALL, expectedData);
132
161
  });
133
162
  it('submit call failure metric', function () {
134
163
  var callError = (0, _CallError.createCallError)('', {}, _types2.ERROR_TYPE.DEFAULT, mockCorrelationId, _types2.ERROR_LAYER.CALL_CONTROL);
@@ -155,12 +184,12 @@ describe('CALLING: Metric tests', function () {
155
184
  type: _types.METRIC_TYPE.BEHAVIORAL
156
185
  };
157
186
  metricManager.submitCallMetric(_types.METRIC_EVENT.CALL_ERROR, mockCallAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId, callError);
158
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.CALL_ERROR, expectedData);
187
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.CALL_ERROR, expectedData);
159
188
  });
160
189
  it('submit unknown call metric', function () {
161
190
  var logSpy = jest.spyOn(_Logger.default, 'warn');
162
191
  metricManager.submitCallMetric('invalidMetricName', mockCallAction, _types.METRIC_TYPE.OPERATIONAL, mockCallId, mockCorrelationId);
163
- expect(mockSubmitClientMetric).not.toBeCalled();
192
+ expect(submitClientMetricSpy).not.toBeCalled();
164
193
  expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
165
194
  file: 'metric',
166
195
  method: 'submitCallMetric'
@@ -191,7 +220,7 @@ describe('CALLING: Metric tests', function () {
191
220
  type: _types.METRIC_TYPE.BEHAVIORAL
192
221
  };
193
222
  metricManager.submitMediaMetric(_types.METRIC_EVENT.MEDIA, mockMediaAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId, mockSdp, mockSdp);
194
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.MEDIA, expectedData);
223
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.MEDIA, expectedData);
195
224
  });
196
225
  it('submit media failure metric', function () {
197
226
  var callError = (0, _CallError.createCallError)('', {}, _types2.ERROR_TYPE.DEFAULT, mockCorrelationId, _types2.ERROR_LAYER.MEDIA);
@@ -220,12 +249,12 @@ describe('CALLING: Metric tests', function () {
220
249
  type: _types.METRIC_TYPE.BEHAVIORAL
221
250
  };
222
251
  metricManager.submitMediaMetric(_types.METRIC_EVENT.MEDIA_ERROR, mockMediaAction, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId, mockSdp, mockSdp, callError);
223
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.MEDIA_ERROR, expectedData);
252
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.MEDIA_ERROR, expectedData);
224
253
  });
225
254
  it('submit unknown media metric', function () {
226
255
  var logSpy = jest.spyOn(_Logger.default, 'warn');
227
256
  metricManager.submitMediaMetric('invalidMetricName', mockMediaAction, _types.METRIC_TYPE.OPERATIONAL, mockCallId, mockCorrelationId, mockSdp, mockSdp);
228
- expect(mockSubmitClientMetric).not.toBeCalled();
257
+ expect(submitClientMetricSpy).not.toBeCalled();
229
258
  expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
230
259
  file: 'metric',
231
260
  method: 'submitMediaMetric'
@@ -252,7 +281,7 @@ describe('CALLING: Metric tests', function () {
252
281
  type: _types.METRIC_TYPE.BEHAVIORAL
253
282
  };
254
283
  metricManager.submitBNRMetric(_types.METRIC_EVENT.BNR_ENABLED, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
255
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_ENABLED, expectedData);
284
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_ENABLED, expectedData);
256
285
  });
257
286
  it('submit bnr disabled metric', function () {
258
287
  var expectedData = {
@@ -270,12 +299,12 @@ describe('CALLING: Metric tests', function () {
270
299
  type: _types.METRIC_TYPE.BEHAVIORAL
271
300
  };
272
301
  metricManager.submitBNRMetric(_types.METRIC_EVENT.BNR_DISABLED, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
273
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_DISABLED, expectedData);
302
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_DISABLED, expectedData);
274
303
  });
275
304
  it('submit unknown bnr metric', function () {
276
305
  var logSpy = jest.spyOn(_Logger.default, 'warn');
277
306
  metricManager.submitBNRMetric('invalidMetricName', _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
278
- expect(mockSubmitClientMetric).not.toBeCalled();
307
+ expect(submitClientMetricSpy).not.toBeCalled();
279
308
  expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
280
309
  file: 'metric',
281
310
  method: 'submitBNRMetric'
@@ -299,8 +328,8 @@ describe('CALLING: Metric tests', function () {
299
328
  type: _types.METRIC_TYPE.BEHAVIORAL
300
329
  };
301
330
  metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL, _types.VOICEMAIL_ACTION.GET_VOICEMAILS, _types.METRIC_TYPE.BEHAVIORAL);
302
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL, expectedData1);
303
- mockSubmitClientMetric.mockClear();
331
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL, expectedData1);
332
+ submitClientMetricSpy.mockClear();
304
333
  var expectedData2 = _objectSpread(_objectSpread({}, expectedData1), {}, {
305
334
  tags: _objectSpread(_objectSpread({}, expectedData1.tags), {}, {
306
335
  message_id: 'messageId',
@@ -308,7 +337,7 @@ describe('CALLING: Metric tests', function () {
308
337
  })
309
338
  });
310
339
  metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL, _types.VOICEMAIL_ACTION.DELETE, _types.METRIC_TYPE.BEHAVIORAL, 'messageId');
311
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL, expectedData2);
340
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL, expectedData2);
312
341
  });
313
342
  it('submit voicemail failure metric', function () {
314
343
  var errorMessage = 'User is not authenticated';
@@ -327,8 +356,8 @@ describe('CALLING: Metric tests', function () {
327
356
  type: _types.METRIC_TYPE.BEHAVIORAL
328
357
  };
329
358
  metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL_ERROR, _types.VOICEMAIL_ACTION.GET_VOICEMAILS, _types.METRIC_TYPE.BEHAVIORAL, undefined, errorMessage, 401);
330
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL_ERROR, expectedData1);
331
- mockSubmitClientMetric.mockClear();
359
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL_ERROR, expectedData1);
360
+ submitClientMetricSpy.mockClear();
332
361
  var expectedData2 = _objectSpread(_objectSpread({}, expectedData1), {}, {
333
362
  tags: _objectSpread(_objectSpread({}, expectedData1.tags), {}, {
334
363
  message_id: 'messageId',
@@ -336,12 +365,12 @@ describe('CALLING: Metric tests', function () {
336
365
  })
337
366
  });
338
367
  metricManager.submitVoicemailMetric(_types.METRIC_EVENT.VOICEMAIL_ERROR, _types.VOICEMAIL_ACTION.DELETE, _types.METRIC_TYPE.BEHAVIORAL, 'messageId', errorMessage, 401);
339
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL_ERROR, expectedData2);
368
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.VOICEMAIL_ERROR, expectedData2);
340
369
  });
341
370
  it('submit unknown voicemail metric', function () {
342
371
  var logSpy = jest.spyOn(_Logger.default, 'warn');
343
372
  metricManager.submitVoicemailMetric('invalidMetricName', _types.VOICEMAIL_ACTION.GET_VOICEMAILS, _types.METRIC_TYPE.BEHAVIORAL);
344
- expect(mockSubmitClientMetric).not.toBeCalled();
373
+ expect(submitClientMetricSpy).not.toBeCalled();
345
374
  expect(logSpy).toBeCalledOnceWith('Invalid metric name received. Rejecting request to submit metric.', {
346
375
  file: 'metric',
347
376
  method: 'submitVoicemailMetric'
@@ -367,7 +396,7 @@ describe('CALLING: Metric tests', function () {
367
396
  type: _types.METRIC_TYPE.BEHAVIORAL
368
397
  };
369
398
  metricManager.submitBNRMetric(_types.METRIC_EVENT.BNR_ENABLED, _types.METRIC_TYPE.BEHAVIORAL, mockCallId, mockCorrelationId);
370
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_ENABLED, expectedData);
399
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.BNR_ENABLED, expectedData);
371
400
  });
372
401
  });
373
402
  describe('Upload Logs metric tests', function () {
@@ -399,7 +428,7 @@ describe('CALLING: Metric tests', function () {
399
428
  type: _types.METRIC_TYPE.BEHAVIORAL
400
429
  };
401
430
  metricManager.submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, trackingId, feedbackId, correlationId, undefined, callId, broadworksCorrelationInfo);
402
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, expectedData);
431
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, expectedData);
403
432
  });
404
433
  it('submit upload logs failure metric includes error and broadworksCorrelationInfo', function () {
405
434
  var feedbackId = 'feed-456';
@@ -427,7 +456,7 @@ describe('CALLING: Metric tests', function () {
427
456
  type: _types.METRIC_TYPE.BEHAVIORAL
428
457
  };
429
458
  metricManager.submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, undefined, feedbackId, correlationId, errorStack, callId, broadworksCorrelationInfo);
430
- expect(mockSubmitClientMetric).toBeCalledOnceWith(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, expectedData);
459
+ expect(submitClientMetricSpy).toBeCalledOnceWith(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, expectedData);
431
460
  });
432
461
  });
433
462
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_testUtil","require","_index","_types","_constants","_CallingDeviceError","_types2","_types3","_Logger","_interopRequireDefault","_CallError","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","webex","getTestUtilsWebex","describe","metricManager","getMetricManager","ServiceIndicator","CALLING","mockDeviceInfo","getMockDeviceInfo","mockSubmitClientMetric","jest","fn","MOCK_VERSION_NUMBER","originalEnv","process","env","internal","metrics","submitClientMetrics","mockCallId","mockCorrelationId","mockCallAction","mockMediaAction","beforeEach","mockClear","CALLING_SDK_VERSION","it","expect","not","toBeNull","toBeUndefined","setDeviceInfo","toEqual","expectedData","tags","action","REG_ACTION","REGISTER","device_id","device","deviceId","service_indicator","fields","device_url","clientDeviceUri","mobius_url","uri","calling_sdk_version","reg_source","REGISTRATION_UTIL","server_type","trackingId","type","METRIC_TYPE","BEHAVIORAL","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","undefined","toBeCalledOnceWith","clientError","createClientError","ERROR_TYPE","DEFAULT","RegistrationStatus","INACTIVE","err","context","message","SERVICE_UNAVAILABLE","setError","error","getError","error_type","REGISTRATION_ERROR","logSpy","spyOn","log","OPERATIONAL","toBeCalled","file","method","beforeAll","call_id","correlation_id","submitCallMetric","CALL","callError","createCallError","ERROR_LAYER","CALL_CONTROL","FORBIDDEN_ERROR","setCallError","getCallError","CALL_ERROR","mockSdp","local_media_details","remote_media_details","submitMediaMetric","MEDIA","MEDIA_ERROR","submitBNRMetric","BNR_ENABLED","BNR_DISABLED","expectedData1","VOICEMAIL_ACTION","GET_VOICEMAILS","submitVoicemailMetric","VOICEMAIL","expectedData2","message_id","DELETE","errorMessage","status_code","VOICEMAIL_ERROR","VERSION","feedbackId","correlationId","callId","broadworksCorrelationInfo","UPLOAD_LOGS_ACTION","tracking_id","feedback_id","submitUploadLogsMetric","UPLOAD_LOGS_SUCCESS","errorStack","UPLOAD_LOGS_FAILED"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {getMockDeviceInfo, getTestUtilsWebex} from '../common/testUtil';\nimport {getMetricManager} from './index';\nimport {METRIC_TYPE, METRIC_EVENT, REG_ACTION, VOICEMAIL_ACTION, UPLOAD_LOGS_ACTION} from './types';\nimport {REGISTRATION_UTIL, VERSION} from '../CallingClient/constants';\nimport {createClientError} from '../Errors/catalog/CallingDeviceError';\nimport {CallErrorObject, ErrorObject, ERROR_LAYER, ERROR_TYPE} from '../Errors/types';\nimport {RegistrationStatus, ServiceIndicator} from '../common/types';\nimport log from '../Logger';\nimport {createCallError} from '../Errors/catalog/CallError';\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CALLING: Metric tests', () => {\n const metricManager = getMetricManager(webex, ServiceIndicator.CALLING);\n const mockDeviceInfo = getMockDeviceInfo();\n const mockSubmitClientMetric = jest.fn();\n const MOCK_VERSION_NUMBER = '1.0.0';\n const originalEnv = process.env;\n\n webex.internal.metrics.submitClientMetrics = mockSubmitClientMetric;\n\n const mockCallId = '123456';\n const mockCorrelationId = '0931237';\n const mockCallAction = 'S_SEND_CALL_SETUP';\n const mockMediaAction = 'S_SEND_ROAP_OFFER';\n\n beforeEach(() => {\n mockSubmitClientMetric.mockClear();\n process.env = {\n ...originalEnv,\n CALLING_SDK_VERSION: MOCK_VERSION_NUMBER,\n };\n });\n\n it('initialize metric manager', () => {\n expect(metricManager).not.toBeNull();\n expect(metricManager['deviceInfo']).toBeUndefined();\n });\n\n it('update deviceInfo in metric manager', () => {\n expect(metricManager['deviceInfo']).toBeUndefined();\n metricManager.setDeviceInfo(mockDeviceInfo);\n expect(metricManager['deviceInfo']).toEqual(mockDeviceInfo);\n });\n\n describe('CallingClient metric tests', () => {\n it('submit registration success metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'PRIMARY',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.REGISTRATION, expectedData);\n });\n\n it('submit registration failure metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const clientError = createClientError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n RegistrationStatus.INACTIVE\n );\n const err = <ErrorObject>{};\n\n err.context = {};\n err.message = 'Unknown Error';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n clientError.setError(err);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'BACKUP',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n error: clientError.getError().message,\n error_type: clientError.getError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n clientError\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n expectedData\n );\n });\n\n it('submit unknown registration metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitRegistrationMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n REG_ACTION.REGISTER,\n METRIC_TYPE.OPERATIONAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n undefined,\n undefined,\n undefined\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitRegistrationMetric',\n }\n );\n });\n });\n\n describe('Call Metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit call success metric', () => {\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.CALL, expectedData);\n });\n\n it('submit call failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.CALL_CONTROL\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An invalid status update has been received for the call. Wait a moment and try again.';\n err.type = ERROR_TYPE.FORBIDDEN_ERROR;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL_ERROR,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n callError\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.CALL_ERROR, expectedData);\n });\n\n it('submit unknown call metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitCallMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockCallAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitCallMetric',\n }\n );\n });\n });\n\n describe('Media Metric tests', () => {\n const mockSdp = 'sdpInformation';\n\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit media success metric', () => {\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.MEDIA, expectedData);\n });\n\n it('submit media failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.MEDIA\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An error occurred while parsing the provided information. Wait a moment and try again.';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA_ERROR,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp,\n callError\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.MEDIA_ERROR, expectedData);\n });\n\n it('submit unknown media metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitMediaMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockMediaAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitMediaMetric',\n }\n );\n });\n });\n\n describe('BNR metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit bnr enabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n\n it('submit bnr disabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_DISABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.BNR_DISABLED, expectedData);\n });\n\n it('submit unknown bnr metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitBNRMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitBNRMetric',\n }\n );\n });\n });\n\n describe('Voicemail metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit voicemail success metric', () => {\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData1);\n\n mockSubmitClientMetric.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId'\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData2);\n });\n\n it('submit voicemail failure metric', () => {\n const errorMessage = 'User is not authenticated';\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n message_id: undefined,\n error: errorMessage,\n status_code: 401,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n errorMessage,\n 401\n );\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.VOICEMAIL_ERROR,\n expectedData1\n );\n\n mockSubmitClientMetric.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId',\n errorMessage,\n 401\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.VOICEMAIL_ERROR,\n expectedData2\n );\n });\n\n it('submit unknown voicemail metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitVoicemailMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n\n expect(mockSubmitClientMetric).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitVoicemailMetric',\n }\n );\n });\n });\n\n describe('Calling_Sdk_Version fallback test', () => {\n it('submit metric with fallback version', () => {\n process.env = {};\n metricManager.setDeviceInfo(mockDeviceInfo);\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: VERSION,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n });\n\n describe('Upload Logs metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit upload logs success metric includes broadworksCorrelationInfo', () => {\n const trackingId = 'track-123';\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: trackingId,\n feedback_id: feedbackId,\n call_id: callId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n trackingId,\n feedbackId,\n correlationId,\n undefined,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n expectedData\n );\n });\n\n it('submit upload logs failure metric includes error and broadworksCorrelationInfo', () => {\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n const errorStack = 'some error stack';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: undefined,\n feedback_id: feedbackId,\n call_id: callId,\n error: errorStack,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n feedbackId,\n correlationId,\n errorStack,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(mockSubmitClientMetric).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n expectedData\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_testUtil","require","_index","_types","_constants","_CallingDeviceError","_types2","_types3","_Logger","_interopRequireDefault","_CallError","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","webex","getTestUtilsWebex","describe","metricManager","getMetricManager","ServiceIndicator","CALLING","mockDeviceInfo","getMockDeviceInfo","submitClientMetricSpy","jest","spyOn","internal","metrics","MOCK_VERSION_NUMBER","originalEnv","process","env","mockCallId","mockCorrelationId","mockCallAction","mockMediaAction","beforeEach","mockClear","CALLING_SDK_VERSION","it","expect","not","toBeNull","toBeUndefined","setDeviceInfo","toEqual","expectedData","tags","action","REG_ACTION","REGISTER","device_id","device","deviceId","service_indicator","fields","device_url","clientDeviceUri","mobius_url","uri","calling_sdk_version","reg_source","REGISTRATION_UTIL","server_type","trackingId","type","METRIC_TYPE","BEHAVIORAL","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","undefined","toBeCalledOnceWith","clientError","createClientError","ERROR_TYPE","DEFAULT","RegistrationStatus","INACTIVE","err","context","message","SERVICE_UNAVAILABLE","setError","error","getError","error_type","REGISTRATION_ERROR","NOT_FOUND","KEEPALIVE_FAILURE","keepalive_count","KEEPALIVE_ERROR","toHaveBeenCalledWith","logSpy","log","OPERATIONAL","toBeCalled","file","method","beforeAll","call_id","correlation_id","submitCallMetric","CALL","callError","createCallError","ERROR_LAYER","CALL_CONTROL","FORBIDDEN_ERROR","setCallError","getCallError","CALL_ERROR","mockSdp","local_media_details","remote_media_details","submitMediaMetric","MEDIA","MEDIA_ERROR","submitBNRMetric","BNR_ENABLED","BNR_DISABLED","expectedData1","VOICEMAIL_ACTION","GET_VOICEMAILS","submitVoicemailMetric","VOICEMAIL","expectedData2","message_id","DELETE","errorMessage","status_code","VOICEMAIL_ERROR","VERSION","feedbackId","correlationId","callId","broadworksCorrelationInfo","UPLOAD_LOGS_ACTION","tracking_id","feedback_id","submitUploadLogsMetric","UPLOAD_LOGS_SUCCESS","errorStack","UPLOAD_LOGS_FAILED"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {getMockDeviceInfo, getTestUtilsWebex} from '../common/testUtil';\nimport {getMetricManager} from './index';\nimport {METRIC_TYPE, METRIC_EVENT, REG_ACTION, VOICEMAIL_ACTION, UPLOAD_LOGS_ACTION} from './types';\nimport {REGISTRATION_UTIL, VERSION} from '../CallingClient/constants';\nimport {createClientError} from '../Errors/catalog/CallingDeviceError';\nimport {CallErrorObject, ErrorObject, ERROR_LAYER, ERROR_TYPE} from '../Errors/types';\nimport {RegistrationStatus, ServiceIndicator} from '../common/types';\nimport log from '../Logger';\nimport {createCallError} from '../Errors/catalog/CallError';\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CALLING: Metric tests', () => {\n const metricManager = getMetricManager(webex, ServiceIndicator.CALLING);\n const mockDeviceInfo = getMockDeviceInfo();\n const submitClientMetricSpy = jest.spyOn(webex.internal.metrics, 'submitClientMetrics');\n const MOCK_VERSION_NUMBER = '1.0.0';\n const originalEnv = process.env;\n\n const mockCallId = '123456';\n const mockCorrelationId = '0931237';\n const mockCallAction = 'S_SEND_CALL_SETUP';\n const mockMediaAction = 'S_SEND_ROAP_OFFER';\n\n beforeEach(() => {\n submitClientMetricSpy.mockClear();\n process.env = {\n ...originalEnv,\n CALLING_SDK_VERSION: MOCK_VERSION_NUMBER,\n };\n });\n\n it('initialize metric manager', () => {\n expect(metricManager).not.toBeNull();\n expect(metricManager['deviceInfo']).toBeUndefined();\n });\n\n it('update deviceInfo in metric manager', () => {\n expect(metricManager['deviceInfo']).toBeUndefined();\n metricManager.setDeviceInfo(mockDeviceInfo);\n expect(metricManager['deviceInfo']).toEqual(mockDeviceInfo);\n });\n\n describe('CallingClient metric tests', () => {\n it('submit registration success metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'PRIMARY',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.REGISTRATION, expectedData);\n });\n\n it('submit registration failure metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const clientError = createClientError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n RegistrationStatus.INACTIVE\n );\n const err = <ErrorObject>{};\n\n err.context = {};\n err.message = 'Unknown Error';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n clientError.setError(err);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.REGISTER,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'BACKUP',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n error: clientError.getError().message,\n error_type: clientError.getError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n clientError\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n expectedData\n );\n });\n\n it('submit keepalive failure metric', () => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n\n const clientError = createClientError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n RegistrationStatus.INACTIVE\n );\n const err = <ErrorObject>{};\n\n err.context = {};\n err.message = 'Unknown Error';\n err.type = ERROR_TYPE.NOT_FOUND;\n\n clientError.setError(err);\n\n const expectedData = {\n tags: {\n action: REG_ACTION.KEEPALIVE_FAILURE,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n reg_source: REGISTRATION_UTIL,\n server_type: 'BACKUP',\n trackingId: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n keepalive_count: 1,\n error: clientError.getError().message,\n error_type: clientError.getError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n 1,\n clientError\n );\n expect(submitClientMetricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.KEEPALIVE_ERROR,\n expectedData\n );\n });\n\n it('submit unknown registration metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitRegistrationMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n REG_ACTION.REGISTER,\n METRIC_TYPE.OPERATIONAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n undefined,\n undefined,\n undefined\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitRegistrationMetric',\n }\n );\n });\n });\n\n describe('Call Metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit call success metric', () => {\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.CALL, expectedData);\n });\n\n it('submit call failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.CALL_CONTROL\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An invalid status update has been received for the call. Wait a moment and try again.';\n err.type = ERROR_TYPE.FORBIDDEN_ERROR;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockCallAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitCallMetric(\n METRIC_EVENT.CALL_ERROR,\n mockCallAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n callError\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.CALL_ERROR, expectedData);\n });\n\n it('submit unknown call metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitCallMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockCallAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitCallMetric',\n }\n );\n });\n });\n\n describe('Media Metric tests', () => {\n const mockSdp = 'sdpInformation';\n\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit media success metric', () => {\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.MEDIA, expectedData);\n });\n\n it('submit media failure metric', () => {\n const callError = createCallError(\n '',\n {},\n ERROR_TYPE.DEFAULT,\n mockCorrelationId,\n ERROR_LAYER.MEDIA\n );\n\n const err = <CallErrorObject>{};\n\n err.context = {};\n err.message =\n 'An error occurred while parsing the provided information. Wait a moment and try again.';\n err.type = ERROR_TYPE.SERVICE_UNAVAILABLE;\n\n callError.setCallError(err);\n\n const expectedData = {\n tags: {\n action: mockMediaAction,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n local_media_details: mockSdp,\n remote_media_details: mockSdp,\n error: callError.getCallError().message,\n error_type: callError.getCallError().type,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA_ERROR,\n mockMediaAction,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp,\n callError\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.MEDIA_ERROR, expectedData);\n });\n\n it('submit unknown media metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitMediaMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n mockMediaAction,\n METRIC_TYPE.OPERATIONAL,\n mockCallId,\n mockCorrelationId,\n mockSdp,\n mockSdp\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitMediaMetric',\n }\n );\n });\n });\n\n describe('BNR metric tests', () => {\n beforeAll(() => {\n metricManager.setDeviceInfo(mockDeviceInfo);\n });\n\n it('submit bnr enabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n\n it('submit bnr disabled metric', () => {\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_DISABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.BNR_DISABLED, expectedData);\n });\n\n it('submit unknown bnr metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitBNRMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitBNRMetric',\n }\n );\n });\n });\n\n describe('Voicemail metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit voicemail success metric', () => {\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData1);\n\n submitClientMetricSpy.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId'\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL, expectedData2);\n });\n\n it('submit voicemail failure metric', () => {\n const errorMessage = 'User is not authenticated';\n const expectedData1 = {\n tags: {\n action: VOICEMAIL_ACTION.GET_VOICEMAILS,\n device_id: mockDeviceInfo.device.deviceId,\n message_id: undefined,\n error: errorMessage,\n status_code: 401,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n errorMessage,\n 401\n );\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL_ERROR, expectedData1);\n\n submitClientMetricSpy.mockClear();\n\n const expectedData2 = {\n ...expectedData1,\n tags: {...expectedData1.tags, message_id: 'messageId', action: VOICEMAIL_ACTION.DELETE},\n };\n\n metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n VOICEMAIL_ACTION.DELETE,\n METRIC_TYPE.BEHAVIORAL,\n 'messageId',\n errorMessage,\n 401\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.VOICEMAIL_ERROR, expectedData2);\n });\n\n it('submit unknown voicemail metric', () => {\n const logSpy = jest.spyOn(log, 'warn');\n\n metricManager.submitVoicemailMetric(\n 'invalidMetricName' as unknown as METRIC_EVENT,\n VOICEMAIL_ACTION.GET_VOICEMAILS,\n METRIC_TYPE.BEHAVIORAL\n );\n\n expect(submitClientMetricSpy).not.toBeCalled();\n expect(logSpy).toBeCalledOnceWith(\n 'Invalid metric name received. Rejecting request to submit metric.',\n {\n file: 'metric',\n method: 'submitVoicemailMetric',\n }\n );\n });\n });\n\n describe('Calling_Sdk_Version fallback test', () => {\n it('submit metric with fallback version', () => {\n process.env = {};\n metricManager.setDeviceInfo(mockDeviceInfo);\n const expectedData = {\n tags: {\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: VERSION,\n call_id: mockCallId,\n correlation_id: mockCorrelationId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n mockCallId,\n mockCorrelationId\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(METRIC_EVENT.BNR_ENABLED, expectedData);\n });\n });\n\n describe('Upload Logs metric tests', () => {\n beforeAll(() => metricManager.setDeviceInfo(mockDeviceInfo));\n\n it('submit upload logs success metric includes broadworksCorrelationInfo', () => {\n const trackingId = 'track-123';\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: trackingId,\n feedback_id: feedbackId,\n call_id: callId,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n trackingId,\n feedbackId,\n correlationId,\n undefined,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n expectedData\n );\n });\n\n it('submit upload logs failure metric includes error and broadworksCorrelationInfo', () => {\n const feedbackId = 'feed-456';\n const correlationId = 'corr-789';\n const callId = 'call-123';\n const broadworksCorrelationInfo = 'bw-corr-abc';\n const errorStack = 'some error stack';\n\n const expectedData = {\n tags: {\n action: UPLOAD_LOGS_ACTION,\n device_id: mockDeviceInfo.device.deviceId,\n service_indicator: ServiceIndicator.CALLING,\n },\n fields: {\n device_url: mockDeviceInfo.device.clientDeviceUri,\n mobius_url: mockDeviceInfo.device.uri,\n calling_sdk_version: MOCK_VERSION_NUMBER,\n correlation_id: correlationId,\n broadworksCorrelationInfo,\n tracking_id: undefined,\n feedback_id: feedbackId,\n call_id: callId,\n error: errorStack,\n },\n type: METRIC_TYPE.BEHAVIORAL,\n };\n\n metricManager.submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n feedbackId,\n correlationId,\n errorStack,\n callId,\n broadworksCorrelationInfo\n );\n\n expect(submitClientMetricSpy).toBeCalledOnceWith(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n expectedData\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}