@webex/internal-plugin-metrics 2.60.1-next.9 → 2.60.2

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 (68) hide show
  1. package/dist/batcher.js +3 -3
  2. package/dist/batcher.js.map +1 -1
  3. package/dist/call-diagnostic-events-batcher.js +60 -0
  4. package/dist/call-diagnostic-events-batcher.js.map +1 -0
  5. package/dist/client-metrics-batcher.js +3 -3
  6. package/dist/client-metrics-batcher.js.map +1 -1
  7. package/dist/config.js +9 -6
  8. package/dist/config.js.map +1 -1
  9. package/dist/index.js +2 -21
  10. package/dist/index.js.map +1 -1
  11. package/dist/metrics.js +22 -24
  12. package/dist/metrics.js.map +1 -1
  13. package/package.json +19 -27
  14. package/src/batcher.js +0 -1
  15. package/src/call-diagnostic-events-batcher.js +62 -0
  16. package/src/client-metrics-batcher.js +0 -1
  17. package/src/config.js +0 -1
  18. package/src/index.js +15 -0
  19. package/src/metrics.js +16 -17
  20. package/test/unit/spec/batcher.js +0 -2
  21. package/test/unit/spec/call-diagnostic-events-batcher.js +195 -0
  22. package/test/unit/spec/client-metrics-batcher.js +0 -2
  23. package/test/unit/spec/metrics.js +94 -67
  24. package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js +0 -67
  25. package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js.map +0 -1
  26. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +0 -454
  27. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +0 -1
  28. package/dist/call-diagnostic/call-diagnostic-metrics.js +0 -834
  29. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +0 -1
  30. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +0 -344
  31. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +0 -1
  32. package/dist/call-diagnostic/config.js +0 -609
  33. package/dist/call-diagnostic/config.js.map +0 -1
  34. package/dist/metrics.types.js +0 -7
  35. package/dist/metrics.types.js.map +0 -1
  36. package/dist/new-metrics.js +0 -336
  37. package/dist/new-metrics.js.map +0 -1
  38. package/dist/types/batcher.d.ts +0 -2
  39. package/dist/types/call-diagnostic/call-diagnostic-metrics-batcher.d.ts +0 -2
  40. package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +0 -194
  41. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +0 -418
  42. package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +0 -103
  43. package/dist/types/call-diagnostic/config.d.ts +0 -178
  44. package/dist/types/client-metrics-batcher.d.ts +0 -2
  45. package/dist/types/config.d.ts +0 -36
  46. package/dist/types/index.d.ts +0 -13
  47. package/dist/types/metrics.d.ts +0 -3
  48. package/dist/types/metrics.types.d.ts +0 -104
  49. package/dist/types/new-metrics.d.ts +0 -139
  50. package/dist/types/utils.d.ts +0 -6
  51. package/dist/utils.js +0 -26
  52. package/dist/utils.js.map +0 -1
  53. package/src/call-diagnostic/call-diagnostic-metrics-batcher.ts +0 -75
  54. package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +0 -419
  55. package/src/call-diagnostic/call-diagnostic-metrics.ts +0 -898
  56. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +0 -387
  57. package/src/call-diagnostic/config.ts +0 -685
  58. package/src/index.ts +0 -43
  59. package/src/metrics.types.ts +0 -160
  60. package/src/new-metrics.ts +0 -317
  61. package/src/utils.ts +0 -17
  62. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +0 -453
  63. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +0 -505
  64. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +0 -2177
  65. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +0 -621
  66. package/test/unit/spec/new-metrics.ts +0 -266
  67. package/test/unit/spec/utils.ts +0 -22
  68. package/tsconfig.json +0 -6
@@ -1,505 +0,0 @@
1
- import {assert} from '@webex/test-helper-chai';
2
- import CallDiagnosticLatencies from '../../../../src/call-diagnostic/call-diagnostic-metrics-latencies';
3
- import sinon from 'sinon';
4
-
5
- describe('internal-plugin-metrics', () => {
6
- describe('CallDiagnosticLatencies', () => {
7
- let cdl: CallDiagnosticLatencies;
8
- var now = new Date();
9
-
10
- beforeEach(() => {
11
- sinon.createSandbox();
12
- sinon.useFakeTimers(now.getTime());
13
- const webex = {
14
- meetings: {
15
- meetingCollection: {
16
- get: (id: string) => {
17
- if (id === 'meeting-id') {
18
- return {id: 'meeting-id', allowMediaInLobby: true};
19
- }
20
- },
21
- },
22
- },
23
- };
24
-
25
- cdl = new CallDiagnosticLatencies(
26
- {},
27
- {
28
- parent: webex,
29
- }
30
- );
31
- });
32
-
33
- afterEach(() => {
34
- sinon.restore();
35
- });
36
-
37
- it('should save timestamp correctly', () => {
38
- assert.deepEqual(cdl.latencyTimestamps.size, 0);
39
- cdl.saveTimestamp({key: 'client.alert.displayed'});
40
- assert.deepEqual(cdl.latencyTimestamps.size, 1);
41
- assert.deepEqual(cdl.latencyTimestamps.get('client.alert.displayed'), now.getTime());
42
- });
43
-
44
- it('should save latency correctly', () => {
45
- assert.deepEqual(cdl.precomputedLatencies.size, 0);
46
- cdl.saveLatency('client.alert.displayed', 10);
47
- assert.deepEqual(cdl.precomputedLatencies.size, 1);
48
- assert.deepEqual(cdl.precomputedLatencies.get('client.alert.displayed'), 10);
49
- });
50
-
51
- it('should save only first timestamp correctly', () => {
52
- assert.deepEqual(cdl.latencyTimestamps.size, 0);
53
- cdl.saveFirstTimestampOnly('client.alert.displayed', 10);
54
- cdl.saveFirstTimestampOnly('client.alert.displayed', 20);
55
- assert.deepEqual(cdl.latencyTimestamps.get('client.alert.displayed'), 10);
56
- });
57
-
58
- it('should save only first timestamp correctly for client.media.tx.start and client.media.rx.start', () => {
59
- assert.deepEqual(cdl.latencyTimestamps.size, 0);
60
- cdl.saveFirstTimestampOnly('client.media.tx.start', 10);
61
- cdl.saveFirstTimestampOnly('client.media.tx.start', 20);
62
- cdl.saveFirstTimestampOnly('client.media.rx.start', 12);
63
- cdl.saveFirstTimestampOnly('client.media.rx.start', 22);
64
- assert.deepEqual(cdl.latencyTimestamps.get('client.media.tx.start'), 10);
65
- assert.deepEqual(cdl.latencyTimestamps.get('client.media.rx.start'), 12);
66
- });
67
-
68
- it('should update existing property and now add new keys', () => {
69
- assert.deepEqual(cdl.latencyTimestamps.size, 0);
70
- cdl.saveTimestamp({key: 'client.alert.displayed'});
71
- assert.deepEqual(cdl.latencyTimestamps.get('client.alert.displayed'), now.getTime());
72
- cdl.saveTimestamp({key: 'client.alert.displayed', value: 1234});
73
- assert.deepEqual(cdl.latencyTimestamps.get('client.alert.displayed'), 1234);
74
- assert.deepEqual(cdl.latencyTimestamps.size, 1);
75
- });
76
-
77
- it('should clear all timestamps correctly', () => {
78
- cdl.saveTimestamp({key: 'client.alert.displayed'});
79
- cdl.saveTimestamp({key: 'client.alert.removed'});
80
- assert.deepEqual(cdl.latencyTimestamps.size, 2);
81
- cdl.clearTimestamps();
82
- assert.deepEqual(cdl.latencyTimestamps.size, 0);
83
- });
84
-
85
- it('should calculate diff between timestamps correctly', () => {
86
- cdl.saveTimestamp({key: 'client.alert.displayed', value: 10});
87
- cdl.saveTimestamp({key: 'client.alert.removed', value: 20});
88
- const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed');
89
- assert.deepEqual(res, 10);
90
- });
91
-
92
- it('it returns undefined if either one is doesnt exist', () => {
93
- cdl.saveTimestamp({key: 'client.alert.displayed', value: 10});
94
- const res1 = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed');
95
- assert.deepEqual(res1, undefined);
96
- const res2 = cdl.getDiffBetweenTimestamps('client.alert.removed', 'client.alert.displayed');
97
- assert.deepEqual(res2, undefined);
98
- });
99
-
100
- it('calculates getMeetingInfoReqResp correctly', () => {
101
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.request', value: 10});
102
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.response', value: 20});
103
- assert.deepEqual(cdl.getMeetingInfoReqResp(), 10);
104
- });
105
-
106
- it('calculates getMeetingInfoReqResp correctly when duplicate requests/responses are sent', () => {
107
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.request', value: 8});
108
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.response', value: 18});
109
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.request', value: 47});
110
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.response', value: 48});
111
- assert.deepEqual(cdl.getMeetingInfoReqResp(), 10);
112
- });
113
-
114
- describe('saveTimestamp', () => {
115
- afterEach(() => {
116
- sinon.restore();
117
- });
118
-
119
- it('calls saveFirstTimestamp for meeting info request', () => {
120
- const saveFirstTimestamp = sinon.stub(cdl, 'saveFirstTimestampOnly');
121
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.request', value: 10});
122
- cdl.saveTimestamp({key: 'client.alert.displayed', value: 15});
123
- assert.deepEqual(saveFirstTimestamp.callCount, 1);
124
- });
125
-
126
- it('calls saveFirstTimestamp for meeting info response', () => {
127
- const saveFirstTimestamp = sinon.stub(cdl, 'saveFirstTimestampOnly');
128
- cdl.saveTimestamp({key: 'client.alert.displayed', value: 15});
129
- cdl.saveTimestamp({key: 'internal.client.meetinginfo.response', value: 20});
130
- assert.deepEqual(saveFirstTimestamp.callCount, 1);
131
- });
132
- });
133
-
134
- it('calculates getShowInterstitialTime correctly', () => {
135
- cdl.saveTimestamp({key: 'client.interstitial-window.start-launch', value: 10});
136
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 20});
137
- assert.deepEqual(cdl.getShowInterstitialTime(), 10);
138
- });
139
-
140
- it('calculates getCallInitJoinReq correctly', () => {
141
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
142
- cdl.saveTimestamp({key: 'client.locus.join.request', value: 20});
143
- assert.deepEqual(cdl.getCallInitJoinReq(), 10);
144
- });
145
-
146
- it('calculates getJoinReqResp correctly', () => {
147
- cdl.saveTimestamp({
148
- key: 'client.locus.join.request',
149
- value: 10,
150
- });
151
- cdl.saveTimestamp({
152
- key: 'client.locus.join.response',
153
- value: 20,
154
- });
155
- assert.deepEqual(cdl.getJoinReqResp(), 10);
156
- });
157
-
158
- it('calculates getTurnDiscoveryTime correctly', () => {
159
- cdl.saveTimestamp({
160
- key: 'internal.client.add-media.turn-discovery.start',
161
- value: 10,
162
- });
163
- cdl.saveTimestamp({
164
- key: 'internal.client.add-media.turn-discovery.end',
165
- value: 20,
166
- });
167
- assert.deepEqual(cdl.getTurnDiscoveryTime(), 10);
168
- });
169
-
170
- it('calculates getLocalSDPGenRemoteSDPRecv correctly', () => {
171
- cdl.saveTimestamp({
172
- key: 'client.media-engine.local-sdp-generated',
173
- value: 10,
174
- });
175
- cdl.saveTimestamp({
176
- key: 'client.media-engine.remote-sdp-received',
177
- value: 20,
178
- });
179
- assert.deepEqual(cdl.getLocalSDPGenRemoteSDPRecv(), 10);
180
- });
181
-
182
- it('calculates getICESetupTime correctly', () => {
183
- cdl.saveTimestamp({
184
- key: 'client.ice.start',
185
- value: 10,
186
- });
187
- cdl.saveTimestamp({
188
- key: 'client.ice.end',
189
- value: 20,
190
- });
191
- assert.deepEqual(cdl.getICESetupTime(), 10);
192
- });
193
-
194
- it('calculates getAudioICESetupTime correctly', () => {
195
- cdl.saveTimestamp({
196
- key: 'client.ice.start',
197
- value: 10,
198
- });
199
- cdl.saveTimestamp({
200
- key: 'client.ice.end',
201
- value: 20,
202
- });
203
- assert.deepEqual(cdl.getAudioICESetupTime(), 10);
204
- });
205
-
206
- it('calculates getVideoICESetupTime correctly', () => {
207
- cdl.saveTimestamp({
208
- key: 'client.ice.start',
209
- value: 10,
210
- });
211
- cdl.saveTimestamp({
212
- key: 'client.ice.end',
213
- value: 20,
214
- });
215
- assert.deepEqual(cdl.getVideoICESetupTime(), 10);
216
- });
217
-
218
- it('calculates getShareICESetupTime correctly', () => {
219
- cdl.saveTimestamp({
220
- key: 'client.ice.start',
221
- value: 10,
222
- });
223
- cdl.saveTimestamp({
224
- key: 'client.ice.end',
225
- value: 20,
226
- });
227
- assert.deepEqual(cdl.getShareICESetupTime(), 10);
228
- });
229
-
230
- it('calculates getStayLobbyTime correctly', () => {
231
- cdl.saveTimestamp({
232
- key: 'client.locus.join.response',
233
- value: 10,
234
- });
235
- cdl.saveTimestamp({
236
- key: 'internal.host.meeting.participant.admitted',
237
- value: 20,
238
- });
239
- assert.deepEqual(cdl.getStayLobbyTime(), 10);
240
- });
241
-
242
- it('calculates getPageJMT correctly', () => {
243
- cdl.saveLatency('internal.client.pageJMT', 10);
244
- assert.deepEqual(cdl.getPageJMT(), 10);
245
- });
246
-
247
- it('calculates getClickToInterstitial correctly', () => {
248
- cdl.saveTimestamp({
249
- key: 'internal.client.meeting.click.joinbutton',
250
- value: 10,
251
- });
252
- cdl.saveTimestamp({
253
- key: 'internal.client.meeting.interstitial-window.showed',
254
- value: 20,
255
- });
256
- assert.deepEqual(cdl.getClickToInterstitial(), 10);
257
- });
258
-
259
- it('calculates getClickToInterstitial without join button timestamp', () => {
260
- cdl.saveLatency('internal.click.to.interstitial', 5);
261
- cdl.saveTimestamp({
262
- key: 'internal.client.meeting.interstitial-window.showed',
263
- value: 20,
264
- });
265
- assert.deepEqual(cdl.getClickToInterstitial(), 5);
266
- });
267
-
268
- it('calculates getInterstitialToJoinOK correctly', () => {
269
- cdl.saveTimestamp({
270
- key: 'internal.client.interstitial-window.click.joinbutton',
271
- value: 10,
272
- });
273
- cdl.saveTimestamp({
274
- key: 'client.locus.join.response',
275
- value: 20,
276
- });
277
- assert.deepEqual(cdl.getInterstitialToJoinOK(), 10);
278
- });
279
-
280
- it('calculates getCallInitMediaEngineReady correctly', () => {
281
- cdl.saveTimestamp({
282
- key: 'internal.client.interstitial-window.click.joinbutton',
283
- value: 10,
284
- });
285
- cdl.saveTimestamp({
286
- key: 'client.media-engine.ready',
287
- value: 20,
288
- });
289
- assert.deepEqual(cdl.getCallInitMediaEngineReady(), 10);
290
- });
291
-
292
- it('calculates getTotalJMT correctly', () => {
293
- cdl.saveTimestamp({
294
- key: 'internal.client.interstitial-window.click.joinbutton',
295
- value: 5,
296
- });
297
- cdl.saveTimestamp({
298
- key: 'internal.client.meeting.click.joinbutton',
299
- value: 10,
300
- });
301
- cdl.saveTimestamp({
302
- key: 'internal.client.meeting.interstitial-window.showed',
303
- value: 20,
304
- });
305
- cdl.saveTimestamp({
306
- key: 'client.locus.join.response',
307
- value: 40,
308
- });
309
- assert.deepEqual(cdl.getTotalJMT(), 45);
310
- });
311
-
312
- it('calculates getTotalMediaJMT correctly', () => {
313
- cdl.saveTimestamp({
314
- key: 'internal.client.meeting.click.joinbutton',
315
- value: 5,
316
- });
317
- cdl.saveTimestamp({
318
- key: 'internal.client.meeting.interstitial-window.showed',
319
- value: 8,
320
- });
321
- cdl.saveTimestamp({
322
- key: 'internal.client.interstitial-window.click.joinbutton',
323
- value: 10,
324
- });
325
- cdl.saveTimestamp({
326
- key: 'client.locus.join.request',
327
- value: 12,
328
- });
329
- cdl.saveTimestamp({
330
- key: 'client.locus.join.response',
331
- value: 20,
332
- });
333
- cdl.saveTimestamp({
334
- key: 'internal.host.meeting.participant.admitted',
335
- value: 24,
336
- });
337
- cdl.saveTimestamp({
338
- key: 'client.ice.start',
339
- value: 30,
340
- });
341
- cdl.saveTimestamp({
342
- key: 'client.ice.end',
343
- value: 40,
344
- });
345
- assert.deepEqual(cdl.getTotalMediaJMT(), 27);
346
- });
347
-
348
- it('calculates getTotalMediaJMT correctly with allowMediaInLobby true', () => {
349
- cdl.saveTimestamp({
350
- key: 'internal.client.meeting.click.joinbutton',
351
- value: 5,
352
- options: {meetingId: 'meeting-id'},
353
- });
354
- cdl.saveTimestamp({
355
- key: 'internal.client.meeting.interstitial-window.showed',
356
- value: 8,
357
- });
358
- cdl.saveTimestamp({
359
- key: 'internal.client.interstitial-window.click.joinbutton',
360
- value: 10,
361
- });
362
- cdl.saveTimestamp({
363
- key: 'client.locus.join.request',
364
- value: 12,
365
- });
366
- cdl.saveTimestamp({
367
- key: 'client.locus.join.response',
368
- value: 20,
369
- });
370
- cdl.saveTimestamp({
371
- key: 'internal.host.meeting.participant.admitted',
372
- value: 24,
373
- });
374
- cdl.saveTimestamp({
375
- key: 'client.ice.start',
376
- value: 30,
377
- });
378
- cdl.saveTimestamp({
379
- key: 'client.ice.end',
380
- value: 40,
381
- });
382
- assert.deepEqual(cdl.getTotalMediaJMT(), 31);
383
- });
384
-
385
- it('calculates getJoinConfJMT correctly', () => {
386
- cdl.saveTimestamp({
387
- key: 'client.locus.join.request',
388
- value: 10,
389
- });
390
- cdl.saveTimestamp({
391
- key: 'client.locus.join.response',
392
- value: 20,
393
- });
394
- cdl.saveTimestamp({
395
- key: 'client.ice.start',
396
- value: 30,
397
- });
398
- cdl.saveTimestamp({
399
- key: 'client.ice.end',
400
- value: 40,
401
- });
402
- assert.deepEqual(cdl.getJoinConfJMT(), 20);
403
- });
404
-
405
- it('calculates getClientJMT correctly', () => {
406
- cdl.saveTimestamp({
407
- key: 'internal.client.interstitial-window.click.joinbutton',
408
- value: 2,
409
- });
410
- cdl.saveTimestamp({
411
- key: 'client.locus.join.request',
412
- value: 6,
413
- });
414
- cdl.saveTimestamp({
415
- key: 'client.locus.join.response',
416
- value: 8,
417
- });
418
- cdl.saveTimestamp({
419
- key: 'client.ice.start',
420
- value: 10,
421
- });
422
- cdl.saveTimestamp({
423
- key: 'client.ice.end',
424
- value: 11,
425
- });
426
- assert.deepEqual(cdl.getClientJMT(), 3);
427
- });
428
-
429
- it('calculates getAudioJoinRespRxStart correctly', () => {
430
- cdl.saveTimestamp({
431
- key: 'client.locus.join.response',
432
- value: 5,
433
- });
434
- cdl.saveTimestamp({
435
- key: 'client.media.rx.start',
436
- value: 7,
437
- });
438
- assert.deepEqual(cdl.getAudioJoinRespRxStart(), 2);
439
- });
440
-
441
- it('calculates getVideoJoinRespRxStart correctly', () => {
442
- cdl.saveTimestamp({
443
- key: 'client.locus.join.response',
444
- value: 5,
445
- });
446
- cdl.saveTimestamp({
447
- key: 'client.media.rx.start',
448
- value: 7,
449
- });
450
- assert.deepEqual(cdl.getVideoJoinRespRxStart(), 2);
451
- });
452
-
453
- it('calculates getAudioJoinRespTxStart correctly', () => {
454
- cdl.saveTimestamp({
455
- key: 'client.locus.join.response',
456
- value: 5,
457
- });
458
- cdl.saveTimestamp({
459
- key: 'client.media.tx.start',
460
- value: 7,
461
- });
462
- assert.deepEqual(cdl.getAudioJoinRespTxStart(), 2);
463
- });
464
-
465
- it('calculates getVideoJoinRespTxStart correctly', () => {
466
- cdl.saveTimestamp({
467
- key: 'client.locus.join.response',
468
- value: 5,
469
- });
470
- cdl.saveTimestamp({
471
- key: 'client.media.tx.start',
472
- value: 7,
473
- });
474
- assert.deepEqual(cdl.getVideoJoinRespTxStart(), 2);
475
- });
476
-
477
- it('calculates getInterstitialToMediaOKJMT correctly', () => {
478
- cdl.saveTimestamp({
479
- key: 'internal.client.interstitial-window.click.joinbutton',
480
- value: 4,
481
- });
482
- cdl.saveTimestamp({
483
- key: 'client.locus.join.response',
484
- value: 10,
485
- });
486
- cdl.saveTimestamp({
487
- key: 'internal.host.meeting.participant.admitted',
488
- value: 12,
489
- });
490
- cdl.saveTimestamp({
491
- key: 'client.media.rx.start',
492
- value: 14,
493
- });
494
- cdl.saveTimestamp({
495
- key: 'client.media.tx.start',
496
- value: 15,
497
- });
498
- cdl.saveTimestamp({
499
- key: 'client.media.rx.start',
500
- value: 16,
501
- });
502
- assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 8);
503
- });
504
- });
505
- });