@webex/internal-plugin-metrics 3.12.0-next.1 → 3.12.0-next.11
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 -47
- 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 +22 -13
- package/dist/types/metrics.types.d.ts +2 -2
- package/package.json +3 -3
- package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +114 -63
- 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 -1
- 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 -287
- 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);
|
|
@@ -530,71 +574,31 @@ describe('internal-plugin-metrics', () => {
|
|
|
530
574
|
});
|
|
531
575
|
|
|
532
576
|
it('calculates getClickToInterstitial correctly', () => {
|
|
533
|
-
cdl.saveTimestamp({
|
|
534
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
535
|
-
value: 10,
|
|
536
|
-
});
|
|
537
|
-
cdl.saveTimestamp({
|
|
538
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
539
|
-
value: 20,
|
|
540
|
-
});
|
|
541
|
-
assert.deepEqual(cdl.getClickToInterstitial(), 10);
|
|
542
|
-
});
|
|
543
|
-
|
|
544
|
-
it('calculates getClickToInterstitial without join button timestamp', () => {
|
|
545
577
|
cdl.saveLatency('internal.click.to.interstitial', 5);
|
|
546
|
-
cdl.saveTimestamp({
|
|
547
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
548
|
-
value: 20,
|
|
549
|
-
});
|
|
550
578
|
assert.deepEqual(cdl.getClickToInterstitial(), 5);
|
|
551
579
|
});
|
|
552
580
|
|
|
553
|
-
it('calculates getClickToInterstitial
|
|
581
|
+
it('calculates getClickToInterstitial correctly when it is 0', () => {
|
|
554
582
|
cdl.saveLatency('internal.click.to.interstitial', 0);
|
|
555
|
-
cdl.saveTimestamp({
|
|
556
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
557
|
-
value: 20,
|
|
558
|
-
});
|
|
559
583
|
assert.deepEqual(cdl.getClickToInterstitial(), 0);
|
|
560
584
|
});
|
|
561
585
|
|
|
562
|
-
it('calculates getClickToInterstitial
|
|
586
|
+
it('calculates getClickToInterstitial correctly when it is greater than MAX_INTEGER', () => {
|
|
563
587
|
cdl.saveLatency('internal.click.to.interstitial', 2147483648);
|
|
564
588
|
assert.deepEqual(cdl.getClickToInterstitial(), 2147483647);
|
|
565
589
|
});
|
|
566
590
|
|
|
567
591
|
it('calculates getClickToInterstitialWithUserDelay correctly', () => {
|
|
568
|
-
cdl.saveTimestamp({
|
|
569
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
570
|
-
value: 10,
|
|
571
|
-
});
|
|
572
|
-
cdl.saveTimestamp({
|
|
573
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
574
|
-
value: 20,
|
|
575
|
-
});
|
|
576
|
-
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 10);
|
|
577
|
-
});
|
|
578
|
-
|
|
579
|
-
it('calculates getClickToInterstitialWithUserDelay without join button timestamp', () => {
|
|
580
592
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 5);
|
|
581
|
-
cdl.saveTimestamp({
|
|
582
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
583
|
-
value: 20,
|
|
584
|
-
});
|
|
585
593
|
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 5);
|
|
586
594
|
});
|
|
587
595
|
|
|
588
|
-
it('calculates getClickToInterstitialWithUserDelay
|
|
596
|
+
it('calculates getClickToInterstitialWithUserDelay correctly when it is 0', () => {
|
|
589
597
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
|
|
590
|
-
cdl.saveTimestamp({
|
|
591
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
592
|
-
value: 20,
|
|
593
|
-
});
|
|
594
598
|
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 0);
|
|
595
599
|
});
|
|
596
600
|
|
|
597
|
-
it('calculates getClickToInterstitialWithUserDelay
|
|
601
|
+
it('calculates getClickToInterstitialWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
|
|
598
602
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
|
|
599
603
|
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 2147483647);
|
|
600
604
|
});
|
|
@@ -624,30 +628,16 @@ describe('internal-plugin-metrics', () => {
|
|
|
624
628
|
});
|
|
625
629
|
|
|
626
630
|
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);
|
|
631
|
+
sinon.stub(cdl, 'getInterstitialToMediaOKJMT').returns(42);
|
|
632
|
+
assert.deepEqual(cdl.getCallInitMediaEngineReady(), 42);
|
|
636
633
|
});
|
|
637
634
|
|
|
638
635
|
it('calculates getTotalJMT correctly', () => {
|
|
636
|
+
cdl.saveLatency('internal.click.to.interstitial', 10);
|
|
639
637
|
cdl.saveTimestamp({
|
|
640
638
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
641
639
|
value: 5,
|
|
642
640
|
});
|
|
643
|
-
cdl.saveTimestamp({
|
|
644
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
645
|
-
value: 10,
|
|
646
|
-
});
|
|
647
|
-
cdl.saveTimestamp({
|
|
648
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
649
|
-
value: 20,
|
|
650
|
-
});
|
|
651
641
|
cdl.saveTimestamp({
|
|
652
642
|
key: 'client.locus.join.response',
|
|
653
643
|
value: 40,
|
|
@@ -668,7 +658,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
668
658
|
assert.deepEqual(cdl.getTotalJMT(), 20);
|
|
669
659
|
});
|
|
670
660
|
|
|
671
|
-
it('calculates getTotalJMT correctly when
|
|
661
|
+
it('calculates getTotalJMT correctly when interstitialClickJoinToJoinLocusResponse is 0', () => {
|
|
672
662
|
cdl.saveTimestamp({
|
|
673
663
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
674
664
|
value: 40,
|
|
@@ -681,7 +671,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
681
671
|
assert.deepEqual(cdl.getTotalJMT(), 12);
|
|
682
672
|
});
|
|
683
673
|
|
|
684
|
-
it('calculates getTotalJMT correctly when both clickToInterstitial and
|
|
674
|
+
it('calculates getTotalJMT correctly when both clickToInterstitial and interstitialClickJoinToJoinLocusResponse are 0', () => {
|
|
685
675
|
cdl.saveTimestamp({
|
|
686
676
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
687
677
|
value: 40,
|
|
@@ -721,14 +711,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
721
711
|
});
|
|
722
712
|
|
|
723
713
|
it('calculates getTotalJMTWithUserDelay correctly', () => {
|
|
724
|
-
cdl.
|
|
725
|
-
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
726
|
-
value: 5,
|
|
727
|
-
});
|
|
728
|
-
cdl.saveTimestamp({
|
|
729
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
730
|
-
value: 10,
|
|
731
|
-
});
|
|
714
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 10);
|
|
732
715
|
cdl.saveTimestamp({
|
|
733
716
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
734
717
|
value: 20,
|
|
@@ -737,13 +720,13 @@ describe('internal-plugin-metrics', () => {
|
|
|
737
720
|
key: 'client.locus.join.response',
|
|
738
721
|
value: 40,
|
|
739
722
|
});
|
|
740
|
-
assert.deepEqual(cdl.getTotalJMTWithUserDelay(),
|
|
723
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 30);
|
|
741
724
|
});
|
|
742
725
|
|
|
743
726
|
it('calculates getTotalJMTWithUserDelay correctly when clickToInterstitialWithUserDelay is 0', () => {
|
|
744
727
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
|
|
745
728
|
cdl.saveTimestamp({
|
|
746
|
-
key: 'internal.client.interstitial-window.
|
|
729
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
747
730
|
value: 20,
|
|
748
731
|
});
|
|
749
732
|
cdl.saveTimestamp({
|
|
@@ -753,9 +736,9 @@ describe('internal-plugin-metrics', () => {
|
|
|
753
736
|
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 20);
|
|
754
737
|
});
|
|
755
738
|
|
|
756
|
-
it('calculates getTotalJMTWithUserDelay correctly when
|
|
739
|
+
it('calculates getTotalJMTWithUserDelay correctly when interstitialShowedToJoinLocusResponse is 0', () => {
|
|
757
740
|
cdl.saveTimestamp({
|
|
758
|
-
key: 'internal.client.interstitial-window.
|
|
741
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
759
742
|
value: 40,
|
|
760
743
|
});
|
|
761
744
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 12);
|
|
@@ -766,9 +749,9 @@ describe('internal-plugin-metrics', () => {
|
|
|
766
749
|
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 12);
|
|
767
750
|
});
|
|
768
751
|
|
|
769
|
-
it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and
|
|
752
|
+
it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialShowedToJoinLocusResponse are 0', () => {
|
|
770
753
|
cdl.saveTimestamp({
|
|
771
|
-
key: 'internal.client.interstitial-window.
|
|
754
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
772
755
|
value: 40,
|
|
773
756
|
});
|
|
774
757
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
|
|
@@ -781,7 +764,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
781
764
|
|
|
782
765
|
it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay is not a number', () => {
|
|
783
766
|
cdl.saveTimestamp({
|
|
784
|
-
key: 'internal.client.interstitial-window.
|
|
767
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
785
768
|
value: 40,
|
|
786
769
|
});
|
|
787
770
|
cdl.saveLatency(
|
|
@@ -798,7 +781,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
798
781
|
it('calculates getTotalJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
|
|
799
782
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
|
|
800
783
|
cdl.saveTimestamp({
|
|
801
|
-
key: 'internal.client.interstitial-window.
|
|
784
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
802
785
|
value: 20,
|
|
803
786
|
});
|
|
804
787
|
cdl.saveTimestamp({
|
|
@@ -808,215 +791,101 @@ describe('internal-plugin-metrics', () => {
|
|
|
808
791
|
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 2147483647);
|
|
809
792
|
});
|
|
810
793
|
|
|
811
|
-
it('calculates getTotalMediaJMT correctly', () => {
|
|
812
|
-
cdl.
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
});
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
});
|
|
828
|
-
cdl.saveTimestamp({
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
cdl.
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
cdl.
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
});
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
794
|
+
it('calculates getTotalMediaJMT correctly with lobby exiting before media-engine.ready', () => {
|
|
795
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
796
|
+
// clickToInterstitial = 3
|
|
797
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
798
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
799
|
+
// interstitialClickJoinToMediaEngineReady = 50 - 10 = 40
|
|
800
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 20});
|
|
801
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
|
|
802
|
+
// stayLobbyTimeCappedByMediaEngineReady = min(30, 50) - 20 = 10
|
|
803
|
+
// total = 3 + 40 - 10 = 33
|
|
804
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 33);
|
|
805
|
+
});
|
|
806
|
+
|
|
807
|
+
it('calculates getTotalMediaJMT correctly without lobby', () => {
|
|
808
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
809
|
+
// clickToInterstitial = 3
|
|
810
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
811
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
812
|
+
// interstitialClickJoinToMediaEngineReady = 40
|
|
813
|
+
// no client.lobby.entered → stayLobbyTimeCappedByMediaEngineReady = 0
|
|
814
|
+
// total = 3 + 40 - 0 = 43
|
|
815
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 43);
|
|
816
|
+
});
|
|
817
|
+
|
|
818
|
+
it('calculates getTotalMediaJMT correctly with lobby exiting after media-engine.ready', () => {
|
|
819
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
820
|
+
// clickToInterstitial = 3
|
|
821
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
822
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
823
|
+
// interstitialClickJoinToMediaEngineReady = 40
|
|
824
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 20});
|
|
825
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 60});
|
|
826
|
+
// stayLobbyTimeCappedByMediaEngineReady = min(60, 50) - 20 = 30
|
|
827
|
+
// total = 3 + 40 - 30 = 13
|
|
828
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 13);
|
|
845
829
|
});
|
|
846
830
|
|
|
847
831
|
it('calculates getTotalMediaJMT correctly when it is greater than MAX_INTEGER', () => {
|
|
848
|
-
cdl.
|
|
849
|
-
|
|
850
|
-
|
|
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
|
-
});
|
|
832
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
833
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
834
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 4294967400});
|
|
835
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 28});
|
|
836
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
|
|
880
837
|
assert.deepEqual(cdl.getTotalMediaJMT(), 2147483647);
|
|
881
838
|
});
|
|
882
839
|
|
|
883
|
-
it('
|
|
884
|
-
cdl.
|
|
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);
|
|
840
|
+
it('returns undefined for getTotalMediaJMT when media-engine.ready is missing', () => {
|
|
841
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
842
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
843
|
+
cdl.saveTimestamp({key: 'client.locus.join.response', value: 20});
|
|
844
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), undefined);
|
|
918
845
|
});
|
|
919
846
|
|
|
920
|
-
it('calculates getTotalMediaJMT correctly
|
|
921
|
-
cdl.
|
|
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);
|
|
847
|
+
it('calculates getTotalMediaJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
|
|
848
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
849
|
+
// clickToInterstitial = 3
|
|
850
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
851
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
852
|
+
// interstitialClickJoinToMediaEngineReady = 50 - 10 = 40
|
|
853
|
+
// no client.lobby.entered → stayLobbyTimeCappedByMediaEngineReady = 0
|
|
854
|
+
// total = 3 + 40 - 0 = 43
|
|
855
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 43);
|
|
955
856
|
});
|
|
956
857
|
|
|
957
858
|
it('calculates getTotalMediaJMTWithUserDelay correctly', () => {
|
|
958
859
|
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);
|
|
860
|
+
// clickToInterstitialWithUserDelay = 7
|
|
861
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
862
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
863
|
+
// interstitialShowedToMediaEngineReady = 50 - 10 = 40
|
|
864
|
+
// total = 7 + 40 = 47
|
|
865
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 47);
|
|
984
866
|
});
|
|
985
867
|
|
|
986
868
|
it('calculates getTotalMediaJMTWithUserDelay correctly for guest join', () => {
|
|
987
|
-
cdl.
|
|
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);
|
|
869
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 3);
|
|
870
|
+
// clickToInterstitialWithUserDelay = 3
|
|
871
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
872
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
873
|
+
// interstitialShowedToMediaEngineReady = 50 - 8 = 42
|
|
874
|
+
// total = 3 + 42 = 45
|
|
875
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 45);
|
|
876
|
+
});
|
|
877
|
+
|
|
878
|
+
it('returns undefined for getTotalMediaJMTWithUserDelay when media-engine.ready is missing', () => {
|
|
879
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 7);
|
|
880
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
881
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), undefined);
|
|
882
|
+
});
|
|
883
|
+
|
|
884
|
+
it('calculates getTotalMediaJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
|
|
885
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
|
|
886
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
887
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
888
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 2147483647);
|
|
1020
889
|
});
|
|
1021
890
|
|
|
1022
891
|
it('calculates getJoinConfJMT correctly', () => {
|
|
@@ -1062,6 +931,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
1062
931
|
});
|
|
1063
932
|
|
|
1064
933
|
it('calculates getClientJMT correctly', () => {
|
|
934
|
+
cdl.saveLatency('internal.click.to.interstitial.for.client.jmt', 5);
|
|
1065
935
|
cdl.saveTimestamp({
|
|
1066
936
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1067
937
|
value: 2,
|
|
@@ -1070,19 +940,25 @@ describe('internal-plugin-metrics', () => {
|
|
|
1070
940
|
key: 'client.locus.join.request',
|
|
1071
941
|
value: 6,
|
|
1072
942
|
});
|
|
943
|
+
// clickToInterstitialForClientJmt (5) + interstitialJoinToLocusJoinRequest (6 - 2 = 4) = 9
|
|
944
|
+
assert.deepEqual(cdl.getClientJMT(), 9);
|
|
945
|
+
});
|
|
946
|
+
|
|
947
|
+
it('returns undefined for getClientJMT when clickToInterstitialForClientJmt is missing', () => {
|
|
1073
948
|
cdl.saveTimestamp({
|
|
1074
|
-
key: 'client.
|
|
1075
|
-
value:
|
|
1076
|
-
});
|
|
1077
|
-
cdl.saveTimestamp({
|
|
1078
|
-
key: 'client.ice.start',
|
|
1079
|
-
value: 10,
|
|
949
|
+
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
950
|
+
value: 2,
|
|
1080
951
|
});
|
|
1081
952
|
cdl.saveTimestamp({
|
|
1082
|
-
key: 'client.
|
|
1083
|
-
value:
|
|
953
|
+
key: 'client.locus.join.request',
|
|
954
|
+
value: 6,
|
|
1084
955
|
});
|
|
1085
|
-
assert.deepEqual(cdl.getClientJMT(),
|
|
956
|
+
assert.deepEqual(cdl.getClientJMT(), undefined);
|
|
957
|
+
});
|
|
958
|
+
|
|
959
|
+
it('returns undefined for getClientJMT when interstitialJoinToLocusJoinRequest is missing', () => {
|
|
960
|
+
cdl.saveLatency('internal.click.to.interstitial.for.client.jmt', 5);
|
|
961
|
+
assert.deepEqual(cdl.getClientJMT(), undefined);
|
|
1086
962
|
});
|
|
1087
963
|
|
|
1088
964
|
it('calculates getAudioJoinRespRxStart correctly', () => {
|
|
@@ -1139,7 +1015,7 @@ describe('internal-plugin-metrics', () => {
|
|
|
1139
1015
|
value: 4,
|
|
1140
1016
|
});
|
|
1141
1017
|
cdl.saveTimestamp({
|
|
1142
|
-
key: 'client.
|
|
1018
|
+
key: 'client.lobby.entered',
|
|
1143
1019
|
value: 10,
|
|
1144
1020
|
});
|
|
1145
1021
|
cdl.saveTimestamp({
|
|
@@ -1159,12 +1035,12 @@ describe('internal-plugin-metrics', () => {
|
|
|
1159
1035
|
value: 4,
|
|
1160
1036
|
});
|
|
1161
1037
|
cdl.saveTimestamp({
|
|
1162
|
-
key: 'client.
|
|
1038
|
+
key: 'client.lobby.entered',
|
|
1163
1039
|
value: 10,
|
|
1164
1040
|
});
|
|
1165
1041
|
cdl.saveTimestamp({
|
|
1166
1042
|
key: 'client.lobby.exited',
|
|
1167
|
-
value:
|
|
1043
|
+
value: 10,
|
|
1168
1044
|
});
|
|
1169
1045
|
cdl.saveTimestamp({
|
|
1170
1046
|
key: 'client.ice.end',
|
|
@@ -1182,6 +1058,22 @@ describe('internal-plugin-metrics', () => {
|
|
|
1182
1058
|
key: 'client.ice.end',
|
|
1183
1059
|
value: 14,
|
|
1184
1060
|
});
|
|
1061
|
+
// no client.lobby.entered → stayLobbyTimeCappedByIceEnd = 0
|
|
1062
|
+
// result = (14 - 4) - 0 = 10
|
|
1063
|
+
assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
|
|
1064
|
+
});
|
|
1065
|
+
|
|
1066
|
+
it('calculates getInterstitialToMediaOKJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
|
|
1067
|
+
cdl.saveTimestamp({
|
|
1068
|
+
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1069
|
+
value: 4,
|
|
1070
|
+
});
|
|
1071
|
+
cdl.saveTimestamp({
|
|
1072
|
+
key: 'client.ice.end',
|
|
1073
|
+
value: 14,
|
|
1074
|
+
});
|
|
1075
|
+
// no client.lobby.entered → stayLobbyTimeCappedByIceEnd = 0
|
|
1076
|
+
// result = (14 - 4) - 0 = 10
|
|
1185
1077
|
assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
|
|
1186
1078
|
});
|
|
1187
1079
|
|
|
@@ -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);
|