@webex/internal-plugin-metrics 3.12.0-mobius-socket.1 → 3.12.0-next.10

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.
@@ -406,7 +406,7 @@ describe('internal-plugin-metrics', () => {
406
406
  });
407
407
 
408
408
  it('calculates getShowInterstitialTime correctly', () => {
409
- cdl.saveTimestamp({key: 'client.interstitial-window.start-launch', value: 10});
409
+ cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', 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,7 +509,7 @@ describe('internal-plugin-metrics', () => {
509
509
 
510
510
  it('calculates getStayLobbyTime correctly', () => {
511
511
  cdl.saveTimestamp({
512
- key: 'client.locus.join.response',
512
+ key: 'client.lobby.entered',
513
513
  value: 10,
514
514
  });
515
515
  cdl.saveTimestamp({
@@ -519,6 +519,50 @@ describe('internal-plugin-metrics', () => {
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
+
522
566
  it('calculates getPageJMT correctly', () => {
523
567
  cdl.saveLatency('internal.client.pageJMT', 10);
524
568
  assert.deepEqual(cdl.getPageJMT(), 10);
@@ -624,15 +668,8 @@ describe('internal-plugin-metrics', () => {
624
668
  });
625
669
 
626
670
  it('calculates getCallInitMediaEngineReady correctly', () => {
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);
671
+ sinon.stub(cdl, 'getInterstitialToMediaOKJMT').returns(42);
672
+ assert.deepEqual(cdl.getCallInitMediaEngineReady(), 42);
636
673
  });
637
674
 
638
675
  it('calculates getTotalJMT correctly', () => {
@@ -668,7 +705,7 @@ describe('internal-plugin-metrics', () => {
668
705
  assert.deepEqual(cdl.getTotalJMT(), 20);
669
706
  });
670
707
 
671
- it('calculates getTotalJMT correctly when interstitialToJoinOk is 0', () => {
708
+ it('calculates getTotalJMT correctly when interstitialClickJoinToJoinLocusResponse is 0', () => {
672
709
  cdl.saveTimestamp({
673
710
  key: 'internal.client.interstitial-window.click.joinbutton',
674
711
  value: 40,
@@ -681,7 +718,7 @@ describe('internal-plugin-metrics', () => {
681
718
  assert.deepEqual(cdl.getTotalJMT(), 12);
682
719
  });
683
720
 
684
- it('calculates getTotalJMT correctly when both clickToInterstitial and interstitialToJoinOk are 0', () => {
721
+ it('calculates getTotalJMT correctly when both clickToInterstitial and interstitialClickJoinToJoinLocusResponse are 0', () => {
685
722
  cdl.saveTimestamp({
686
723
  key: 'internal.client.interstitial-window.click.joinbutton',
687
724
  value: 40,
@@ -737,13 +774,13 @@ describe('internal-plugin-metrics', () => {
737
774
  key: 'client.locus.join.response',
738
775
  value: 40,
739
776
  });
740
- assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 45);
777
+ assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 30);
741
778
  });
742
779
 
743
780
  it('calculates getTotalJMTWithUserDelay correctly when clickToInterstitialWithUserDelay is 0', () => {
744
781
  cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
745
782
  cdl.saveTimestamp({
746
- key: 'internal.client.interstitial-window.click.joinbutton',
783
+ key: 'internal.client.meeting.interstitial-window.showed',
747
784
  value: 20,
748
785
  });
749
786
  cdl.saveTimestamp({
@@ -753,9 +790,9 @@ describe('internal-plugin-metrics', () => {
753
790
  assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 20);
754
791
  });
755
792
 
756
- it('calculates getTotalJMTWithUserDelay correctly when interstitialToJoinOk is 0', () => {
793
+ it('calculates getTotalJMTWithUserDelay correctly when interstitialShowedToJoinLocusResponse is 0', () => {
757
794
  cdl.saveTimestamp({
758
- key: 'internal.client.interstitial-window.click.joinbutton',
795
+ key: 'internal.client.meeting.interstitial-window.showed',
759
796
  value: 40,
760
797
  });
761
798
  cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 12);
@@ -766,9 +803,9 @@ describe('internal-plugin-metrics', () => {
766
803
  assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 12);
767
804
  });
768
805
 
769
- it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialToJoinOk are 0', () => {
806
+ it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialShowedToJoinLocusResponse are 0', () => {
770
807
  cdl.saveTimestamp({
771
- key: 'internal.client.interstitial-window.click.joinbutton',
808
+ key: 'internal.client.meeting.interstitial-window.showed',
772
809
  value: 40,
773
810
  });
774
811
  cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
@@ -781,7 +818,7 @@ describe('internal-plugin-metrics', () => {
781
818
 
782
819
  it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay is not a number', () => {
783
820
  cdl.saveTimestamp({
784
- key: 'internal.client.interstitial-window.click.joinbutton',
821
+ key: 'internal.client.meeting.interstitial-window.showed',
785
822
  value: 40,
786
823
  });
787
824
  cdl.saveLatency(
@@ -798,7 +835,7 @@ describe('internal-plugin-metrics', () => {
798
835
  it('calculates getTotalJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
799
836
  cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
800
837
  cdl.saveTimestamp({
801
- key: 'internal.client.interstitial-window.click.joinbutton',
838
+ key: 'internal.client.meeting.interstitial-window.showed',
802
839
  value: 20,
803
840
  });
804
841
  cdl.saveTimestamp({
@@ -808,215 +845,107 @@ describe('internal-plugin-metrics', () => {
808
845
  assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 2147483647);
809
846
  });
810
847
 
811
- it('calculates getTotalMediaJMT correctly', () => {
812
- cdl.saveTimestamp({
813
- key: 'internal.client.meeting.click.joinbutton',
814
- value: 5,
815
- });
816
- cdl.saveTimestamp({
817
- key: 'internal.client.meeting.interstitial-window.showed',
818
- value: 8,
819
- });
820
- cdl.saveTimestamp({
821
- key: 'internal.client.interstitial-window.click.joinbutton',
822
- value: 10,
823
- });
824
- cdl.saveTimestamp({
825
- key: 'client.locus.join.request',
826
- value: 12,
827
- });
828
- cdl.saveTimestamp({
829
- key: 'client.locus.join.response',
830
- value: 20,
831
- });
832
- cdl.saveTimestamp({
833
- key: 'client.lobby.exited',
834
- value: 24,
835
- });
836
- cdl.saveTimestamp({
837
- key: 'client.ice.start',
838
- value: 30,
839
- });
840
- cdl.saveTimestamp({
841
- key: 'client.ice.end',
842
- value: 40,
843
- });
844
- assert.deepEqual(cdl.getTotalMediaJMT(), 27);
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);
845
886
  });
846
887
 
847
888
  it('calculates getTotalMediaJMT correctly when it is greater than MAX_INTEGER', () => {
848
- cdl.saveTimestamp({
849
- key: 'internal.client.meeting.click.joinbutton',
850
- value: 5,
851
- });
852
- cdl.saveTimestamp({
853
- key: 'internal.client.meeting.interstitial-window.showed',
854
- value: 8,
855
- });
856
- cdl.saveTimestamp({
857
- key: 'internal.client.interstitial-window.click.joinbutton',
858
- value: 10,
859
- });
860
- cdl.saveTimestamp({
861
- key: 'client.locus.join.request',
862
- value: 12,
863
- });
864
- cdl.saveTimestamp({
865
- key: 'client.locus.join.response',
866
- value: 2147483700,
867
- });
868
- cdl.saveTimestamp({
869
- key: 'client.lobby.exited',
870
- value: 2147483800,
871
- });
872
- cdl.saveTimestamp({
873
- key: 'client.ice.start',
874
- value: 30,
875
- });
876
- cdl.saveTimestamp({
877
- key: 'client.ice.end',
878
- value: 100,
879
- });
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});
880
895
  assert.deepEqual(cdl.getTotalMediaJMT(), 2147483647);
881
896
  });
882
897
 
883
- it('calculates getTotalMediaJMT correctly with allowMediaInLobby true', () => {
884
- cdl.saveTimestamp({
885
- key: 'internal.client.meeting.click.joinbutton',
886
- value: 5,
887
- options: {meetingId: 'meeting-id'},
888
- });
889
- cdl.saveTimestamp({
890
- key: 'internal.client.meeting.interstitial-window.showed',
891
- value: 8,
892
- });
893
- cdl.saveTimestamp({
894
- key: 'internal.client.interstitial-window.click.joinbutton',
895
- value: 10,
896
- });
897
- cdl.saveTimestamp({
898
- key: 'client.locus.join.request',
899
- value: 12,
900
- });
901
- cdl.saveTimestamp({
902
- key: 'client.locus.join.response',
903
- value: 20,
904
- });
905
- cdl.saveTimestamp({
906
- key: 'client.lobby.exited',
907
- value: 24,
908
- });
909
- cdl.saveTimestamp({
910
- key: 'client.ice.start',
911
- value: 30,
912
- });
913
- cdl.saveTimestamp({
914
- key: 'client.ice.end',
915
- value: 40,
916
- });
917
- assert.deepEqual(cdl.getTotalMediaJMT(), 31);
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);
918
904
  });
919
905
 
920
- it('calculates getTotalMediaJMT correctly with allowMediaInLobby true and it is greater than MAX_INTEGER', () => {
921
- cdl.saveTimestamp({
922
- key: 'internal.client.meeting.click.joinbutton',
923
- value: 5,
924
- options: {meetingId: 'meeting-id'},
925
- });
926
- cdl.saveTimestamp({
927
- key: 'internal.client.meeting.interstitial-window.showed',
928
- value: 100,
929
- });
930
- cdl.saveTimestamp({
931
- key: 'internal.client.interstitial-window.click.joinbutton',
932
- value: 1000,
933
- });
934
- cdl.saveTimestamp({
935
- key: 'client.locus.join.request',
936
- value: 2000,
937
- });
938
- cdl.saveTimestamp({
939
- key: 'client.locus.join.response',
940
- value: 2147483700,
941
- });
942
- cdl.saveTimestamp({
943
- key: 'client.lobby.exited',
944
- value: 2147483800,
945
- });
946
- cdl.saveTimestamp({
947
- key: 'client.ice.start',
948
- value: 2147483900,
949
- });
950
- cdl.saveTimestamp({
951
- key: 'client.ice.end',
952
- value: 4294967400,
953
- });
954
- assert.deepEqual(cdl.getTotalMediaJMT(), 2147483647);
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);
955
916
  });
956
917
 
957
918
  it('calculates getTotalMediaJMTWithUserDelay correctly', () => {
958
919
  cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 7);
959
- cdl.saveTimestamp({
960
- key: 'internal.client.interstitial-window.click.joinbutton',
961
- value: 10,
962
- });
963
- cdl.saveTimestamp({
964
- key: 'client.locus.join.request',
965
- value: 12,
966
- });
967
- cdl.saveTimestamp({
968
- key: 'client.locus.join.response',
969
- value: 20,
970
- });
971
- cdl.saveTimestamp({
972
- key: 'internal.host.meeting.participant.admitted',
973
- value: 24,
974
- });
975
- cdl.saveTimestamp({
976
- key: 'client.ice.start',
977
- value: 30,
978
- });
979
- cdl.saveTimestamp({
980
- key: 'client.ice.end',
981
- value: 40,
982
- });
983
- assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 35);
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);
984
926
  });
985
927
 
986
928
  it('calculates getTotalMediaJMTWithUserDelay correctly for guest join', () => {
987
- cdl.saveTimestamp({
988
- key: 'internal.client.meeting.click.joinbutton',
989
- value: 5,
990
- });
991
- cdl.saveTimestamp({
992
- key: 'internal.client.meeting.interstitial-window.showed',
993
- value: 8,
994
- });
995
- cdl.saveTimestamp({
996
- key: 'internal.client.interstitial-window.click.joinbutton',
997
- value: 10,
998
- });
999
- cdl.saveTimestamp({
1000
- key: 'client.locus.join.request',
1001
- value: 12,
1002
- });
1003
- cdl.saveTimestamp({
1004
- key: 'client.locus.join.response',
1005
- value: 20,
1006
- });
1007
- cdl.saveTimestamp({
1008
- key: 'internal.host.meeting.participant.admitted',
1009
- value: 24,
1010
- });
1011
- cdl.saveTimestamp({
1012
- key: 'client.ice.start',
1013
- value: 30,
1014
- });
1015
- cdl.saveTimestamp({
1016
- key: 'client.ice.end',
1017
- value: 40,
1018
- });
1019
- assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 31);
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);
1020
949
  });
1021
950
 
1022
951
  it('calculates getJoinConfJMT correctly', () => {
@@ -1062,6 +991,7 @@ describe('internal-plugin-metrics', () => {
1062
991
  });
1063
992
 
1064
993
  it('calculates getClientJMT correctly', () => {
994
+ cdl.saveLatency('internal.click.to.interstitial.for.client.jmt', 5);
1065
995
  cdl.saveTimestamp({
1066
996
  key: 'internal.client.interstitial-window.click.joinbutton',
1067
997
  value: 2,
@@ -1070,19 +1000,25 @@ describe('internal-plugin-metrics', () => {
1070
1000
  key: 'client.locus.join.request',
1071
1001
  value: 6,
1072
1002
  });
1003
+ // clickToInterstitialForClientJmt (5) + interstitialJoinToLocusJoinRequest (6 - 2 = 4) = 9
1004
+ assert.deepEqual(cdl.getClientJMT(), 9);
1005
+ });
1006
+
1007
+ it('returns undefined for getClientJMT when clickToInterstitialForClientJmt is missing', () => {
1073
1008
  cdl.saveTimestamp({
1074
- key: 'client.locus.join.response',
1075
- value: 8,
1076
- });
1077
- cdl.saveTimestamp({
1078
- key: 'client.ice.start',
1079
- value: 10,
1009
+ key: 'internal.client.interstitial-window.click.joinbutton',
1010
+ value: 2,
1080
1011
  });
1081
1012
  cdl.saveTimestamp({
1082
- key: 'client.ice.end',
1083
- value: 11,
1013
+ key: 'client.locus.join.request',
1014
+ value: 6,
1084
1015
  });
1085
- assert.deepEqual(cdl.getClientJMT(), 3);
1016
+ assert.deepEqual(cdl.getClientJMT(), undefined);
1017
+ });
1018
+
1019
+ it('returns undefined for getClientJMT when interstitialJoinToLocusJoinRequest is missing', () => {
1020
+ cdl.saveLatency('internal.click.to.interstitial.for.client.jmt', 5);
1021
+ assert.deepEqual(cdl.getClientJMT(), undefined);
1086
1022
  });
1087
1023
 
1088
1024
  it('calculates getAudioJoinRespRxStart correctly', () => {
@@ -1139,7 +1075,7 @@ describe('internal-plugin-metrics', () => {
1139
1075
  value: 4,
1140
1076
  });
1141
1077
  cdl.saveTimestamp({
1142
- key: 'client.locus.join.response',
1078
+ key: 'client.lobby.entered',
1143
1079
  value: 10,
1144
1080
  });
1145
1081
  cdl.saveTimestamp({
@@ -1159,12 +1095,12 @@ describe('internal-plugin-metrics', () => {
1159
1095
  value: 4,
1160
1096
  });
1161
1097
  cdl.saveTimestamp({
1162
- key: 'client.locus.join.response',
1098
+ key: 'client.lobby.entered',
1163
1099
  value: 10,
1164
1100
  });
1165
1101
  cdl.saveTimestamp({
1166
1102
  key: 'client.lobby.exited',
1167
- value: 12,
1103
+ value: 10,
1168
1104
  });
1169
1105
  cdl.saveTimestamp({
1170
1106
  key: 'client.ice.end',
@@ -1182,6 +1118,22 @@ describe('internal-plugin-metrics', () => {
1182
1118
  key: 'client.ice.end',
1183
1119
  value: 14,
1184
1120
  });
1121
+ // no client.lobby.entered → stayLobbyTimeCappedByIceEnd = 0
1122
+ // result = (14 - 4) - 0 = 10
1123
+ assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
1124
+ });
1125
+
1126
+ it('calculates getInterstitialToMediaOKJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
1127
+ cdl.saveTimestamp({
1128
+ key: 'internal.client.interstitial-window.click.joinbutton',
1129
+ value: 4,
1130
+ });
1131
+ cdl.saveTimestamp({
1132
+ key: 'client.ice.end',
1133
+ value: 14,
1134
+ });
1135
+ // no client.lobby.entered → stayLobbyTimeCappedByIceEnd = 0
1136
+ // result = (14 - 4) - 0 = 10
1185
1137
  assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
1186
1138
  });
1187
1139
 
@@ -3680,6 +3680,15 @@ describe('internal-plugin-metrics', () => {
3680
3680
  assert.deepEqual(cd.getSubServiceType(fakeMeeting), 'Webcast');
3681
3681
  });
3682
3682
 
3683
+ it('returns subServicetype as LargeScaleWebinar when meeting is converged Webinar and enable large scale', () => {
3684
+ fakeMeeting.meetingInfo = {
3685
+ enableEvent: true,
3686
+ enableConvergedArchitecture: true,
3687
+ enableConvergedWebinarLargeScale: true,
3688
+ };
3689
+ assert.deepEqual(cd.getSubServiceType(fakeMeeting), 'LargeScaleWebinar');
3690
+ });
3691
+
3683
3692
  it('returns subServicetype as undefined when correct parameters are not found', () => {
3684
3693
  fakeMeeting.meetingInfo = {};
3685
3694
  assert.deepEqual(cd.getSubServiceType(fakeMeeting), undefined);