@webex/internal-plugin-metrics 3.12.0-next.9 → 3.12.0-task-refactor.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 (42) hide show
  1. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +34 -48
  2. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
  3. package/dist/call-diagnostic/call-diagnostic-metrics.js +0 -5
  4. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  5. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +4 -39
  6. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
  7. package/dist/call-diagnostic/config.js +1 -3
  8. package/dist/call-diagnostic/config.js.map +1 -1
  9. package/dist/generic-metrics.js +6 -8
  10. package/dist/generic-metrics.js.map +1 -1
  11. package/dist/index.js +0 -7
  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 +20 -56
  16. package/dist/new-metrics.js.map +1 -1
  17. package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +0 -9
  18. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +20 -34
  19. package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +2 -23
  20. package/dist/types/call-diagnostic/config.d.ts +19 -2
  21. package/dist/types/config.d.ts +15 -15
  22. package/dist/types/index.d.ts +1 -2
  23. package/dist/types/metrics.types.d.ts +2 -2
  24. package/dist/types/new-metrics.d.ts +0 -12
  25. package/package.json +11 -11
  26. package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +44 -97
  27. package/src/call-diagnostic/call-diagnostic-metrics.ts +0 -6
  28. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +2 -44
  29. package/src/call-diagnostic/config.ts +0 -2
  30. package/src/generic-metrics.ts +6 -6
  31. package/src/index.ts +0 -2
  32. package/src/metrics.types.ts +2 -2
  33. package/src/new-metrics.ts +0 -42
  34. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +11 -38
  35. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +303 -251
  36. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +0 -44
  37. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +3 -65
  38. package/dist/prelogin-metrics.js +0 -106
  39. package/dist/prelogin-metrics.js.map +0 -1
  40. package/dist/types/prelogin-metrics.d.ts +0 -47
  41. package/src/prelogin-metrics.ts +0 -94
  42. package/test/unit/spec/prelogin-metrics.ts +0 -132
@@ -143,7 +143,7 @@ describe('internal-plugin-metrics', () => {
143
143
  cdl.saveTimestamp({key: 'client.alert.removed', value: 50});
144
144
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
145
145
  minimum: 0,
146
- maximum: 100,
146
+ maximum: 100
147
147
  });
148
148
  assert.deepEqual(res, 40);
149
149
  });
@@ -153,7 +153,7 @@ describe('internal-plugin-metrics', () => {
153
153
  cdl.saveTimestamp({key: 'client.alert.removed', value: 45});
154
154
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
155
155
  minimum: 10,
156
- maximum: 100,
156
+ maximum: 100
157
157
  });
158
158
  assert.deepEqual(res, 10);
159
159
  });
@@ -163,7 +163,7 @@ describe('internal-plugin-metrics', () => {
163
163
  cdl.saveTimestamp({key: 'client.alert.removed', value: 210});
164
164
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
165
165
  minimum: 0,
166
- maximum: 100,
166
+ maximum: 100
167
167
  });
168
168
  assert.deepEqual(res, 100);
169
169
  });
@@ -172,7 +172,7 @@ describe('internal-plugin-metrics', () => {
172
172
  cdl.saveTimestamp({key: 'client.alert.displayed', value: 50});
173
173
  cdl.saveTimestamp({key: 'client.alert.removed', value: 45});
174
174
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
175
- maximum: 100,
175
+ maximum: 100
176
176
  });
177
177
  assert.deepEqual(res, 0);
178
178
  });
@@ -181,7 +181,7 @@ describe('internal-plugin-metrics', () => {
181
181
  cdl.saveTimestamp({key: 'client.alert.displayed', value: 10});
182
182
  cdl.saveTimestamp({key: 'client.alert.removed', value: 2000});
183
183
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
184
- minimum: 5,
184
+ minimum: 5
185
185
  });
186
186
  assert.deepEqual(res, 1990);
187
187
  });
@@ -191,7 +191,7 @@ describe('internal-plugin-metrics', () => {
191
191
  cdl.saveTimestamp({key: 'client.alert.removed', value: 50});
192
192
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
193
193
  minimum: 10,
194
- maximum: 1000,
194
+ maximum: 1000
195
195
  });
196
196
  assert.deepEqual(res, 10);
197
197
  });
@@ -200,7 +200,7 @@ describe('internal-plugin-metrics', () => {
200
200
  cdl.saveTimestamp({key: 'client.alert.displayed', value: 10});
201
201
  const res = cdl.getDiffBetweenTimestamps('client.alert.displayed', 'client.alert.removed', {
202
202
  minimum: 0,
203
- maximum: 100,
203
+ maximum: 100
204
204
  });
205
205
  assert.deepEqual(res, undefined);
206
206
  });
@@ -406,7 +406,7 @@ describe('internal-plugin-metrics', () => {
406
406
  });
407
407
 
408
408
  it('calculates getShowInterstitialTime correctly', () => {
409
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
409
+ cdl.saveTimestamp({key: 'client.interstitial-window.start-launch', value: 10});
410
410
  cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 20});
411
411
  assert.deepEqual(cdl.getShowInterstitialTime(), 10);
412
412
  });
@@ -509,60 +509,16 @@ describe('internal-plugin-metrics', () => {
509
509
 
510
510
  it('calculates getStayLobbyTime correctly', () => {
511
511
  cdl.saveTimestamp({
512
- key: 'client.lobby.entered',
512
+ key: 'client.locus.join.response',
513
513
  value: 10,
514
514
  });
515
515
  cdl.saveTimestamp({
516
- key: 'client.lobby.exited',
516
+ key: 'internal.host.meeting.participant.admitted',
517
517
  value: 20,
518
518
  });
519
519
  assert.deepEqual(cdl.getStayLobbyTime(), 10);
520
520
  });
521
521
 
522
- describe('getStayLobbyTimeCappedBy', () => {
523
- it('returns 0 when lobbyStartTimestamp is missing', () => {
524
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 100});
525
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 0);
526
- });
527
-
528
- it('returns undefined when endTimestampKey is missing', () => {
529
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
530
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), undefined);
531
- });
532
-
533
- it('uses maximumEndTimestamp when lobby end does not exist', () => {
534
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
535
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
536
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 40);
537
- });
538
-
539
- it('uses lobby end when it is before maximumEndTimestamp', () => {
540
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
541
- cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
542
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
543
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 20);
544
- });
545
-
546
- it('uses maximumEndTimestamp when lobby end is after it', () => {
547
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
548
- cdl.saveTimestamp({key: 'client.lobby.exited', value: 60});
549
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
550
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 40);
551
- });
552
-
553
- it('clamps to 0 when result would be negative', () => {
554
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 100});
555
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
556
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 0);
557
- });
558
-
559
- it('clamps to MAX_INTEGER when result is very large', () => {
560
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 0});
561
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 2147483648});
562
- assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 2147483647);
563
- });
564
- });
565
-
566
522
  it('calculates getPageJMT correctly', () => {
567
523
  cdl.saveLatency('internal.client.pageJMT', 10);
568
524
  assert.deepEqual(cdl.getPageJMT(), 10);
@@ -668,8 +624,15 @@ describe('internal-plugin-metrics', () => {
668
624
  });
669
625
 
670
626
  it('calculates getCallInitMediaEngineReady correctly', () => {
671
- sinon.stub(cdl, 'getInterstitialToMediaOKJMT').returns(42);
672
- assert.deepEqual(cdl.getCallInitMediaEngineReady(), 42);
627
+ cdl.saveTimestamp({
628
+ key: 'internal.client.interstitial-window.click.joinbutton',
629
+ value: 10,
630
+ });
631
+ cdl.saveTimestamp({
632
+ key: 'client.media-engine.ready',
633
+ value: 20,
634
+ });
635
+ assert.deepEqual(cdl.getCallInitMediaEngineReady(), 10);
673
636
  });
674
637
 
675
638
  it('calculates getTotalJMT correctly', () => {
@@ -693,56 +656,56 @@ describe('internal-plugin-metrics', () => {
693
656
  });
694
657
 
695
658
  it('calculates getTotalJMT correctly when clickToInterstitial is 0', () => {
696
- cdl.saveLatency('internal.click.to.interstitial', 0);
697
- cdl.saveTimestamp({
698
- key: 'internal.client.interstitial-window.click.joinbutton',
699
- value: 20,
700
- });
701
- cdl.saveTimestamp({
702
- key: 'client.locus.join.response',
703
- value: 40,
659
+ cdl.saveLatency('internal.click.to.interstitial', 0);
660
+ cdl.saveTimestamp({
661
+ key: 'internal.client.interstitial-window.click.joinbutton',
662
+ value: 20,
663
+ });
664
+ cdl.saveTimestamp({
665
+ key: 'client.locus.join.response',
666
+ value: 40,
667
+ });
668
+ assert.deepEqual(cdl.getTotalJMT(), 20);
704
669
  });
705
- assert.deepEqual(cdl.getTotalJMT(), 20);
706
- });
707
670
 
708
- it('calculates getTotalJMT correctly when interstitialClickJoinToJoinLocusResponse is 0', () => {
709
- cdl.saveTimestamp({
710
- key: 'internal.client.interstitial-window.click.joinbutton',
711
- value: 40,
712
- });
713
- cdl.saveLatency('internal.click.to.interstitial', 12);
714
- cdl.saveTimestamp({
715
- key: 'client.locus.join.response',
716
- value: 40,
671
+ it('calculates getTotalJMT correctly when interstitialToJoinOk is 0', () => {
672
+ cdl.saveTimestamp({
673
+ key: 'internal.client.interstitial-window.click.joinbutton',
674
+ value: 40,
675
+ });
676
+ cdl.saveLatency('internal.click.to.interstitial', 12);
677
+ cdl.saveTimestamp({
678
+ key: 'client.locus.join.response',
679
+ value: 40,
680
+ });
681
+ assert.deepEqual(cdl.getTotalJMT(), 12);
717
682
  });
718
- assert.deepEqual(cdl.getTotalJMT(), 12);
719
- });
720
683
 
721
- it('calculates getTotalJMT correctly when both clickToInterstitial and interstitialClickJoinToJoinLocusResponse are 0', () => {
722
- cdl.saveTimestamp({
723
- key: 'internal.client.interstitial-window.click.joinbutton',
724
- value: 40,
725
- });
726
- cdl.saveLatency('internal.click.to.interstitial', 0);
727
- cdl.saveTimestamp({
728
- key: 'client.locus.join.response',
729
- value: 40,
684
+ it('calculates getTotalJMT correctly when both clickToInterstitial and interstitialToJoinOk are 0', () => {
685
+ cdl.saveTimestamp({
686
+ key: 'internal.client.interstitial-window.click.joinbutton',
687
+ value: 40,
688
+ });
689
+ cdl.saveLatency('internal.click.to.interstitial', 0);
690
+ cdl.saveTimestamp({
691
+ key: 'client.locus.join.response',
692
+ value: 40,
693
+ });
694
+ assert.deepEqual(cdl.getTotalJMT(), 0);
730
695
  });
731
- assert.deepEqual(cdl.getTotalJMT(), 0);
732
- });
733
696
 
734
- it('calculates getTotalJMT correctly when both clickToInterstitial is not a number', () => {
735
- cdl.saveTimestamp({
736
- key: 'internal.client.interstitial-window.click.joinbutton',
737
- value: 40,
738
- });
739
- cdl.saveLatency('internal.click.to.interstitial', 'eleven' as unknown as number);
740
- cdl.saveTimestamp({
741
- key: 'client.locus.join.response',
742
- value: 40,
697
+ it('calculates getTotalJMT correctly when both clickToInterstitial is not a number', () => {
698
+ cdl.saveTimestamp({
699
+ key: 'internal.client.interstitial-window.click.joinbutton',
700
+ value: 40,
701
+ });
702
+ cdl.saveLatency('internal.click.to.interstitial', 'eleven' as unknown as number);
703
+ cdl.saveTimestamp({
704
+ key: 'client.locus.join.response',
705
+ value: 40,
706
+ });
707
+ assert.deepEqual(cdl.getTotalJMT(), undefined);
743
708
  });
744
- assert.deepEqual(cdl.getTotalJMT(), undefined);
745
- });
746
709
 
747
710
  it('calculates getTotalJMT correctly when it is greater than MAX_INTEGER', () => {
748
711
  cdl.saveTimestamp({
@@ -774,178 +737,283 @@ describe('internal-plugin-metrics', () => {
774
737
  key: 'client.locus.join.response',
775
738
  value: 40,
776
739
  });
777
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 30);
740
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 45);
778
741
  });
779
742
 
780
- it('calculates getTotalJMTWithUserDelay correctly when clickToInterstitialWithUserDelay is 0', () => {
781
- cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
743
+ it('calculates getTotalJMTWithUserDelay correctly when clickToInterstitialWithUserDelay is 0', () => {
744
+ cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
745
+ cdl.saveTimestamp({
746
+ key: 'internal.client.interstitial-window.click.joinbutton',
747
+ value: 20,
748
+ });
749
+ cdl.saveTimestamp({
750
+ key: 'client.locus.join.response',
751
+ value: 40,
752
+ });
753
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 20);
754
+ });
755
+
756
+ it('calculates getTotalJMTWithUserDelay correctly when interstitialToJoinOk is 0', () => {
757
+ cdl.saveTimestamp({
758
+ key: 'internal.client.interstitial-window.click.joinbutton',
759
+ value: 40,
760
+ });
761
+ cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 12);
762
+ cdl.saveTimestamp({
763
+ key: 'client.locus.join.response',
764
+ value: 40,
765
+ });
766
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 12);
767
+ });
768
+
769
+ it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialToJoinOk are 0', () => {
770
+ cdl.saveTimestamp({
771
+ key: 'internal.client.interstitial-window.click.joinbutton',
772
+ value: 40,
773
+ });
774
+ cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
775
+ cdl.saveTimestamp({
776
+ key: 'client.locus.join.response',
777
+ value: 40,
778
+ });
779
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 0);
780
+ });
781
+
782
+ it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay is not a number', () => {
783
+ cdl.saveTimestamp({
784
+ key: 'internal.client.interstitial-window.click.joinbutton',
785
+ value: 40,
786
+ });
787
+ cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 'eleven' as unknown as number);
788
+ cdl.saveTimestamp({
789
+ key: 'client.locus.join.response',
790
+ value: 40,
791
+ });
792
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), undefined);
793
+ });
794
+
795
+ it('calculates getTotalJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
796
+ cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
797
+ cdl.saveTimestamp({
798
+ key: 'internal.client.interstitial-window.click.joinbutton',
799
+ value: 20,
800
+ });
801
+ cdl.saveTimestamp({
802
+ key: 'client.locus.join.response',
803
+ value: 40,
804
+ });
805
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 2147483647);
806
+ });
807
+
808
+ it('calculates getTotalMediaJMT correctly', () => {
809
+ cdl.saveTimestamp({
810
+ key: 'internal.client.meeting.click.joinbutton',
811
+ value: 5,
812
+ });
782
813
  cdl.saveTimestamp({
783
814
  key: 'internal.client.meeting.interstitial-window.showed',
784
- value: 20,
815
+ value: 8,
785
816
  });
786
817
  cdl.saveTimestamp({
787
- key: 'client.locus.join.response',
788
- value: 40,
818
+ key: 'internal.client.interstitial-window.click.joinbutton',
819
+ value: 10,
789
820
  });
790
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 20);
791
- });
792
-
793
- it('calculates getTotalJMTWithUserDelay correctly when interstitialShowedToJoinLocusResponse is 0', () => {
794
821
  cdl.saveTimestamp({
795
- key: 'internal.client.meeting.interstitial-window.showed',
796
- value: 40,
822
+ key: 'client.locus.join.request',
823
+ value: 12,
797
824
  });
798
- cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 12);
799
825
  cdl.saveTimestamp({
800
826
  key: 'client.locus.join.response',
827
+ value: 20,
828
+ });
829
+ cdl.saveTimestamp({
830
+ key: 'internal.host.meeting.participant.admitted',
831
+ value: 24,
832
+ });
833
+ cdl.saveTimestamp({
834
+ key: 'client.ice.start',
835
+ value: 30,
836
+ });
837
+ cdl.saveTimestamp({
838
+ key: 'client.ice.end',
801
839
  value: 40,
802
840
  });
803
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 12);
841
+ assert.deepEqual(cdl.getTotalMediaJMT(), 27);
804
842
  });
805
843
 
806
- it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialShowedToJoinLocusResponse are 0', () => {
844
+ it('calculates getTotalMediaJMT correctly when it is greater than MAX_INTEGER', () => {
845
+ cdl.saveTimestamp({
846
+ key: 'internal.client.meeting.click.joinbutton',
847
+ value: 5,
848
+ });
807
849
  cdl.saveTimestamp({
808
850
  key: 'internal.client.meeting.interstitial-window.showed',
809
- value: 40,
851
+ value: 8,
852
+ });
853
+ cdl.saveTimestamp({
854
+ key: 'internal.client.interstitial-window.click.joinbutton',
855
+ value: 10,
856
+ });
857
+ cdl.saveTimestamp({
858
+ key: 'client.locus.join.request',
859
+ value: 12,
810
860
  });
811
- cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
812
861
  cdl.saveTimestamp({
813
862
  key: 'client.locus.join.response',
814
- value: 40,
863
+ value: 2147483700,
864
+ });
865
+ cdl.saveTimestamp({
866
+ key: 'internal.host.meeting.participant.admitted',
867
+ value: 2147483800,
815
868
  });
816
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 0);
869
+ cdl.saveTimestamp({
870
+ key: 'client.ice.start',
871
+ value: 30,
872
+ });
873
+ cdl.saveTimestamp({
874
+ key: 'client.ice.end',
875
+ value: 100,
876
+ });
877
+ assert.deepEqual(cdl.getTotalMediaJMT(), 2147483647);
817
878
  });
818
879
 
819
- it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay is not a number', () => {
880
+ it('calculates getTotalMediaJMT correctly with allowMediaInLobby true', () => {
881
+ cdl.saveTimestamp({
882
+ key: 'internal.client.meeting.click.joinbutton',
883
+ value: 5,
884
+ options: {meetingId: 'meeting-id'},
885
+ });
820
886
  cdl.saveTimestamp({
821
887
  key: 'internal.client.meeting.interstitial-window.showed',
822
- value: 40,
888
+ value: 8,
889
+ });
890
+ cdl.saveTimestamp({
891
+ key: 'internal.client.interstitial-window.click.joinbutton',
892
+ value: 10,
893
+ });
894
+ cdl.saveTimestamp({
895
+ key: 'client.locus.join.request',
896
+ value: 12,
823
897
  });
824
- cdl.saveLatency(
825
- 'internal.click.to.interstitial.with.user.delay',
826
- 'eleven' as unknown as number
827
- );
828
898
  cdl.saveTimestamp({
829
899
  key: 'client.locus.join.response',
900
+ value: 20,
901
+ });
902
+ cdl.saveTimestamp({
903
+ key: 'internal.host.meeting.participant.admitted',
904
+ value: 24,
905
+ });
906
+ cdl.saveTimestamp({
907
+ key: 'client.ice.start',
908
+ value: 30,
909
+ });
910
+ cdl.saveTimestamp({
911
+ key: 'client.ice.end',
830
912
  value: 40,
831
913
  });
832
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), undefined);
914
+ assert.deepEqual(cdl.getTotalMediaJMT(), 31);
833
915
  });
834
916
 
835
- it('calculates getTotalJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
836
- cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
917
+ it('calculates getTotalMediaJMT correctly with allowMediaInLobby true and it is greater than MAX_INTEGER', () => {
918
+ cdl.saveTimestamp({
919
+ key: 'internal.client.meeting.click.joinbutton',
920
+ value: 5,
921
+ options: {meetingId: 'meeting-id'},
922
+ });
837
923
  cdl.saveTimestamp({
838
924
  key: 'internal.client.meeting.interstitial-window.showed',
839
- value: 20,
925
+ value: 100,
926
+ });
927
+ cdl.saveTimestamp({
928
+ key: 'internal.client.interstitial-window.click.joinbutton',
929
+ value: 1000,
930
+ });
931
+ cdl.saveTimestamp({
932
+ key: 'client.locus.join.request',
933
+ value: 2000,
840
934
  });
841
935
  cdl.saveTimestamp({
842
936
  key: 'client.locus.join.response',
843
- value: 40,
937
+ value: 2147483700,
938
+ });
939
+ cdl.saveTimestamp({
940
+ key: 'internal.host.meeting.participant.admitted',
941
+ value: 2147483800,
942
+ });
943
+ cdl.saveTimestamp({
944
+ key: 'client.ice.start',
945
+ value: 2147483900,
946
+ });
947
+ cdl.saveTimestamp({
948
+ key: 'client.ice.end',
949
+ value: 4294967400,
844
950
  });
845
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 2147483647);
846
- });
847
-
848
- it('calculates getTotalMediaJMT correctly with lobby exiting before media-engine.ready', () => {
849
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
850
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
851
- // clickToInterstitial = 8 - 5 = 3
852
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
853
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
854
- // interstitialClickJoinToMediaEngineReady = 50 - 10 = 40
855
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 20});
856
- cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
857
- // stayLobbyTimeCappedByMediaEngineReady = min(30, 50) - 20 = 10
858
- // total = 3 + 40 - 10 = 33
859
- assert.deepEqual(cdl.getTotalMediaJMT(), 33);
860
- });
861
-
862
- it('calculates getTotalMediaJMT correctly without lobby', () => {
863
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
864
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
865
- // clickToInterstitial = 3
866
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
867
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
868
- // interstitialClickJoinToMediaEngineReady = 40
869
- // no client.lobby.entered → stayLobbyTimeCappedByMediaEngineReady = 0
870
- // total = 3 + 40 - 0 = 43
871
- assert.deepEqual(cdl.getTotalMediaJMT(), 43);
872
- });
873
-
874
- it('calculates getTotalMediaJMT correctly with lobby exiting after media-engine.ready', () => {
875
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
876
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
877
- // clickToInterstitial = 3
878
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
879
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
880
- // interstitialClickJoinToMediaEngineReady = 40
881
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 20});
882
- cdl.saveTimestamp({key: 'client.lobby.exited', value: 60});
883
- // stayLobbyTimeCappedByMediaEngineReady = min(60, 50) - 20 = 30
884
- // total = 3 + 40 - 30 = 13
885
- assert.deepEqual(cdl.getTotalMediaJMT(), 13);
886
- });
887
-
888
- it('calculates getTotalMediaJMT correctly when it is greater than MAX_INTEGER', () => {
889
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
890
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
891
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
892
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 4294967400});
893
- cdl.saveTimestamp({key: 'client.lobby.entered', value: 28});
894
- cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
895
951
  assert.deepEqual(cdl.getTotalMediaJMT(), 2147483647);
896
952
  });
897
953
 
898
- it('returns undefined for getTotalMediaJMT when media-engine.ready is missing', () => {
899
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
900
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
901
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
902
- cdl.saveTimestamp({key: 'client.locus.join.response', value: 20});
903
- assert.deepEqual(cdl.getTotalMediaJMT(), undefined);
904
- });
905
-
906
- it('calculates getTotalMediaJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
907
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
908
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
909
- // clickToInterstitial = 8 - 5 = 3
910
- cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
911
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
912
- // interstitialClickJoinToMediaEngineReady = 50 - 10 = 40
913
- // no client.lobby.entered → stayLobbyTimeCappedByMediaEngineReady = 0
914
- // total = 3 + 40 - 0 = 43
915
- assert.deepEqual(cdl.getTotalMediaJMT(), 43);
916
- });
917
-
918
954
  it('calculates getTotalMediaJMTWithUserDelay correctly', () => {
919
955
  cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 7);
920
- // clickToInterstitialWithUserDelay = 7
921
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
922
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
923
- // interstitialShowedToMediaEngineReady = 50 - 10 = 40
924
- // total = 7 + 40 = 47
925
- assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 47);
956
+ cdl.saveTimestamp({
957
+ key: 'internal.client.interstitial-window.click.joinbutton',
958
+ value: 10,
959
+ });
960
+ cdl.saveTimestamp({
961
+ key: 'client.locus.join.request',
962
+ value: 12,
963
+ });
964
+ cdl.saveTimestamp({
965
+ key: 'client.locus.join.response',
966
+ value: 20,
967
+ });
968
+ cdl.saveTimestamp({
969
+ key: 'internal.host.meeting.participant.admitted',
970
+ value: 24,
971
+ });
972
+ cdl.saveTimestamp({
973
+ key: 'client.ice.start',
974
+ value: 30,
975
+ });
976
+ cdl.saveTimestamp({
977
+ key: 'client.ice.end',
978
+ value: 40,
979
+ });
980
+ assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 35);
926
981
  });
927
982
 
928
983
  it('calculates getTotalMediaJMTWithUserDelay correctly for guest join', () => {
929
- cdl.saveTimestamp({key: 'internal.client.meeting.click.joinbutton', value: 5});
930
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
931
- // clickToInterstitialWithUserDelay = 8 - 5 = 3
932
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
933
- // interstitialShowedToMediaEngineReady = 50 - 8 = 42
934
- // total = 3 + 42 = 45
935
- assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 45);
936
- });
937
-
938
- it('returns undefined for getTotalMediaJMTWithUserDelay when media-engine.ready is missing', () => {
939
- cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 7);
940
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
941
- assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), undefined);
942
- });
943
-
944
- it('calculates getTotalMediaJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
945
- cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
946
- cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
947
- cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
948
- assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 2147483647);
984
+ cdl.saveTimestamp({
985
+ key: 'internal.client.meeting.click.joinbutton',
986
+ value: 5,
987
+ });
988
+ cdl.saveTimestamp({
989
+ key: 'internal.client.meeting.interstitial-window.showed',
990
+ value: 8,
991
+ });
992
+ cdl.saveTimestamp({
993
+ key: 'internal.client.interstitial-window.click.joinbutton',
994
+ value: 10,
995
+ });
996
+ cdl.saveTimestamp({
997
+ key: 'client.locus.join.request',
998
+ value: 12,
999
+ });
1000
+ cdl.saveTimestamp({
1001
+ key: 'client.locus.join.response',
1002
+ value: 20,
1003
+ });
1004
+ cdl.saveTimestamp({
1005
+ key: 'internal.host.meeting.participant.admitted',
1006
+ value: 24,
1007
+ });
1008
+ cdl.saveTimestamp({
1009
+ key: 'client.ice.start',
1010
+ value: 30,
1011
+ });
1012
+ cdl.saveTimestamp({
1013
+ key: 'client.ice.end',
1014
+ value: 40,
1015
+ });
1016
+ assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 31);
949
1017
  });
950
1018
 
951
1019
  it('calculates getJoinConfJMT correctly', () => {
@@ -973,20 +1041,20 @@ describe('internal-plugin-metrics', () => {
973
1041
  // the maximum possible sum is 2400000, which is less than MAX_INTEGER (2147483647).
974
1042
  // This test should verify that the final clamping works by mocking the intermediate methods
975
1043
  // to return values that would sum to more than MAX_INTEGER.
976
-
1044
+
977
1045
  const originalGetJoinReqResp = cdl.getJoinReqResp;
978
1046
  const originalGetICESetupTime = cdl.getICESetupTime;
979
-
1047
+
980
1048
  // Mock the methods to return large values that would exceed MAX_INTEGER when summed
981
1049
  cdl.getJoinReqResp = () => 1500000000;
982
1050
  cdl.getICESetupTime = () => 1000000000;
983
-
1051
+
984
1052
  const result = cdl.getJoinConfJMT();
985
-
1053
+
986
1054
  // Restore original methods
987
1055
  cdl.getJoinReqResp = originalGetJoinReqResp;
988
1056
  cdl.getICESetupTime = originalGetICESetupTime;
989
-
1057
+
990
1058
  assert.deepEqual(result, 2147483647);
991
1059
  });
992
1060
 
@@ -1068,11 +1136,11 @@ describe('internal-plugin-metrics', () => {
1068
1136
  value: 4,
1069
1137
  });
1070
1138
  cdl.saveTimestamp({
1071
- key: 'client.lobby.entered',
1139
+ key: 'client.locus.join.response',
1072
1140
  value: 10,
1073
1141
  });
1074
1142
  cdl.saveTimestamp({
1075
- key: 'client.lobby.exited',
1143
+ key: 'internal.host.meeting.participant.admitted',
1076
1144
  value: 12,
1077
1145
  });
1078
1146
  cdl.saveTimestamp({
@@ -1088,12 +1156,12 @@ describe('internal-plugin-metrics', () => {
1088
1156
  value: 4,
1089
1157
  });
1090
1158
  cdl.saveTimestamp({
1091
- key: 'client.lobby.entered',
1159
+ key: 'client.locus.join.response',
1092
1160
  value: 10,
1093
1161
  });
1094
1162
  cdl.saveTimestamp({
1095
- key: 'client.lobby.exited',
1096
- value: 10,
1163
+ key: 'internal.host.meeting.participant.admitted',
1164
+ value: 12,
1097
1165
  });
1098
1166
  cdl.saveTimestamp({
1099
1167
  key: 'client.ice.end',
@@ -1111,22 +1179,6 @@ describe('internal-plugin-metrics', () => {
1111
1179
  key: 'client.ice.end',
1112
1180
  value: 14,
1113
1181
  });
1114
- // no client.lobby.entered → stayLobbyTimeCappedByIceEnd = 0
1115
- // result = (14 - 4) - 0 = 10
1116
- assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
1117
- });
1118
-
1119
- it('calculates getInterstitialToMediaOKJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
1120
- cdl.saveTimestamp({
1121
- key: 'internal.client.interstitial-window.click.joinbutton',
1122
- value: 4,
1123
- });
1124
- cdl.saveTimestamp({
1125
- key: 'client.ice.end',
1126
- value: 14,
1127
- });
1128
- // no client.lobby.entered → stayLobbyTimeCappedByIceEnd = 0
1129
- // result = (14 - 4) - 0 = 10
1130
1182
  assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
1131
1183
  });
1132
1184