@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.
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +52 -39
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.js +4 -0
- package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js +2 -2
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
- package/dist/call-diagnostic/config.js +2 -1
- package/dist/call-diagnostic/config.js.map +1 -1
- package/dist/metrics.js +1 -1
- package/dist/metrics.types.js.map +1 -1
- package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +9 -0
- package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +16 -13
- package/dist/types/metrics.types.d.ts +1 -1
- package/package.json +11 -11
- package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +114 -47
- package/src/call-diagnostic/call-diagnostic-metrics.ts +5 -0
- package/src/call-diagnostic/call-diagnostic-metrics.util.ts +2 -1
- package/src/call-diagnostic/config.ts +1 -0
- package/src/metrics.types.ts +1 -0
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +5 -2
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +179 -227
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +9 -0
|
@@ -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.
|
|
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.
|
|
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.
|
|
628
|
-
|
|
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
|
|
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
|
|
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(),
|
|
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.
|
|
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
|
|
793
|
+
it('calculates getTotalJMTWithUserDelay correctly when interstitialShowedToJoinLocusResponse is 0', () => {
|
|
757
794
|
cdl.saveTimestamp({
|
|
758
|
-
key: 'internal.client.interstitial-window.
|
|
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
|
|
806
|
+
it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialShowedToJoinLocusResponse are 0', () => {
|
|
770
807
|
cdl.saveTimestamp({
|
|
771
|
-
key: 'internal.client.interstitial-window.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
814
|
-
|
|
815
|
-
});
|
|
816
|
-
cdl.saveTimestamp({
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
});
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
});
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
});
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
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
|
-
|
|
850
|
-
|
|
851
|
-
});
|
|
852
|
-
cdl.saveTimestamp({
|
|
853
|
-
|
|
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('
|
|
884
|
-
cdl.saveTimestamp({
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
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
|
|
921
|
-
cdl.saveTimestamp({
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
});
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
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
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
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
|
-
|
|
989
|
-
|
|
990
|
-
});
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
});
|
|
999
|
-
cdl.
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
cdl.
|
|
1004
|
-
|
|
1005
|
-
|
|
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.
|
|
1075
|
-
value:
|
|
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.
|
|
1083
|
-
value:
|
|
1013
|
+
key: 'client.locus.join.request',
|
|
1014
|
+
value: 6,
|
|
1084
1015
|
});
|
|
1085
|
-
assert.deepEqual(cdl.getClientJMT(),
|
|
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.
|
|
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.
|
|
1098
|
+
key: 'client.lobby.entered',
|
|
1163
1099
|
value: 10,
|
|
1164
1100
|
});
|
|
1165
1101
|
cdl.saveTimestamp({
|
|
1166
1102
|
key: 'client.lobby.exited',
|
|
1167
|
-
value:
|
|
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);
|