@webex/internal-plugin-metrics 3.3.1 → 3.4.0-next.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.
Files changed (38) hide show
  1. package/dist/behavioral/behavioral-metrics.js +199 -0
  2. package/dist/behavioral/behavioral-metrics.js.map +1 -0
  3. package/dist/behavioral/config.js +11 -0
  4. package/dist/behavioral/config.js.map +1 -0
  5. package/dist/call-diagnostic/call-diagnostic-metrics.js +3 -0
  6. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  7. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +14 -11
  8. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
  9. package/dist/call-diagnostic/config.js +19 -13
  10. package/dist/call-diagnostic/config.js.map +1 -1
  11. package/dist/index.js +7 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/metrics.js +1 -1
  14. package/dist/metrics.types.js.map +1 -1
  15. package/dist/new-metrics.js +31 -6
  16. package/dist/new-metrics.js.map +1 -1
  17. package/dist/types/behavioral/behavioral-metrics.d.ts +63 -0
  18. package/dist/types/behavioral/config.d.ts +1 -0
  19. package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +3 -2
  20. package/dist/types/call-diagnostic/config.d.ts +2 -0
  21. package/dist/types/index.d.ts +2 -1
  22. package/dist/types/metrics.types.d.ts +28 -7
  23. package/dist/types/new-metrics.d.ts +14 -6
  24. package/package.json +11 -11
  25. package/src/behavioral/behavioral-metrics.ts +179 -0
  26. package/src/behavioral/config.ts +3 -0
  27. package/src/call-diagnostic/call-diagnostic-metrics.ts +3 -0
  28. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +16 -17
  29. package/src/call-diagnostic/config.ts +9 -2
  30. package/src/index.ts +2 -0
  31. package/src/metrics.types.ts +59 -8
  32. package/src/new-metrics.ts +34 -8
  33. package/test/unit/spec/behavioral/behavioral-metrics.ts +164 -0
  34. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +48 -52
  35. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +1 -1
  36. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +9 -0
  37. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +41 -22
  38. package/test/unit/spec/prelogin-metrics-batcher.ts +1 -1
@@ -7,6 +7,7 @@ import CallDiagnosticLatencies from '../../../../src/call-diagnostic/call-diagno
7
7
  import {
8
8
  DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
9
9
  ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,
10
+ ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,
10
11
  ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
11
12
  MISSING_ROAP_ANSWER_CLIENT_CODE,
12
13
  } from '../../../../src/call-diagnostic/config';
@@ -374,6 +375,12 @@ describe('internal-plugin-metrics', () => {
374
375
  joinTimes: {
375
376
  localSDPGenRemoteSDPRecv: undefined,
376
377
  },
378
+ audioSetupDelay: {
379
+ joinRespRxStart: undefined,
380
+ },
381
+ videoSetupDelay: {
382
+ joinRespRxStart: undefined,
383
+ },
377
384
  },
378
385
  ],
379
386
  [
@@ -388,14 +395,12 @@ describe('internal-plugin-metrics', () => {
388
395
  },
389
396
  ],
390
397
  [
391
- 'client.mediaquality.event',
398
+ 'client.media.tx.start',
392
399
  {
393
400
  audioSetupDelay: {
394
- joinRespRxStart: undefined,
395
401
  joinRespTxStart: undefined,
396
402
  },
397
403
  videoSetupDelay: {
398
- joinRespRxStart: undefined,
399
404
  joinRespTxStart: undefined,
400
405
  },
401
406
  },
@@ -406,20 +411,28 @@ describe('internal-plugin-metrics', () => {
406
411
  });
407
412
  });
408
413
 
409
- it('calls getBuildType correctly', () => {
410
- const getBuildTypeSpy = sinon.spy(CallDiagnosticUtils, 'getBuildType');
411
- const markAsTestEvent = true;
412
- const webClientDomain = 'https://web.webex.com';
413
-
414
- // just submit any event
415
- prepareDiagnosticMetricItem(webex, {
414
+ it('getBuildType returns correct value', () => {
415
+ const item: any = {
416
416
  eventPayload: {
417
- event: {name: 'client.exit.app', eventData: {markAsTestEvent, webClientDomain}},
417
+ event: {
418
+ name: 'client.exit.app',
419
+ eventData: {
420
+ markAsTestEvent: true,
421
+ webClientDomain: 'https://web.webex.com'
422
+ }
423
+ },
418
424
  },
419
425
  type: ['diagnostic-event'],
420
- });
426
+ };
421
427
 
422
- assert.calledOnceWithExactly(getBuildTypeSpy, webClientDomain, markAsTestEvent);
428
+ // just submit any event
429
+ prepareDiagnosticMetricItem(webex, item);
430
+ assert.deepEqual(item.eventPayload.origin.buildType, 'test');
431
+
432
+ delete item.eventPayload.origin.buildType;
433
+ item.eventPayload.event.eventData.markAsTestEvent = false;
434
+ prepareDiagnosticMetricItem(webex, item);
435
+ assert.deepEqual(item.eventPayload.origin.buildType, 'prod');
423
436
  });
424
437
  });
425
438
 
@@ -605,41 +618,47 @@ describe('internal-plugin-metrics', () => {
605
618
  [
606
619
  {
607
620
  signalingState: 'have-local-offer',
608
- iceConnectionState: 'connected',
621
+ iceConnected: false,
609
622
  turnServerUsed: true,
610
623
  errorCode: MISSING_ROAP_ANSWER_CLIENT_CODE,
624
+ unreachable: false,
611
625
  },
612
626
  {
613
627
  signalingState: 'stable',
614
- iceConnectionState: 'connected',
628
+ iceConnected: true,
615
629
  turnServerUsed: true,
616
630
  errorCode: DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
631
+ unreachable: false,
617
632
  },
618
633
  {
619
634
  signalingState: 'stable',
620
- iceConnectionState: 'disconnected',
635
+ iceConnected: false,
621
636
  turnServerUsed: true,
622
- errorCode: DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
637
+ errorCode: ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
638
+ unreachable: false,
623
639
  },
624
640
  {
625
641
  signalingState: 'stable',
626
- iceConnectionState: 'failed',
642
+ iceConnected: false,
627
643
  turnServerUsed: true,
628
- errorCode: ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
644
+ errorCode: ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,
645
+ unreachable: true,
629
646
  },
630
647
  {
631
648
  signalingState: 'stable',
632
- iceConnectionState: 'failed',
649
+ iceConnected: false,
633
650
  turnServerUsed: false,
634
651
  errorCode: ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,
652
+ unreachable: false,
635
653
  },
636
- ].forEach(({signalingState, iceConnectionState, turnServerUsed, errorCode}: any) => {
654
+ ].forEach(({signalingState, iceConnected, turnServerUsed, errorCode, unreachable}: any) => {
637
655
  it('returns expected result', () => {
638
656
  assert.deepEqual(
639
657
  generateClientErrorCodeForIceFailure({
640
658
  signalingState,
641
- iceConnectionState,
659
+ iceConnected,
642
660
  turnServerUsed,
661
+ unreachable,
643
662
  }),
644
663
  errorCode
645
664
  );
@@ -9,7 +9,6 @@ import MockWebex from '@webex/test-helper-mock-webex';
9
9
  import sinon from 'sinon';
10
10
  import FakeTimers from '@sinonjs/fake-timers';
11
11
  import {NewMetrics} from '@webex/internal-plugin-metrics';
12
- import {uniqueId} from 'lodash';
13
12
 
14
13
  const flushPromises = () => new Promise(setImmediate);
15
14
 
@@ -66,6 +65,7 @@ describe('internal-plugin-metrics', () => {
66
65
 
67
66
  // matching because the request includes a symbol key: value pair and sinon cannot handle to compare it..
68
67
  assert.match(webexRequestArgs, {
68
+ //@ts-ignore
69
69
  body: {
70
70
  metrics: [
71
71
  {