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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
;(function () {
'use strict'
var chai = require('chai')
var expect = chai.expect
var utils = require('./utils')
describe('Test advanced friends', function () {
var apps = []
var urls = []
function makeFriend (pod_number, callback) {
return utils.makeFriend(urls[pod_number - 1], callback)
}
function getFriendsList (pod_number, end) {
return utils.getFriendsList(urls[pod_number - 1], end)
}
function uploadVideo (pod_number, callback) {
var name = 'my super video'
var description = 'my super description'
var fixture = 'video_short.webm'
return utils.uploadVideo(urls[pod_number - 1], name, description, fixture, callback)
}
beforeEach(function (done) {
this.timeout(30000)
utils.runMultipleServers(6, function (apps_run, urls_run) {
apps = apps_run
urls = urls_run
done()
})
})
afterEach(function (done) {
apps.forEach(function (app) {
process.kill(-app.pid)
})
if (this.ok) {
utils.flushTests(function () {
done()
})
} else {
done()
}
})
it('Should make friends with two pod each in a different group', function (done) {
this.timeout(10000)
// Pod 3 makes friend with the first one
makeFriend(3, function () {
// Pod 4 makes friend with the second one
makeFriend(4, function () {
// Now if the fifth wants to make friends with the third et the first
makeFriend(5, function () {
// It should have 0 friends
getFriendsList(5, function (err, res) {
if (err) throw err
expect(res.body.length).to.equal(0)
done()
})
})
})
})
})
it('Should make friends with the pods 1, 2, 3', function (done) {
this.timeout(150000)
// Pods 1, 2, 3 and 4 become friends (yes this is beautiful)
makeFriend(2, function () {
makeFriend(1, function () {
makeFriend(4, function () {
// Kill the server 4
apps[3].kill()
// Expulse pod 4 from pod 1 and 2
uploadVideo(1, function () {
setTimeout(function () {
uploadVideo(1, function () {
setTimeout(function () {
uploadVideo(2, function () {
setTimeout(function () {
uploadVideo(2, function () {
setTimeout(function () {
// Rerun server 4
utils.runServer(4, function (app, url) {
apps[3] = app
getFriendsList(4, function (err, res) {
if (err) throw err
// Pod 4 didn't know pod 1 and 2 removed it
expect(res.body.length).to.equal(3)
// Pod 6 ask pod 1, 2 and 3
makeFriend(6, function () {
getFriendsList(6, function (err, res) {
if (err) throw err
// Pod 4 should not be our friend
var result = res.body
expect(result.length).to.equal(3)
for (var pod of result) {
expect(pod.url).not.equal(urls[3])
}
done()
})
})
})
})
}, 11000)
})
}, 11000)
})
}, 11000)
})
}, 11000)
})
})
})
})
})
})
})()
|