@webex/plugin-meetings 2.60.1-next.1 → 2.60.1-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/README.md +12 -0
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.d.ts +18 -4
- package/dist/constants.js +23 -9
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.d.ts +1 -1
- package/dist/locus-info/index.js +8 -8
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/index.d.ts +119 -31
- package/dist/meeting/index.js +1021 -805
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +25 -18
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.d.ts +16 -0
- package/dist/meeting/util.js +71 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +20 -0
- package/dist/meeting/voicea-meeting.js +201 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meetings/index.d.ts +25 -3
- package/dist/meetings/index.js +83 -32
- package/dist/meetings/index.js.map +1 -1
- package/dist/reachability/index.js +11 -6
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +3 -1
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +50 -54
- package/dist/roap/index.js.map +1 -1
- package/dist/statsAnalyzer/index.js +1 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +13 -10
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -21
- package/src/constants.ts +22 -4
- package/src/locus-info/index.ts +13 -12
- package/src/meeting/index.ts +546 -276
- package/src/meeting/request.ts +7 -0
- package/src/meeting/util.ts +97 -0
- package/src/meeting/voicea-meeting.ts +161 -0
- package/src/meetings/index.ts +59 -18
- package/src/reachability/index.ts +7 -4
- package/src/reconnection-manager/index.ts +1 -1
- package/src/roap/index.ts +49 -51
- package/src/statsAnalyzer/index.ts +2 -2
- package/src/statsAnalyzer/mqaUtil.ts +15 -14
- package/test/unit/spec/locus-info/index.js +53 -5
- package/test/unit/spec/meeting/index.js +1792 -1139
- package/test/unit/spec/meeting/request.js +22 -12
- package/test/unit/spec/meeting/utils.js +93 -0
- package/test/unit/spec/meetings/index.js +180 -21
- package/test/unit/spec/reachability/index.ts +2 -1
- package/test/unit/spec/reconnection-manager/index.js +1 -0
- package/test/unit/spec/roap/index.ts +28 -42
- package/test/unit/spec/stats-analyzer/index.js +415 -30
|
@@ -29,13 +29,14 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
|
|
|
29
29
|
// add rtpPacket info inside common as also for call analyzer
|
|
30
30
|
audioReceiver.common.rtpPackets =
|
|
31
31
|
statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
|
|
32
|
+
audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
|
|
33
|
+
|
|
32
34
|
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
|
33
35
|
// collect the packets received for the last min
|
|
34
|
-
|
|
35
|
-
audioReceiver.common.mediaHopByHopLost =
|
|
36
|
-
statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
37
|
-
audioReceiver.common.rtpHopByHopLost =
|
|
36
|
+
const totalPacketsLost =
|
|
38
37
|
statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
38
|
+
audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
|
|
39
|
+
audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
|
|
39
40
|
|
|
40
41
|
audioReceiver.streams[0].common.maxRtpJitter =
|
|
41
42
|
// @ts-ignore
|
|
@@ -49,6 +50,7 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
|
|
|
49
50
|
statsResults[mediaType][sendrecvType].fecPacketsReceived -
|
|
50
51
|
lastFecPacketsReceived -
|
|
51
52
|
(statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
|
|
53
|
+
audioReceiver.common.fecPackets = fecRecovered || 0;
|
|
52
54
|
|
|
53
55
|
audioReceiver.streams[0].common.rtpEndToEndLost =
|
|
54
56
|
statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
|
|
@@ -105,7 +107,7 @@ export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, m
|
|
|
105
107
|
statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
|
|
106
108
|
|
|
107
109
|
audioSender.common.remoteLossRate =
|
|
108
|
-
|
|
110
|
+
audioSender.common.rtpPackets > 0
|
|
109
111
|
? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets
|
|
110
112
|
: 0; // This is the packets sent with in last min || 0;
|
|
111
113
|
|
|
@@ -156,16 +158,15 @@ export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSen
|
|
|
156
158
|
statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
|
|
157
159
|
videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;
|
|
158
160
|
|
|
159
|
-
|
|
160
|
-
statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
161
|
-
|
|
162
|
-
// Hope by hop are numbers and not percentage so we compare on what we sent the last min
|
|
161
|
+
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
|
163
162
|
// this is including packet lost
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
const totalPacketsLost =
|
|
164
|
+
statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
165
|
+
videoReceiver.common.mediaHopByHopLost = totalPacketsLost;
|
|
166
|
+
videoReceiver.common.rtpHopByHopLost = totalPacketsLost;
|
|
166
167
|
|
|
167
168
|
// End to end packetloss is after recovery
|
|
168
|
-
videoReceiver.streams[0].common.rtpEndToEndLost =
|
|
169
|
+
videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketsLost;
|
|
169
170
|
|
|
170
171
|
// calculate this values
|
|
171
172
|
|
|
@@ -249,8 +250,8 @@ export const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, m
|
|
|
249
250
|
statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
|
|
250
251
|
|
|
251
252
|
videoSender.common.remoteLossRate =
|
|
252
|
-
|
|
253
|
-
? (totalpacketsLostForaMin * 100) /
|
|
253
|
+
videoSender.common.rtpPackets > 0
|
|
254
|
+
? (totalpacketsLostForaMin * 100) / videoSender.common.rtpPackets
|
|
254
255
|
: 0; // This is the packets sent with in last min || 0;
|
|
255
256
|
|
|
256
257
|
videoSender.common.maxRoundTripTime =
|
|
@@ -2058,7 +2058,7 @@ describe('plugin-meetings', () => {
|
|
|
2058
2058
|
});
|
|
2059
2059
|
|
|
2060
2060
|
describe('#getTheLocusToUpdate', () => {
|
|
2061
|
-
it('return the cache locus if return to main session', () => {
|
|
2061
|
+
it('return the cache locus if return to main session and do not clear main session cache', () => {
|
|
2062
2062
|
locusInfo.mainSessionLocusCache = {url: 'url'};
|
|
2063
2063
|
locusInfo.controls = {
|
|
2064
2064
|
breakout: {
|
|
@@ -2074,9 +2074,13 @@ describe('plugin-meetings', () => {
|
|
|
2074
2074
|
};
|
|
2075
2075
|
|
|
2076
2076
|
assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), {url: 'url'});
|
|
2077
|
+
|
|
2078
|
+
locusInfo.clearMainSessionLocusCache = sinon.stub();
|
|
2079
|
+
locusInfo.getTheLocusToUpdate(newLocus);
|
|
2080
|
+
assert.notCalled(locusInfo.clearMainSessionLocusCache)
|
|
2077
2081
|
});
|
|
2078
2082
|
|
|
2079
|
-
it('return the new locus if return to main session but no cache', () => {
|
|
2083
|
+
it('return the new locus if return to main session but no cache and do not clear main session cache', () => {
|
|
2080
2084
|
locusInfo.mainSessionLocusCache = null;
|
|
2081
2085
|
locusInfo.controls = {
|
|
2082
2086
|
breakout: {
|
|
@@ -2092,10 +2096,22 @@ describe('plugin-meetings', () => {
|
|
|
2092
2096
|
};
|
|
2093
2097
|
|
|
2094
2098
|
assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), newLocus);
|
|
2099
|
+
|
|
2100
|
+
locusInfo.clearMainSessionLocusCache = sinon.stub();
|
|
2101
|
+
locusInfo.getTheLocusToUpdate(newLocus);
|
|
2102
|
+
assert.notCalled(locusInfo.clearMainSessionLocusCache)
|
|
2095
2103
|
});
|
|
2096
2104
|
|
|
2097
|
-
it('return the new locus if not return to main session', () => {
|
|
2098
|
-
locusInfo.mainSessionLocusCache = {
|
|
2105
|
+
it('return the new locus if not return to main session and clear main session cache', () => {
|
|
2106
|
+
locusInfo.mainSessionLocusCache = {
|
|
2107
|
+
controls: {
|
|
2108
|
+
breakout: {
|
|
2109
|
+
sessionType: 'MAIN',
|
|
2110
|
+
},
|
|
2111
|
+
},
|
|
2112
|
+
self: {removed: true}
|
|
2113
|
+
};
|
|
2114
|
+
locusInfo.fullState = {state: 'ACTIVE'}
|
|
2099
2115
|
locusInfo.controls = {
|
|
2100
2116
|
breakout: {
|
|
2101
2117
|
sessionType: 'MAIN',
|
|
@@ -2109,7 +2125,39 @@ describe('plugin-meetings', () => {
|
|
|
2109
2125
|
},
|
|
2110
2126
|
};
|
|
2111
2127
|
|
|
2112
|
-
|
|
2128
|
+
locusInfo.clearMainSessionLocusCache = sinon.stub();
|
|
2129
|
+
const result = locusInfo.getTheLocusToUpdate(newLocus);
|
|
2130
|
+
assert.calledOnce(locusInfo.clearMainSessionLocusCache)
|
|
2131
|
+
|
|
2132
|
+
assert.deepEqual(result, newLocus);
|
|
2133
|
+
});
|
|
2134
|
+
|
|
2135
|
+
it('do not clear main session cache when "mainSessionLocusCache?.self?.removed" is not true', () => {
|
|
2136
|
+
locusInfo.mainSessionLocusCache = {
|
|
2137
|
+
controls: {
|
|
2138
|
+
breakout: {
|
|
2139
|
+
sessionType: 'MAIN',
|
|
2140
|
+
},
|
|
2141
|
+
},
|
|
2142
|
+
self: {removed: undefined}
|
|
2143
|
+
};
|
|
2144
|
+
locusInfo.fullState = {state: 'ACTIVE'}
|
|
2145
|
+
locusInfo.controls = {
|
|
2146
|
+
breakout: {
|
|
2147
|
+
sessionType: 'MAIN',
|
|
2148
|
+
},
|
|
2149
|
+
};
|
|
2150
|
+
const newLocus = {
|
|
2151
|
+
controls: {
|
|
2152
|
+
breakout: {
|
|
2153
|
+
sessionType: 'BREAKOUT',
|
|
2154
|
+
},
|
|
2155
|
+
},
|
|
2156
|
+
};
|
|
2157
|
+
|
|
2158
|
+
locusInfo.clearMainSessionLocusCache = sinon.stub();
|
|
2159
|
+
locusInfo.getTheLocusToUpdate(newLocus);
|
|
2160
|
+
assert.notCalled(locusInfo.clearMainSessionLocusCache)
|
|
2113
2161
|
});
|
|
2114
2162
|
});
|
|
2115
2163
|
|