@webex/internal-plugin-metrics 3.12.0-task-refactor.1 → 3.12.0-webex-services-ready.2
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/batcher.js +3 -0
- package/dist/batcher.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js +23 -0
- package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +68 -50
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.js +60 -8
- package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js +44 -4
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
- package/dist/call-diagnostic/config.js +17 -3
- package/dist/call-diagnostic/config.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/generic-metrics.js +8 -6
- package/dist/generic-metrics.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/metrics.js +1 -1
- package/dist/metrics.types.js.map +1 -1
- package/dist/new-metrics.js +56 -20
- package/dist/new-metrics.js.map +1 -1
- package/dist/prelogin-metrics-batcher.js +23 -0
- package/dist/prelogin-metrics-batcher.js.map +1 -1
- package/dist/prelogin-metrics.js +106 -0
- package/dist/prelogin-metrics.js.map +1 -0
- package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +9 -0
- package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +57 -20
- package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +23 -2
- package/dist/types/call-diagnostic/config.d.ts +6 -19
- package/dist/types/config.d.ts +16 -15
- package/dist/types/index.d.ts +2 -1
- package/dist/types/metrics.types.d.ts +4 -4
- package/dist/types/new-metrics.d.ts +12 -0
- package/dist/types/prelogin-metrics.d.ts +47 -0
- package/package.json +11 -11
- package/src/batcher.js +4 -0
- package/src/call-diagnostic/call-diagnostic-metrics-batcher.ts +26 -0
- package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +139 -70
- package/src/call-diagnostic/call-diagnostic-metrics.ts +52 -1
- package/src/call-diagnostic/call-diagnostic-metrics.util.ts +49 -2
- package/src/call-diagnostic/config.ts +15 -0
- package/src/config.js +1 -0
- package/src/generic-metrics.ts +6 -6
- package/src/index.ts +2 -0
- package/src/metrics.types.ts +3 -3
- package/src/new-metrics.ts +42 -0
- package/src/prelogin-metrics-batcher.ts +26 -0
- package/src/prelogin-metrics.ts +94 -0
- package/test/unit/spec/batcher.js +43 -0
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +183 -11
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +324 -366
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +724 -159
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +92 -3
- package/test/unit/spec/prelogin-metrics-batcher.ts +190 -36
- package/test/unit/spec/prelogin-metrics.ts +132 -0
|
@@ -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,14 +406,16 @@ 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
|
});
|
|
413
413
|
|
|
414
414
|
it('calculates getCallInitJoinReq correctly', () => {
|
|
415
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 5});
|
|
415
416
|
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
416
417
|
cdl.saveTimestamp({key: 'client.locus.join.request', value: 20});
|
|
418
|
+
// showedToJoinReq = 20-5 = 15, showInterstitialTime = 10-5 = 5, result = 15-5 = 10
|
|
417
419
|
assert.deepEqual(cdl.getCallInitJoinReq(), 10);
|
|
418
420
|
});
|
|
419
421
|
|
|
@@ -509,16 +511,60 @@ describe('internal-plugin-metrics', () => {
|
|
|
509
511
|
|
|
510
512
|
it('calculates getStayLobbyTime correctly', () => {
|
|
511
513
|
cdl.saveTimestamp({
|
|
512
|
-
key: 'client.
|
|
514
|
+
key: 'client.lobby.entered',
|
|
513
515
|
value: 10,
|
|
514
516
|
});
|
|
515
517
|
cdl.saveTimestamp({
|
|
516
|
-
key: '
|
|
518
|
+
key: 'client.lobby.exited',
|
|
517
519
|
value: 20,
|
|
518
520
|
});
|
|
519
521
|
assert.deepEqual(cdl.getStayLobbyTime(), 10);
|
|
520
522
|
});
|
|
521
523
|
|
|
524
|
+
describe('getStayLobbyTimeCappedBy', () => {
|
|
525
|
+
it('returns 0 when lobbyStartTimestamp is missing', () => {
|
|
526
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 100});
|
|
527
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 0);
|
|
528
|
+
});
|
|
529
|
+
|
|
530
|
+
it('returns undefined when endTimestampKey is missing', () => {
|
|
531
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
|
|
532
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), undefined);
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
it('uses maximumEndTimestamp when lobby end does not exist', () => {
|
|
536
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
|
|
537
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
538
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 40);
|
|
539
|
+
});
|
|
540
|
+
|
|
541
|
+
it('uses lobby end when it is before maximumEndTimestamp', () => {
|
|
542
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
|
|
543
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
|
|
544
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
545
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 20);
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
it('uses maximumEndTimestamp when lobby end is after it', () => {
|
|
549
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 10});
|
|
550
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 60});
|
|
551
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
552
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 40);
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
it('clamps to 0 when result would be negative', () => {
|
|
556
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 100});
|
|
557
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
558
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 0);
|
|
559
|
+
});
|
|
560
|
+
|
|
561
|
+
it('clamps to MAX_INTEGER when result is very large', () => {
|
|
562
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 0});
|
|
563
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 2147483648});
|
|
564
|
+
assert.deepEqual(cdl.getStayLobbyTimeCappedBy('client.media-engine.ready'), 2147483647);
|
|
565
|
+
});
|
|
566
|
+
});
|
|
567
|
+
|
|
522
568
|
it('calculates getPageJMT correctly', () => {
|
|
523
569
|
cdl.saveLatency('internal.client.pageJMT', 10);
|
|
524
570
|
assert.deepEqual(cdl.getPageJMT(), 10);
|
|
@@ -530,76 +576,40 @@ describe('internal-plugin-metrics', () => {
|
|
|
530
576
|
});
|
|
531
577
|
|
|
532
578
|
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
579
|
cdl.saveLatency('internal.click.to.interstitial', 5);
|
|
546
|
-
cdl.saveTimestamp({
|
|
547
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
548
|
-
value: 20,
|
|
549
|
-
});
|
|
550
580
|
assert.deepEqual(cdl.getClickToInterstitial(), 5);
|
|
551
581
|
});
|
|
552
582
|
|
|
553
|
-
it('calculates getClickToInterstitial
|
|
583
|
+
it('calculates getClickToInterstitial correctly when it is 0', () => {
|
|
554
584
|
cdl.saveLatency('internal.click.to.interstitial', 0);
|
|
555
|
-
cdl.saveTimestamp({
|
|
556
|
-
key: 'internal.client.meeting.interstitial-window.showed',
|
|
557
|
-
value: 20,
|
|
558
|
-
});
|
|
559
585
|
assert.deepEqual(cdl.getClickToInterstitial(), 0);
|
|
560
586
|
});
|
|
561
587
|
|
|
562
|
-
it('calculates getClickToInterstitial
|
|
588
|
+
it('calculates getClickToInterstitial correctly when it is greater than MAX_INTEGER', () => {
|
|
563
589
|
cdl.saveLatency('internal.click.to.interstitial', 2147483648);
|
|
564
590
|
assert.deepEqual(cdl.getClickToInterstitial(), 2147483647);
|
|
565
591
|
});
|
|
566
592
|
|
|
567
593
|
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
594
|
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
595
|
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 5);
|
|
586
596
|
});
|
|
587
597
|
|
|
588
|
-
it('calculates getClickToInterstitialWithUserDelay
|
|
598
|
+
it('calculates getClickToInterstitialWithUserDelay correctly when it is 0', () => {
|
|
589
599
|
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
600
|
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 0);
|
|
595
601
|
});
|
|
596
602
|
|
|
597
|
-
it('calculates getClickToInterstitialWithUserDelay
|
|
603
|
+
it('calculates getClickToInterstitialWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
|
|
598
604
|
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
|
|
599
605
|
assert.deepEqual(cdl.getClickToInterstitialWithUserDelay(), 2147483647);
|
|
600
606
|
});
|
|
601
607
|
|
|
602
608
|
it('calculates getInterstitialToJoinOK correctly', () => {
|
|
609
|
+
cdl.saveTimestamp({
|
|
610
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
611
|
+
value: 5,
|
|
612
|
+
});
|
|
603
613
|
cdl.saveTimestamp({
|
|
604
614
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
605
615
|
value: 10,
|
|
@@ -608,12 +618,13 @@ describe('internal-plugin-metrics', () => {
|
|
|
608
618
|
key: 'client.locus.join.response',
|
|
609
619
|
value: 20,
|
|
610
620
|
});
|
|
621
|
+
// showedToJoinResp = 20-5 = 15, showInterstitialTime = 10-5 = 5, result = 15-5 = 10
|
|
611
622
|
assert.deepEqual(cdl.getInterstitialToJoinOK(), 10);
|
|
612
623
|
});
|
|
613
624
|
|
|
614
625
|
it('calculates getInterstitialToJoinOK correctly when one value is not a number', () => {
|
|
615
626
|
cdl.saveTimestamp({
|
|
616
|
-
key: 'internal.client.interstitial-window.
|
|
627
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
617
628
|
value: 'ten' as unknown as number,
|
|
618
629
|
});
|
|
619
630
|
cdl.saveTimestamp({
|
|
@@ -624,22 +635,12 @@ describe('internal-plugin-metrics', () => {
|
|
|
624
635
|
});
|
|
625
636
|
|
|
626
637
|
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);
|
|
638
|
+
sinon.stub(cdl, 'getInterstitialToMediaOKJMT').returns(42);
|
|
639
|
+
assert.deepEqual(cdl.getCallInitMediaEngineReady(), 42);
|
|
636
640
|
});
|
|
637
641
|
|
|
638
642
|
it('calculates getTotalJMT correctly', () => {
|
|
639
|
-
cdl.
|
|
640
|
-
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
641
|
-
value: 5,
|
|
642
|
-
});
|
|
643
|
+
cdl.saveLatency('internal.click.to.interstitial', 10);
|
|
643
644
|
cdl.saveTimestamp({
|
|
644
645
|
key: 'internal.client.meeting.click.joinbutton',
|
|
645
646
|
value: 10,
|
|
@@ -648,372 +649,276 @@ describe('internal-plugin-metrics', () => {
|
|
|
648
649
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
649
650
|
value: 20,
|
|
650
651
|
});
|
|
652
|
+
cdl.saveTimestamp({
|
|
653
|
+
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
654
|
+
value: 25,
|
|
655
|
+
});
|
|
651
656
|
cdl.saveTimestamp({
|
|
652
657
|
key: 'client.locus.join.response',
|
|
653
658
|
value: 40,
|
|
654
659
|
});
|
|
655
|
-
|
|
660
|
+
// clickToInterstitial = 20-10 = 10
|
|
661
|
+
// showedToJoinLocusResponse = 40-20 = 20
|
|
662
|
+
// showInterstitialTime = 25-20 = 5
|
|
663
|
+
// total = 10 + 20 - 5 = 25
|
|
664
|
+
assert.deepEqual(cdl.getTotalJMT(), 25);
|
|
656
665
|
});
|
|
657
666
|
|
|
658
667
|
it('calculates getTotalJMT correctly when clickToInterstitial is 0', () => {
|
|
659
|
-
|
|
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);
|
|
669
|
-
});
|
|
670
|
-
|
|
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);
|
|
682
|
-
});
|
|
683
|
-
|
|
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);
|
|
695
|
-
});
|
|
696
|
-
|
|
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);
|
|
708
|
-
});
|
|
709
|
-
|
|
710
|
-
it('calculates getTotalJMT correctly when it is greater than MAX_INTEGER', () => {
|
|
668
|
+
cdl.saveLatency('internal.click.to.interstitial', 0);
|
|
711
669
|
cdl.saveTimestamp({
|
|
712
|
-
key: 'internal.client.interstitial-window.
|
|
713
|
-
value:
|
|
670
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
671
|
+
value: 20,
|
|
714
672
|
});
|
|
715
673
|
cdl.saveTimestamp({
|
|
716
674
|
key: 'client.locus.join.response',
|
|
717
675
|
value: 40,
|
|
718
676
|
});
|
|
719
|
-
|
|
720
|
-
|
|
677
|
+
// showedToJoinLocusResponse = 40-20 = 20, showInterstitialTime = 0
|
|
678
|
+
// total = 0 + 20 - 0 = 20
|
|
679
|
+
assert.deepEqual(cdl.getTotalJMT(), 20);
|
|
721
680
|
});
|
|
722
681
|
|
|
723
|
-
it('calculates
|
|
724
|
-
cdl.saveTimestamp({
|
|
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
|
-
});
|
|
682
|
+
it('calculates getTotalJMT correctly when interstitialClickJoinToJoinLocusResponse is 0', () => {
|
|
732
683
|
cdl.saveTimestamp({
|
|
733
684
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
734
|
-
value:
|
|
685
|
+
value: 40,
|
|
735
686
|
});
|
|
687
|
+
cdl.saveLatency('internal.click.to.interstitial', 12);
|
|
736
688
|
cdl.saveTimestamp({
|
|
737
689
|
key: 'client.locus.join.response',
|
|
738
690
|
value: 40,
|
|
739
691
|
});
|
|
740
|
-
|
|
692
|
+
// showedToJoinLocusResponse = 0, showInterstitialTime = 0
|
|
693
|
+
// total = 12 + 0 - 0 = 12
|
|
694
|
+
assert.deepEqual(cdl.getTotalJMT(), 12);
|
|
741
695
|
});
|
|
742
696
|
|
|
743
|
-
|
|
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
|
-
});
|
|
697
|
+
it('calculates getTotalJMT correctly when both clickToInterstitial and interstitialClickJoinToJoinLocusResponse are 0', () => {
|
|
813
698
|
cdl.saveTimestamp({
|
|
814
699
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
815
|
-
value:
|
|
816
|
-
});
|
|
817
|
-
cdl.saveTimestamp({
|
|
818
|
-
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
819
|
-
value: 10,
|
|
820
|
-
});
|
|
821
|
-
cdl.saveTimestamp({
|
|
822
|
-
key: 'client.locus.join.request',
|
|
823
|
-
value: 12,
|
|
700
|
+
value: 40,
|
|
824
701
|
});
|
|
702
|
+
cdl.saveLatency('internal.click.to.interstitial', 0);
|
|
825
703
|
cdl.saveTimestamp({
|
|
826
704
|
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',
|
|
839
705
|
value: 40,
|
|
840
706
|
});
|
|
841
|
-
assert.deepEqual(cdl.
|
|
707
|
+
assert.deepEqual(cdl.getTotalJMT(), 0);
|
|
842
708
|
});
|
|
843
709
|
|
|
844
|
-
it('calculates
|
|
845
|
-
cdl.saveTimestamp({
|
|
846
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
847
|
-
value: 5,
|
|
848
|
-
});
|
|
710
|
+
it('calculates getTotalJMT correctly when both clickToInterstitial is not a number', () => {
|
|
849
711
|
cdl.saveTimestamp({
|
|
850
712
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
851
|
-
value:
|
|
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,
|
|
713
|
+
value: 40,
|
|
860
714
|
});
|
|
715
|
+
cdl.saveLatency('internal.click.to.interstitial', 'eleven' as unknown as number);
|
|
861
716
|
cdl.saveTimestamp({
|
|
862
717
|
key: 'client.locus.join.response',
|
|
863
|
-
value:
|
|
864
|
-
});
|
|
865
|
-
cdl.saveTimestamp({
|
|
866
|
-
key: 'internal.host.meeting.participant.admitted',
|
|
867
|
-
value: 2147483800,
|
|
868
|
-
});
|
|
869
|
-
cdl.saveTimestamp({
|
|
870
|
-
key: 'client.ice.start',
|
|
871
|
-
value: 30,
|
|
872
|
-
});
|
|
873
|
-
cdl.saveTimestamp({
|
|
874
|
-
key: 'client.ice.end',
|
|
875
|
-
value: 100,
|
|
718
|
+
value: 40,
|
|
876
719
|
});
|
|
877
|
-
assert.deepEqual(cdl.
|
|
720
|
+
assert.deepEqual(cdl.getTotalJMT(), undefined);
|
|
878
721
|
});
|
|
879
722
|
|
|
880
|
-
it('calculates
|
|
881
|
-
cdl.saveTimestamp({
|
|
882
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
883
|
-
value: 5,
|
|
884
|
-
options: {meetingId: 'meeting-id'},
|
|
885
|
-
});
|
|
723
|
+
it('calculates getTotalJMT correctly when it is greater than MAX_INTEGER', () => {
|
|
886
724
|
cdl.saveTimestamp({
|
|
887
725
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
888
|
-
value:
|
|
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,
|
|
726
|
+
value: 5,
|
|
897
727
|
});
|
|
898
728
|
cdl.saveTimestamp({
|
|
899
729
|
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',
|
|
912
730
|
value: 40,
|
|
913
731
|
});
|
|
914
|
-
|
|
732
|
+
cdl.saveLatency('internal.click.to.interstitial', 2147483648);
|
|
733
|
+
assert.deepEqual(cdl.getTotalJMT(), 2147483647);
|
|
915
734
|
});
|
|
916
735
|
|
|
917
|
-
it('calculates
|
|
918
|
-
cdl.
|
|
919
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
920
|
-
value: 5,
|
|
921
|
-
options: {meetingId: 'meeting-id'},
|
|
922
|
-
});
|
|
736
|
+
it('calculates getTotalJMTWithUserDelay correctly', () => {
|
|
737
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 10);
|
|
923
738
|
cdl.saveTimestamp({
|
|
924
739
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
925
|
-
value:
|
|
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,
|
|
740
|
+
value: 20,
|
|
934
741
|
});
|
|
935
742
|
cdl.saveTimestamp({
|
|
936
743
|
key: 'client.locus.join.response',
|
|
937
|
-
value:
|
|
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,
|
|
744
|
+
value: 40,
|
|
950
745
|
});
|
|
951
|
-
assert.deepEqual(cdl.
|
|
746
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 30);
|
|
952
747
|
});
|
|
953
748
|
|
|
954
|
-
it('calculates
|
|
955
|
-
cdl.saveLatency('internal.click.to.interstitial.with.user.delay',
|
|
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
|
-
});
|
|
749
|
+
it('calculates getTotalJMTWithUserDelay correctly when clickToInterstitialWithUserDelay is 0', () => {
|
|
750
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
|
|
964
751
|
cdl.saveTimestamp({
|
|
965
|
-
key: 'client.
|
|
752
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
966
753
|
value: 20,
|
|
967
754
|
});
|
|
968
755
|
cdl.saveTimestamp({
|
|
969
|
-
key: '
|
|
970
|
-
value:
|
|
756
|
+
key: 'client.locus.join.response',
|
|
757
|
+
value: 40,
|
|
971
758
|
});
|
|
759
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 20);
|
|
760
|
+
});
|
|
761
|
+
|
|
762
|
+
it('calculates getTotalJMTWithUserDelay correctly when interstitialShowedToJoinLocusResponse is 0', () => {
|
|
972
763
|
cdl.saveTimestamp({
|
|
973
|
-
key: 'client.
|
|
974
|
-
value:
|
|
764
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
765
|
+
value: 40,
|
|
975
766
|
});
|
|
767
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 12);
|
|
976
768
|
cdl.saveTimestamp({
|
|
977
|
-
key: 'client.
|
|
769
|
+
key: 'client.locus.join.response',
|
|
978
770
|
value: 40,
|
|
979
771
|
});
|
|
980
|
-
assert.deepEqual(cdl.
|
|
772
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 12);
|
|
981
773
|
});
|
|
982
774
|
|
|
983
|
-
it('calculates
|
|
984
|
-
cdl.saveTimestamp({
|
|
985
|
-
key: 'internal.client.meeting.click.joinbutton',
|
|
986
|
-
value: 5,
|
|
987
|
-
});
|
|
775
|
+
it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay and interstitialShowedToJoinLocusResponse are 0', () => {
|
|
988
776
|
cdl.saveTimestamp({
|
|
989
777
|
key: 'internal.client.meeting.interstitial-window.showed',
|
|
990
|
-
value:
|
|
778
|
+
value: 40,
|
|
991
779
|
});
|
|
780
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 0);
|
|
992
781
|
cdl.saveTimestamp({
|
|
993
|
-
key: '
|
|
994
|
-
value:
|
|
782
|
+
key: 'client.locus.join.response',
|
|
783
|
+
value: 40,
|
|
995
784
|
});
|
|
785
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 0);
|
|
786
|
+
});
|
|
787
|
+
|
|
788
|
+
it('calculates getTotalJMTWithUserDelay correctly when both clickToInterstitialWithUserDelay is not a number', () => {
|
|
996
789
|
cdl.saveTimestamp({
|
|
997
|
-
key: 'client.
|
|
998
|
-
value:
|
|
790
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
791
|
+
value: 40,
|
|
999
792
|
});
|
|
793
|
+
cdl.saveLatency(
|
|
794
|
+
'internal.click.to.interstitial.with.user.delay',
|
|
795
|
+
'eleven' as unknown as number
|
|
796
|
+
);
|
|
1000
797
|
cdl.saveTimestamp({
|
|
1001
798
|
key: 'client.locus.join.response',
|
|
1002
|
-
value:
|
|
1003
|
-
});
|
|
1004
|
-
cdl.saveTimestamp({
|
|
1005
|
-
key: 'internal.host.meeting.participant.admitted',
|
|
1006
|
-
value: 24,
|
|
799
|
+
value: 40,
|
|
1007
800
|
});
|
|
801
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), undefined);
|
|
802
|
+
});
|
|
803
|
+
|
|
804
|
+
it('calculates getTotalJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
|
|
805
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
|
|
1008
806
|
cdl.saveTimestamp({
|
|
1009
|
-
key: 'client.
|
|
1010
|
-
value:
|
|
807
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
808
|
+
value: 20,
|
|
1011
809
|
});
|
|
1012
810
|
cdl.saveTimestamp({
|
|
1013
|
-
key: 'client.
|
|
811
|
+
key: 'client.locus.join.response',
|
|
1014
812
|
value: 40,
|
|
1015
813
|
});
|
|
1016
|
-
assert.deepEqual(cdl.
|
|
814
|
+
assert.deepEqual(cdl.getTotalJMTWithUserDelay(), 2147483647);
|
|
815
|
+
});
|
|
816
|
+
|
|
817
|
+
it('calculates getTotalMediaJMT correctly with lobby exiting before media-engine.ready', () => {
|
|
818
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
819
|
+
// clickToInterstitial = 3
|
|
820
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
821
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
822
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
823
|
+
// interstitialShowedToMediaEngineReady = 50 - 8 = 42
|
|
824
|
+
// showInterstitialTime = 10 - 8 = 2
|
|
825
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 20});
|
|
826
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
|
|
827
|
+
// stayLobbyTimeCappedByMediaEngineReady = min(30, 50) - 20 = 10
|
|
828
|
+
// total = 3 + 42 - 2 - 10 = 33
|
|
829
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 33);
|
|
830
|
+
});
|
|
831
|
+
|
|
832
|
+
it('calculates getTotalMediaJMT correctly without lobby', () => {
|
|
833
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
834
|
+
// clickToInterstitial = 3
|
|
835
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
836
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
837
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
838
|
+
// interstitialShowedToMediaEngineReady = 50 - 8 = 42
|
|
839
|
+
// showInterstitialTime = 10 - 8 = 2
|
|
840
|
+
// no client.lobby.entered → stayLobbyTimeCappedByMediaEngineReady = 0
|
|
841
|
+
// total = 3 + 42 - 2 - 0 = 43
|
|
842
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 43);
|
|
843
|
+
});
|
|
844
|
+
|
|
845
|
+
it('calculates getTotalMediaJMT correctly with lobby exiting after media-engine.ready', () => {
|
|
846
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
847
|
+
// clickToInterstitial = 3
|
|
848
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
849
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
850
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
851
|
+
// interstitialShowedToMediaEngineReady = 50 - 8 = 42
|
|
852
|
+
// showInterstitialTime = 10 - 8 = 2
|
|
853
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 20});
|
|
854
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 60});
|
|
855
|
+
// stayLobbyTimeCappedByMediaEngineReady = min(60, 50) - 20 = 30
|
|
856
|
+
// total = 3 + 42 - 2 - 30 = 13
|
|
857
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 13);
|
|
858
|
+
});
|
|
859
|
+
|
|
860
|
+
it('calculates getTotalMediaJMT correctly when it is greater than MAX_INTEGER', () => {
|
|
861
|
+
cdl.saveLatency('internal.click.to.interstitial', 5);
|
|
862
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
863
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
864
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 4294967400});
|
|
865
|
+
cdl.saveTimestamp({key: 'client.lobby.entered', value: 28});
|
|
866
|
+
cdl.saveTimestamp({key: 'client.lobby.exited', value: 30});
|
|
867
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 2147483647);
|
|
868
|
+
});
|
|
869
|
+
|
|
870
|
+
it('returns undefined for getTotalMediaJMT when media-engine.ready is missing', () => {
|
|
871
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
872
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
873
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
874
|
+
cdl.saveTimestamp({key: 'client.locus.join.response', value: 20});
|
|
875
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), undefined);
|
|
876
|
+
});
|
|
877
|
+
|
|
878
|
+
it('calculates getTotalMediaJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
|
|
879
|
+
cdl.saveLatency('internal.click.to.interstitial', 3);
|
|
880
|
+
// clickToInterstitial = 3
|
|
881
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
882
|
+
cdl.saveTimestamp({key: 'internal.client.interstitial-window.click.joinbutton', value: 10});
|
|
883
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
884
|
+
// interstitialShowedToMediaEngineReady = 50 - 8 = 42
|
|
885
|
+
// showInterstitialTime = 10 - 8 = 2
|
|
886
|
+
// no client.lobby.entered → stayLobbyTimeCappedByMediaEngineReady = 0
|
|
887
|
+
// total = 3 + 42 - 2 - 0 = 43
|
|
888
|
+
assert.deepEqual(cdl.getTotalMediaJMT(), 43);
|
|
889
|
+
});
|
|
890
|
+
|
|
891
|
+
it('calculates getTotalMediaJMTWithUserDelay correctly', () => {
|
|
892
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 7);
|
|
893
|
+
// clickToInterstitialWithUserDelay = 7
|
|
894
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
895
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
896
|
+
// interstitialShowedToMediaEngineReady = 50 - 10 = 40
|
|
897
|
+
// total = 7 + 40 = 47
|
|
898
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 47);
|
|
899
|
+
});
|
|
900
|
+
|
|
901
|
+
it('calculates getTotalMediaJMTWithUserDelay correctly for guest join', () => {
|
|
902
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 3);
|
|
903
|
+
// clickToInterstitialWithUserDelay = 3
|
|
904
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 8});
|
|
905
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
906
|
+
// interstitialShowedToMediaEngineReady = 50 - 8 = 42
|
|
907
|
+
// total = 3 + 42 = 45
|
|
908
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 45);
|
|
909
|
+
});
|
|
910
|
+
|
|
911
|
+
it('returns undefined for getTotalMediaJMTWithUserDelay when media-engine.ready is missing', () => {
|
|
912
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 7);
|
|
913
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
914
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), undefined);
|
|
915
|
+
});
|
|
916
|
+
|
|
917
|
+
it('calculates getTotalMediaJMTWithUserDelay correctly when it is greater than MAX_INTEGER', () => {
|
|
918
|
+
cdl.saveLatency('internal.click.to.interstitial.with.user.delay', 2147483648);
|
|
919
|
+
cdl.saveTimestamp({key: 'internal.client.meeting.interstitial-window.showed', value: 10});
|
|
920
|
+
cdl.saveTimestamp({key: 'client.media-engine.ready', value: 50});
|
|
921
|
+
assert.deepEqual(cdl.getTotalMediaJMTWithUserDelay(), 2147483647);
|
|
1017
922
|
});
|
|
1018
923
|
|
|
1019
924
|
it('calculates getJoinConfJMT correctly', () => {
|
|
@@ -1041,24 +946,29 @@ describe('internal-plugin-metrics', () => {
|
|
|
1041
946
|
// the maximum possible sum is 2400000, which is less than MAX_INTEGER (2147483647).
|
|
1042
947
|
// This test should verify that the final clamping works by mocking the intermediate methods
|
|
1043
948
|
// to return values that would sum to more than MAX_INTEGER.
|
|
1044
|
-
|
|
949
|
+
|
|
1045
950
|
const originalGetJoinReqResp = cdl.getJoinReqResp;
|
|
1046
951
|
const originalGetICESetupTime = cdl.getICESetupTime;
|
|
1047
|
-
|
|
952
|
+
|
|
1048
953
|
// Mock the methods to return large values that would exceed MAX_INTEGER when summed
|
|
1049
954
|
cdl.getJoinReqResp = () => 1500000000;
|
|
1050
955
|
cdl.getICESetupTime = () => 1000000000;
|
|
1051
|
-
|
|
956
|
+
|
|
1052
957
|
const result = cdl.getJoinConfJMT();
|
|
1053
|
-
|
|
958
|
+
|
|
1054
959
|
// Restore original methods
|
|
1055
960
|
cdl.getJoinReqResp = originalGetJoinReqResp;
|
|
1056
961
|
cdl.getICESetupTime = originalGetICESetupTime;
|
|
1057
|
-
|
|
962
|
+
|
|
1058
963
|
assert.deepEqual(result, 2147483647);
|
|
1059
964
|
});
|
|
1060
965
|
|
|
1061
966
|
it('calculates getClientJMT correctly', () => {
|
|
967
|
+
cdl.saveLatency('internal.click.to.interstitial.for.client.jmt', 5);
|
|
968
|
+
cdl.saveTimestamp({
|
|
969
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
970
|
+
value: 1,
|
|
971
|
+
});
|
|
1062
972
|
cdl.saveTimestamp({
|
|
1063
973
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1064
974
|
value: 2,
|
|
@@ -1067,19 +977,30 @@ describe('internal-plugin-metrics', () => {
|
|
|
1067
977
|
key: 'client.locus.join.request',
|
|
1068
978
|
value: 6,
|
|
1069
979
|
});
|
|
980
|
+
// showedToLocusJoinRequest = 6-1 = 5, showInterstitialTime = 2-1 = 1
|
|
981
|
+
// clickToInterstitialForClientJmt (5) + 5 - 1 = 9
|
|
982
|
+
assert.deepEqual(cdl.getClientJMT(), 9);
|
|
983
|
+
});
|
|
984
|
+
|
|
985
|
+
it('returns undefined for getClientJMT when clickToInterstitialForClientJmt is missing', () => {
|
|
1070
986
|
cdl.saveTimestamp({
|
|
1071
|
-
key: 'client.
|
|
1072
|
-
value:
|
|
987
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
988
|
+
value: 1,
|
|
1073
989
|
});
|
|
1074
990
|
cdl.saveTimestamp({
|
|
1075
|
-
key: 'client.
|
|
1076
|
-
value:
|
|
991
|
+
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
992
|
+
value: 2,
|
|
1077
993
|
});
|
|
1078
994
|
cdl.saveTimestamp({
|
|
1079
|
-
key: 'client.
|
|
1080
|
-
value:
|
|
995
|
+
key: 'client.locus.join.request',
|
|
996
|
+
value: 6,
|
|
1081
997
|
});
|
|
1082
|
-
assert.deepEqual(cdl.getClientJMT(),
|
|
998
|
+
assert.deepEqual(cdl.getClientJMT(), undefined);
|
|
999
|
+
});
|
|
1000
|
+
|
|
1001
|
+
it('returns undefined for getClientJMT when interstitialJoinToLocusJoinRequest is missing', () => {
|
|
1002
|
+
cdl.saveLatency('internal.click.to.interstitial.for.client.jmt', 5);
|
|
1003
|
+
assert.deepEqual(cdl.getClientJMT(), undefined);
|
|
1083
1004
|
});
|
|
1084
1005
|
|
|
1085
1006
|
it('calculates getAudioJoinRespRxStart correctly', () => {
|
|
@@ -1131,37 +1052,48 @@ describe('internal-plugin-metrics', () => {
|
|
|
1131
1052
|
});
|
|
1132
1053
|
|
|
1133
1054
|
it('calculates getInterstitialToMediaOKJMT correctly', () => {
|
|
1055
|
+
cdl.saveTimestamp({
|
|
1056
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
1057
|
+
value: 2,
|
|
1058
|
+
});
|
|
1134
1059
|
cdl.saveTimestamp({
|
|
1135
1060
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1136
1061
|
value: 4,
|
|
1137
1062
|
});
|
|
1138
1063
|
cdl.saveTimestamp({
|
|
1139
|
-
key: 'client.
|
|
1064
|
+
key: 'client.lobby.entered',
|
|
1140
1065
|
value: 10,
|
|
1141
1066
|
});
|
|
1142
1067
|
cdl.saveTimestamp({
|
|
1143
|
-
key: '
|
|
1068
|
+
key: 'client.lobby.exited',
|
|
1144
1069
|
value: 12,
|
|
1145
1070
|
});
|
|
1146
1071
|
cdl.saveTimestamp({
|
|
1147
1072
|
key: 'client.ice.end',
|
|
1148
1073
|
value: 14,
|
|
1149
1074
|
});
|
|
1075
|
+
// showedToIceEnd = 14-2 = 12, showInterstitialTime = 4-2 = 2
|
|
1076
|
+
// stayLobbyTimeCappedByIceEnd = min(12,14)-10 = 2
|
|
1077
|
+
// result = 12 - 2 - 2 = 8
|
|
1150
1078
|
assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 8);
|
|
1151
1079
|
});
|
|
1152
1080
|
|
|
1153
1081
|
it('calculates getInterstitialToMediaOKJMT correctly when it is greater than MAX_INTEGER', () => {
|
|
1082
|
+
cdl.saveTimestamp({
|
|
1083
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
1084
|
+
value: 4,
|
|
1085
|
+
});
|
|
1154
1086
|
cdl.saveTimestamp({
|
|
1155
1087
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1156
1088
|
value: 4,
|
|
1157
1089
|
});
|
|
1158
1090
|
cdl.saveTimestamp({
|
|
1159
|
-
key: 'client.
|
|
1091
|
+
key: 'client.lobby.entered',
|
|
1160
1092
|
value: 10,
|
|
1161
1093
|
});
|
|
1162
1094
|
cdl.saveTimestamp({
|
|
1163
|
-
key: '
|
|
1164
|
-
value:
|
|
1095
|
+
key: 'client.lobby.exited',
|
|
1096
|
+
value: 10,
|
|
1165
1097
|
});
|
|
1166
1098
|
cdl.saveTimestamp({
|
|
1167
1099
|
key: 'client.ice.end',
|
|
@@ -1171,6 +1103,29 @@ describe('internal-plugin-metrics', () => {
|
|
|
1171
1103
|
});
|
|
1172
1104
|
|
|
1173
1105
|
it('calculates getInterstitialToMediaOKJMT correctly without lobby', () => {
|
|
1106
|
+
cdl.saveTimestamp({
|
|
1107
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
1108
|
+
value: 2,
|
|
1109
|
+
});
|
|
1110
|
+
cdl.saveTimestamp({
|
|
1111
|
+
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1112
|
+
value: 4,
|
|
1113
|
+
});
|
|
1114
|
+
cdl.saveTimestamp({
|
|
1115
|
+
key: 'client.ice.end',
|
|
1116
|
+
value: 14,
|
|
1117
|
+
});
|
|
1118
|
+
// showedToIceEnd = 14-2 = 12, showInterstitialTime = 4-2 = 2
|
|
1119
|
+
// stayLobbyTimeCappedByIceEnd = 0 (no lobby)
|
|
1120
|
+
// result = 12 - 2 - 0 = 10
|
|
1121
|
+
assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
|
|
1122
|
+
});
|
|
1123
|
+
|
|
1124
|
+
it('calculates getInterstitialToMediaOKJMT correctly when there is no lobby and stayLobbyTime defaults to 0', () => {
|
|
1125
|
+
cdl.saveTimestamp({
|
|
1126
|
+
key: 'internal.client.meeting.interstitial-window.showed',
|
|
1127
|
+
value: 2,
|
|
1128
|
+
});
|
|
1174
1129
|
cdl.saveTimestamp({
|
|
1175
1130
|
key: 'internal.client.interstitial-window.click.joinbutton',
|
|
1176
1131
|
value: 4,
|
|
@@ -1179,6 +1134,9 @@ describe('internal-plugin-metrics', () => {
|
|
|
1179
1134
|
key: 'client.ice.end',
|
|
1180
1135
|
value: 14,
|
|
1181
1136
|
});
|
|
1137
|
+
// showedToIceEnd = 14-2 = 12, showInterstitialTime = 4-2 = 2
|
|
1138
|
+
// stayLobbyTimeCappedByIceEnd = 0 (no lobby)
|
|
1139
|
+
// result = 12 - 2 - 0 = 10
|
|
1182
1140
|
assert.deepEqual(cdl.getInterstitialToMediaOKJMT(), 10);
|
|
1183
1141
|
});
|
|
1184
1142
|
|