-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathtest13RtmsManagerRecovery.js
More file actions
76 lines (65 loc) · 2.07 KB
/
Copy pathtest13RtmsManagerRecovery.js
File metadata and controls
76 lines (65 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { RTMSManager } from '../../library/javascript/rtmsManager/RTMSManager.js';
import { handleSignalingMessage } from '../../library/javascript/rtmsManager/signalingSocketMessageHandler.js';
testInterruptedWebhookReconnectsOwnedStream();
testMediaInterruptionEmitsDedicatedEvent();
console.log('13 RTMSManager recovery tester passed: 2/2');
function testInterruptedWebhookReconnectsOwnedStream() {
const manager = new RTMSManager({ logger: testLogger() });
let reconnects = 0;
manager.connectionManager.add('recovery-stream', {
streamId: 'recovery-stream',
rtmsId: 'recovery-meeting',
rtmsType: 'meeting',
reconnect() {
reconnects += 1;
}
});
manager.emit('meeting.rtms_interrupted', {
meeting_uuid: 'recovery-meeting',
rtms_stream_id: 'recovery-stream'
});
assert(reconnects === 1, 'interrupted webhook did not reconnect the owned stream');
pass('interrupted_webhook_reconnects_owned_stream');
}
function testMediaInterruptionEmitsDedicatedEvent() {
const events = [];
handleSignalingMessage(
Buffer.from(JSON.stringify({
msg_type: 6,
event: {
event_type: 7,
timestamp: 1779460000000
}
})),
'media-recovery-meeting',
'media-recovery-stream',
{},
{
rtmsType: 'meeting',
config: {}
},
(name, event) => events.push({ name, event }),
32,
'client-id',
'client-secret'
);
const mediaInterrupted = events.find((entry) => entry.name === 'media_connection_interrupted');
const genericEvent = events.find((entry) => entry.name === 'event');
assert(mediaInterrupted?.event?.streamId === 'media-recovery-stream', 'media interruption event was not emitted');
assert(genericEvent?.event?.eventType === 7, 'generic RTMS media interruption event was not preserved');
pass('media_interruption_emits_dedicated_event');
}
function testLogger() {
return {
error() {},
info() {},
log() {},
warn() {}
};
}
function pass(name) {
console.log(`PASS ${name}`);
}
function assert(condition, message) {
if (!condition) throw new Error(message);
}