]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - test/api/multiplePods.js
4 var async
= require('async')
5 var chai
= require('chai')
6 var expect
= chai
.expect
8 var utils
= require('./utils')
9 var webtorrent
= require(__dirname
+ '/../../src/webTorrentNode')
10 webtorrent
.silent
= true
12 describe('Test multiple pods', function () {
17 before(function (done
) {
23 utils
.flushAndRunMultipleServers(3, function (apps_run
, urls_run
) {
29 // The second pod make friend with the third
31 utils
.makeFriends(urls
[1], next
)
33 // Wait for the request between pods
35 setTimeout(next
, 10000)
37 // Pod 1 make friends too
39 utils
.makeFriends(urls
[0], next
)
42 webtorrent
.create({ host: 'client', port: '1' }, next
)
47 it('Should not have videos for all pods', function (done
) {
48 async
.each(urls
, function (url
, callback
) {
49 utils
.getVideosList(url
, function (err
, res
) {
52 expect(res
.body
).to
.be
.an('array')
53 expect(res
.body
.length
).to
.equal(0)
60 describe('Should upload the video and propagate on each pod', function () {
61 it('Should upload the video on pod 1 and propagate on each pod', function (done
) {
66 utils
.uploadVideo(urls
[0], 'my super name for pod 1', 'my super description for pod 1', 'video_short1.webm', next
)
69 setTimeout(next
, 11000)
71 // All pods should have this video
75 async
.each(urls
, function (url
, callback
) {
76 var base_magnet
= null
78 utils
.getVideosList(url
, function (err
, res
) {
82 expect(videos
).to
.be
.an('array')
83 expect(videos
.length
).to
.equal(1)
85 expect(video
.name
).to
.equal('my super name for pod 1')
86 expect(video
.description
).to
.equal('my super description for pod 1')
87 expect(video
.podUrl
).to
.equal('http://localhost:9001')
88 expect(video
.magnetUri
).to
.exist
90 // All pods should have the same magnet Uri
91 if (base_magnet
=== null) {
92 base_magnet
= video
.magnetUri
94 expect(video
.magnetUri
).to
.equal
.magnetUri
104 it('Should upload the video on pod 2 and propagate on each pod', function (done
) {
109 utils
.uploadVideo(urls
[1], 'my super name for pod 2', 'my super description for pod 2', 'video_short2.webm', next
)
112 setTimeout(next
, 11000)
114 // All pods should have this video
118 async
.each(urls
, function (url
, callback
) {
119 var base_magnet
= null
121 utils
.getVideosList(url
, function (err
, res
) {
124 var videos
= res
.body
125 expect(videos
).to
.be
.an('array')
126 expect(videos
.length
).to
.equal(2)
127 var video
= videos
[1]
128 expect(video
.name
).to
.equal('my super name for pod 2')
129 expect(video
.description
).to
.equal('my super description for pod 2')
130 expect(video
.podUrl
).to
.equal('http://localhost:9002')
131 expect(video
.magnetUri
).to
.exist
133 // All pods should have the same magnet Uri
134 if (base_magnet
=== null) {
135 base_magnet
= video
.magnetUri
137 expect(video
.magnetUri
).to
.equal
.magnetUri
147 it('Should upload two videos on pod 3 and propagate on each pod', function (done
) {
152 utils
.uploadVideo(urls
[2], 'my super name for pod 3', 'my super description for pod 3', 'video_short3.webm', next
)
155 utils
.uploadVideo(urls
[2], 'my super name for pod 3-2', 'my super description for pod 3-2', 'video_short.webm', next
)
158 setTimeout(next
, 22000)
163 var base_magnet
= null
164 // All pods should have this video
165 async
.each(urls
, function (url
, callback
) {
166 utils
.getVideosList(url
, function (err
, res
) {
169 var videos
= res
.body
170 expect(videos
).to
.be
.an('array')
171 expect(videos
.length
).to
.equal(4)
172 var video
= videos
[2]
173 expect(video
.name
).to
.equal('my super name for pod 3')
174 expect(video
.description
).to
.equal('my super description for pod 3')
175 expect(video
.podUrl
).to
.equal('http://localhost:9003')
176 expect(video
.magnetUri
).to
.exist
179 expect(video
.name
).to
.equal('my super name for pod 3-2')
180 expect(video
.description
).to
.equal('my super description for pod 3-2')
181 expect(video
.podUrl
).to
.equal('http://localhost:9003')
182 expect(video
.magnetUri
).to
.exist
184 // All pods should have the same magnet Uri
185 if (base_magnet
=== null) {
186 base_magnet
= video
.magnetUri
188 expect(video
.magnetUri
).to
.equal
.magnetUri
199 describe('Should seed the uploaded video', function () {
200 it('Should add the file 1 by asking pod 3', function (done
) {
201 // Yes, this could be long
204 utils
.getVideosList(urls
[2], function (err
, res
) {
207 var video
= res
.body
[0]
208 to_remove
.push(res
.body
[2]._id
)
209 to_remove
.push(res
.body
[3]._id
)
211 webtorrent
.add(video
.magnetUri
, function (torrent
) {
212 expect(torrent
.files
).to
.exist
213 expect(torrent
.files
.length
).to
.equal(1)
214 expect(torrent
.files
[0].path
).to
.exist
.and
.to
.not
.equal('')
221 it('Should add the file 2 by asking pod 1', function (done
) {
222 // Yes, this could be long
225 utils
.getVideosList(urls
[0], function (err
, res
) {
228 var video
= res
.body
[1]
230 webtorrent
.add(video
.magnetUri
, function (torrent
) {
231 expect(torrent
.files
).to
.exist
232 expect(torrent
.files
.length
).to
.equal(1)
233 expect(torrent
.files
[0].path
).to
.exist
.and
.to
.not
.equal('')
240 it('Should add the file 3 by asking pod 2', function (done
) {
241 // Yes, this could be long
244 utils
.getVideosList(urls
[1], function (err
, res
) {
247 var video
= res
.body
[2]
249 webtorrent
.add(video
.magnetUri
, function (torrent
) {
250 expect(torrent
.files
).to
.exist
251 expect(torrent
.files
.length
).to
.equal(1)
252 expect(torrent
.files
[0].path
).to
.exist
.and
.to
.not
.equal('')
259 it('Should add the file 3-2 by asking pod 1', function (done
) {
260 // Yes, this could be long
263 utils
.getVideosList(urls
[0], function (err
, res
) {
266 var video
= res
.body
[3]
268 webtorrent
.add(video
.magnetUri
, function (torrent
) {
269 expect(torrent
.files
).to
.exist
270 expect(torrent
.files
.length
).to
.equal(1)
271 expect(torrent
.files
[0].path
).to
.exist
.and
.to
.not
.equal('')
278 it('Should remove the file 3 and 3-2 by asking pod 3', function (done
) {
283 utils
.removeVideo(urls
[2], to_remove
[0], next
)
286 utils
.removeVideo(urls
[2], to_remove
[1], next
)
290 setTimeout(done
, 11000)
295 it('Should have videos 1 and 3 on each pod', function (done
) {
296 async
.each(urls
, function (url
, callback
) {
297 utils
.getVideosList(url
, function (err
, res
) {
300 var videos
= res
.body
301 expect(videos
).to
.be
.an('array')
302 expect(videos
.length
).to
.equal(2)
303 expect(videos
[0]._id
).not
.to
.equal(videos
[1]._id
)
304 expect(videos
[0]._id
).not
.to
.equal(to_remove
[0])
305 expect(videos
[1]._id
).not
.to
.equal(to_remove
[0])
306 expect(videos
[0]._id
).not
.to
.equal(to_remove
[1])
307 expect(videos
[1]._id
).not
.to
.equal(to_remove
[1])
315 after(function (done
) {
316 apps
.forEach(function (app
) {
317 process
.kill(-app
.pid
)
319 process
.kill(-webtorrent
.app
.pid
)
321 // Keep the logs if the test failed
323 utils
.flushTests(done
)