|
@@ -4,7 +4,6 @@ import Listenable from '../util/Listenable';
|
4
|
4
|
import { nextTick } from '../util/TestUtils';
|
5
|
5
|
|
6
|
6
|
import IceFailedHandling from './IceFailedHandling';
|
7
|
|
-import networkInfo from './NetworkInfo';
|
8
|
7
|
|
9
|
8
|
/**
|
10
|
9
|
* Mock conference for the purpose of this test.
|
|
@@ -28,13 +27,15 @@ describe('IceFailedHandling', () => {
|
28
|
27
|
|
29
|
28
|
beforeEach(() => {
|
30
|
29
|
jasmine.clock().install();
|
31
|
|
- networkInfo.updateNetworkInfo({ isOnline: true });
|
32
|
30
|
mockConference = new MockConference();
|
33
|
31
|
iceFailedHandling = new IceFailedHandling(mockConference);
|
34
|
32
|
mockConference.eventEmitter = {
|
35
|
33
|
// eslint-disable-next-line no-empty-function
|
36
|
34
|
emit: () => { }
|
37
|
35
|
};
|
|
36
|
+ mockConference.xmpp = {
|
|
37
|
+ ping: () => Promise.resolve()
|
|
38
|
+ };
|
38
|
39
|
emitEventSpy = spyOn(mockConference.eventEmitter, 'emit');
|
39
|
40
|
});
|
40
|
41
|
|
|
@@ -46,34 +47,32 @@ describe('IceFailedHandling', () => {
|
46
|
47
|
beforeEach(() => {
|
47
|
48
|
mockConference.options.config.enableIceRestart = false;
|
48
|
49
|
});
|
49
|
|
- it('emits ICE failed with 15 seconds delay', () => {
|
50
|
|
- iceFailedHandling.start();
|
51
|
|
- jasmine.clock().tick(10000);
|
52
|
|
- expect(emitEventSpy).not.toHaveBeenCalled();
|
53
|
|
-
|
54
|
|
- jasmine.clock().tick(5100);
|
55
|
|
- expect(emitEventSpy).toHaveBeenCalled();
|
56
|
|
- });
|
57
|
|
- it('starts counting the time after the internet comes back online', () => {
|
|
50
|
+ it('emits ICE failed with 2 seconds delay after XMPP ping comes through', () => {
|
58
|
51
|
iceFailedHandling.start();
|
59
|
|
- jasmine.clock().tick(3000);
|
60
|
52
|
|
61
|
|
- networkInfo.updateNetworkInfo({ isOnline: false });
|
62
|
|
- jasmine.clock().tick(16000);
|
63
|
|
- expect(emitEventSpy).not.toHaveBeenCalled();
|
|
53
|
+ return nextTick() // tick for ping
|
|
54
|
+ .then(() => {
|
|
55
|
+ expect(emitEventSpy).not.toHaveBeenCalled();
|
64
|
56
|
|
65
|
|
- networkInfo.updateNetworkInfo({ isOnline: true });
|
66
|
|
- jasmine.clock().tick(16000);
|
67
|
|
- expect(emitEventSpy).toHaveBeenCalled();
|
|
57
|
+ return nextTick(2500); // tick for the 2 sec ice timeout
|
|
58
|
+ })
|
|
59
|
+ .then(() => {
|
|
60
|
+ expect(emitEventSpy).toHaveBeenCalled();
|
|
61
|
+ });
|
68
|
62
|
});
|
69
|
63
|
it('cancel method cancels the ICE failed event', () => {
|
70
|
64
|
iceFailedHandling.start();
|
71
|
|
- jasmine.clock().tick(10000);
|
72
|
|
- expect(emitEventSpy).not.toHaveBeenCalled();
|
73
|
65
|
|
74
|
|
- iceFailedHandling.cancel();
|
75
|
|
- jasmine.clock().tick(5100);
|
76
|
|
- expect(emitEventSpy).not.toHaveBeenCalled();
|
|
66
|
+ return nextTick(1000) // tick for ping
|
|
67
|
+ .then(() => {
|
|
68
|
+ expect(emitEventSpy).not.toHaveBeenCalled();
|
|
69
|
+ iceFailedHandling.cancel();
|
|
70
|
+
|
|
71
|
+ return nextTick(2500); // tick for ice timeout
|
|
72
|
+ })
|
|
73
|
+ .then(() => {
|
|
74
|
+ expect(emitEventSpy).not.toHaveBeenCalled();
|
|
75
|
+ });
|
77
|
76
|
});
|
78
|
77
|
});
|
79
|
78
|
describe('when ICE restart are enabled', () => {
|
|
@@ -81,9 +80,6 @@ describe('IceFailedHandling', () => {
|
81
|
80
|
|
82
|
81
|
beforeEach(() => {
|
83
|
82
|
mockConference.options.config.enableIceRestart = true;
|
84
|
|
- mockConference.xmpp = {
|
85
|
|
- ping: () => Promise.resolve()
|
86
|
|
- };
|
87
|
83
|
mockConference.jvbJingleSession = {
|
88
|
84
|
getIceConnectionState: () => 'failed',
|
89
|
85
|
// eslint-disable-next-line no-empty-function
|
|
@@ -94,23 +90,26 @@ describe('IceFailedHandling', () => {
|
94
|
90
|
it('send ICE failed notification to Jicofo', () => {
|
95
|
91
|
iceFailedHandling.start();
|
96
|
92
|
|
97
|
|
- // first it send ping which is async - need next tick
|
98
|
|
- return nextTick().then(() => {
|
99
|
|
- jasmine.clock().tick(3000);
|
100
|
|
- expect(sendIceFailedSpy).toHaveBeenCalled();
|
101
|
|
- });
|
|
93
|
+ return nextTick() // tick for ping
|
|
94
|
+ .then(() => nextTick(2500)) // tick for ice timeout
|
|
95
|
+ .then(() => {
|
|
96
|
+ expect(sendIceFailedSpy).toHaveBeenCalled();
|
|
97
|
+ });
|
102
|
98
|
});
|
103
|
99
|
it('not send ICE failed notification to Jicofo if canceled', () => {
|
104
|
100
|
iceFailedHandling.start();
|
105
|
101
|
|
106
|
102
|
// first it send ping which is async - need next tick
|
107
|
|
- return nextTick().then(() => {
|
108
|
|
- jasmine.clock().tick(1000);
|
109
|
|
- expect(sendIceFailedSpy).not.toHaveBeenCalled();
|
110
|
|
- iceFailedHandling.cancel();
|
111
|
|
- jasmine.clock().tick(3000);
|
112
|
|
- expect(sendIceFailedSpy).not.toHaveBeenCalled();
|
113
|
|
- });
|
|
103
|
+ return nextTick(1000)
|
|
104
|
+ .then(() => {
|
|
105
|
+ expect(sendIceFailedSpy).not.toHaveBeenCalled();
|
|
106
|
+ iceFailedHandling.cancel();
|
|
107
|
+
|
|
108
|
+ return nextTick(3000); // tick for ice timeout
|
|
109
|
+ })
|
|
110
|
+ .then(() => {
|
|
111
|
+ expect(sendIceFailedSpy).not.toHaveBeenCalled();
|
|
112
|
+ });
|
114
|
113
|
});
|
115
|
114
|
});
|
116
|
115
|
});
|