diff options
-rw-r--r-- | test/api/checkParams.js | 36 | ||||
-rw-r--r-- | test/api/friendsAdvanced.js | 267 | ||||
-rw-r--r-- | test/api/friendsBasic.js | 161 | ||||
-rw-r--r-- | test/api/multiplePods.js | 208 | ||||
-rw-r--r-- | test/api/singlePod.js | 28 | ||||
-rw-r--r-- | test/api/utils.js | 64 |
6 files changed, 419 insertions, 345 deletions
diff --git a/test/api/checkParams.js b/test/api/checkParams.js index 0fa83655f..11fc68ff9 100644 --- a/test/api/checkParams.js +++ b/test/api/checkParams.js | |||
@@ -1,6 +1,7 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var async = require('async') | ||
4 | var chai = require('chai') | 5 | var chai = require('chai') |
5 | var expect = chai.expect | 6 | var expect = chai.expect |
6 | var request = require('supertest') | 7 | var request = require('supertest') |
@@ -11,18 +12,6 @@ | |||
11 | var app = null | 12 | var app = null |
12 | var url = '' | 13 | var url = '' |
13 | 14 | ||
14 | before(function (done) { | ||
15 | this.timeout(20000) | ||
16 | |||
17 | utils.flushTests(function () { | ||
18 | utils.runServer(1, function (app1, url1) { | ||
19 | app = app1 | ||
20 | url = url1 | ||
21 | done() | ||
22 | }) | ||
23 | }) | ||
24 | }) | ||
25 | |||
26 | function makePostRequest (path, fields, attach, done, fail) { | 15 | function makePostRequest (path, fields, attach, done, fail) { |
27 | var status_code = 400 | 16 | var status_code = 400 |
28 | if (fail !== undefined && fail === false) status_code = 200 | 17 | if (fail !== undefined && fail === false) status_code = 200 |
@@ -50,6 +39,25 @@ | |||
50 | .expect(status_code, done) | 39 | .expect(status_code, done) |
51 | } | 40 | } |
52 | 41 | ||
42 | // --------------------------------------------------------------- | ||
43 | |||
44 | before(function (done) { | ||
45 | this.timeout(20000) | ||
46 | |||
47 | async.series([ | ||
48 | function (next) { | ||
49 | utils.flushTests(next) | ||
50 | }, | ||
51 | function (next) { | ||
52 | utils.runServer(1, function (app1, url1) { | ||
53 | app = app1 | ||
54 | url = url1 | ||
55 | next() | ||
56 | }) | ||
57 | } | ||
58 | ], done) | ||
59 | }) | ||
60 | |||
53 | describe('Of the pods API', function () { | 61 | describe('Of the pods API', function () { |
54 | var path = '/api/v1/pods/' | 62 | var path = '/api/v1/pods/' |
55 | 63 | ||
@@ -284,9 +292,7 @@ | |||
284 | 292 | ||
285 | // Keep the logs if the test failed | 293 | // Keep the logs if the test failed |
286 | if (this.ok) { | 294 | if (this.ok) { |
287 | utils.flushTests(function () { | 295 | utils.flushTests(done) |
288 | done() | ||
289 | }) | ||
290 | } else { | 296 | } else { |
291 | done() | 297 | done() |
292 | } | 298 | } |
diff --git a/test/api/friendsAdvanced.js b/test/api/friendsAdvanced.js index b24cd39c3..61483bee6 100644 --- a/test/api/friendsAdvanced.js +++ b/test/api/friendsAdvanced.js | |||
@@ -35,145 +35,190 @@ | |||
35 | return utils.getVideosList(urls[pod_number - 1], callback) | 35 | return utils.getVideosList(urls[pod_number - 1], callback) |
36 | } | 36 | } |
37 | 37 | ||
38 | // --------------------------------------------------------------- | ||
39 | |||
38 | before(function (done) { | 40 | before(function (done) { |
39 | this.timeout(30000) | 41 | this.timeout(30000) |
40 | utils.runMultipleServers(6, function (apps_run, urls_run) { | 42 | utils.flushAndRunMultipleServers(6, function (apps_run, urls_run) { |
41 | apps = apps_run | 43 | apps = apps_run |
42 | urls = urls_run | 44 | urls = urls_run |
43 | done() | 45 | done() |
44 | }) | 46 | }) |
45 | }) | 47 | }) |
46 | 48 | ||
47 | after(function (done) { | ||
48 | apps.forEach(function (app) { | ||
49 | process.kill(-app.pid) | ||
50 | }) | ||
51 | |||
52 | if (this.ok) { | ||
53 | utils.flushTests(function () { | ||
54 | done() | ||
55 | }) | ||
56 | } else { | ||
57 | done() | ||
58 | } | ||
59 | }) | ||
60 | |||
61 | it('Should make friends with two pod each in a different group', function (done) { | 49 | it('Should make friends with two pod each in a different group', function (done) { |
62 | this.timeout(20000) | 50 | this.timeout(20000) |
63 | 51 | ||
64 | // Pod 3 makes friend with the first one | 52 | async.series([ |
65 | makeFriends(3, function () { | 53 | // Pod 3 makes friend with the first one |
54 | function (next) { | ||
55 | makeFriends(3, next) | ||
56 | }, | ||
66 | // Pod 4 makes friend with the second one | 57 | // Pod 4 makes friend with the second one |
67 | makeFriends(4, function () { | 58 | function (next) { |
68 | // Now if the fifth wants to make friends with the third et the first | 59 | makeFriends(4, next) |
69 | makeFriends(5, function () { | 60 | }, |
70 | setTimeout(function () { | 61 | // Now if the fifth wants to make friends with the third et the first |
71 | // It should have 0 friends | 62 | function (next) { |
72 | getFriendsList(5, function (err, res) { | 63 | makeFriends(5, next) |
73 | if (err) throw err | 64 | }, |
74 | 65 | function (next) { | |
75 | expect(res.body.length).to.equal(0) | 66 | setTimeout(next, 11000) |
76 | 67 | }], | |
77 | done() | 68 | function (err) { |
78 | }) | 69 | if (err) throw err |
79 | }, 11000) | 70 | |
71 | // It should have 0 friends | ||
72 | getFriendsList(5, function (err, res) { | ||
73 | if (err) throw err | ||
74 | |||
75 | expect(res.body.length).to.equal(0) | ||
76 | |||
77 | done() | ||
80 | }) | 78 | }) |
81 | }) | 79 | } |
82 | }) | 80 | ) |
83 | }) | 81 | }) |
84 | 82 | ||
85 | it('Should quit all friends', function (done) { | 83 | it('Should quit all friends', function (done) { |
86 | this.timeout(10000) | 84 | this.timeout(10000) |
87 | quitFriends(1, function () { | 85 | |
88 | quitFriends(2, function () { | 86 | async.series([ |
87 | function (next) { | ||
88 | quitFriends(1, next) | ||
89 | }, | ||
90 | function (next) { | ||
91 | quitFriends(2, next) | ||
92 | }], | ||
93 | function (err) { | ||
94 | if (err) throw err | ||
95 | |||
89 | async.each([ 1, 2, 3, 4, 5, 6 ], function (i, callback) { | 96 | async.each([ 1, 2, 3, 4, 5, 6 ], function (i, callback) { |
90 | getFriendsList(i, function (err, res) { | 97 | getFriendsList(i, function (err, res) { |
91 | if (err) throw err | 98 | if (err) throw err |
99 | |||
92 | expect(res.body.length).to.equal(0) | 100 | expect(res.body.length).to.equal(0) |
101 | |||
93 | callback() | 102 | callback() |
94 | }) | 103 | }) |
95 | }, function () { | 104 | }, done) |
96 | done() | 105 | } |
97 | }) | 106 | ) |
98 | }) | ||
99 | }) | ||
100 | }) | 107 | }) |
101 | 108 | ||
102 | it('Should make friends with the pods 1, 2, 3', function (done) { | 109 | it('Should make friends with the pods 1, 2, 3', function (done) { |
103 | this.timeout(150000) | 110 | this.timeout(150000) |
104 | 111 | ||
105 | // Pods 1, 2, 3 and 4 become friends (yes this is beautiful) | 112 | async.series([ |
106 | makeFriends(2, function () { | 113 | // Pods 1, 2, 3 and 4 become friends |
107 | makeFriends(1, function () { | 114 | function (next) { |
108 | makeFriends(4, function () { | 115 | makeFriends(2, next) |
109 | // Kill the server 4 | 116 | }, |
110 | apps[3].kill() | 117 | function (next) { |
111 | 118 | makeFriends(1, next) | |
112 | // Expulse pod 4 from pod 1 and 2 | 119 | }, |
113 | uploadVideo(1, function () { | 120 | function (next) { |
114 | uploadVideo(2, function () { | 121 | makeFriends(4, next) |
115 | setTimeout(function () { | 122 | }, |
116 | uploadVideo(1, function () { | 123 | // Kill pod 4 |
117 | uploadVideo(2, function () { | 124 | function (next) { |
118 | setTimeout(function () { | 125 | apps[3].kill() |
119 | // Rerun server 4 | 126 | next() |
120 | utils.runServer(4, function (app, url) { | 127 | }, |
121 | apps[3] = app | 128 | // Expulse pod 4 from pod 1 and 2 |
122 | getFriendsList(4, function (err, res) { | 129 | function (next) { |
123 | if (err) throw err | 130 | uploadVideo(1, next) |
124 | // Pod 4 didn't know pod 1 and 2 removed it | 131 | }, |
125 | expect(res.body.length).to.equal(3) | 132 | function (next) { |
126 | 133 | uploadVideo(2, next) | |
127 | // Pod 6 ask pod 1, 2 and 3 | 134 | }, |
128 | makeFriends(6, function () { | 135 | function (next) { |
129 | getFriendsList(6, function (err, res) { | 136 | setTimeout(next, 11000) |
130 | if (err) throw err | 137 | }, |
131 | 138 | function (next) { | |
132 | // Pod 4 should not be our friend | 139 | uploadVideo(1, next) |
133 | var result = res.body | 140 | }, |
134 | expect(result.length).to.equal(3) | 141 | function (next) { |
135 | for (var pod of result) { | 142 | uploadVideo(2, next) |
136 | expect(pod.url).not.equal(urls[3]) | 143 | }, |
137 | } | 144 | function (next) { |
138 | 145 | setTimeout(next, 20000) | |
139 | done() | 146 | }, |
140 | }) | 147 | // Rerun server 4 |
141 | }) | 148 | function (next) { |
142 | }) | 149 | utils.runServer(4, function (app, url) { |
143 | }) | 150 | apps[3] = app |
144 | }, 15000) | 151 | next() |
145 | }) | ||
146 | }) | ||
147 | }, 11000) | ||
148 | }) | ||
149 | }) | ||
150 | }) | 152 | }) |
151 | }) | 153 | }, |
152 | }) | 154 | function (next) { |
155 | getFriendsList(4, function (err, res) { | ||
156 | if (err) throw err | ||
157 | |||
158 | // Pod 4 didn't know pod 1 and 2 removed it | ||
159 | expect(res.body.length).to.equal(3) | ||
160 | |||
161 | next() | ||
162 | }) | ||
163 | }, | ||
164 | // Pod 6 ask pod 1, 2 and 3 | ||
165 | function (next) { | ||
166 | makeFriends(6, next) | ||
167 | }], | ||
168 | function (err) { | ||
169 | if (err) throw err | ||
170 | |||
171 | getFriendsList(6, function (err, res) { | ||
172 | if (err) throw err | ||
173 | |||
174 | // Pod 4 should not be our friend | ||
175 | var result = res.body | ||
176 | expect(result.length).to.equal(3) | ||
177 | for (var pod of result) { | ||
178 | expect(pod.url).not.equal(urls[3]) | ||
179 | } | ||
180 | |||
181 | done() | ||
182 | }) | ||
183 | } | ||
184 | ) | ||
153 | }) | 185 | }) |
154 | 186 | ||
155 | it('Should pod 1 quit friends', function (done) { | 187 | it('Should pod 1 quit friends', function (done) { |
156 | this.timeout(25000) | 188 | this.timeout(25000) |
157 | // Upload a video on server 3 for aditionnal tests | 189 | |
158 | uploadVideo(3, function () { | 190 | async.series([ |
159 | setTimeout(function () { | 191 | // Upload a video on server 3 for aditionnal tests |
160 | quitFriends(1, function () { | 192 | function (next) { |
161 | // Remove pod 1 from pod 2 | 193 | uploadVideo(3, next) |
162 | getVideos(1, function (err, res) { | 194 | }, |
163 | if (err) throw err | 195 | function (next) { |
164 | expect(res.body).to.be.an('array') | 196 | setTimeout(next, 15000) |
165 | expect(res.body.length).to.equal(2) | 197 | }, |
166 | 198 | function (next) { | |
167 | getVideos(2, function (err, res) { | 199 | quitFriends(1, next) |
168 | if (err) throw err | 200 | }, |
169 | expect(res.body).to.be.an('array') | 201 | // Remove pod 1 from pod 2 |
170 | expect(res.body.length).to.equal(3) | 202 | function (next) { |
171 | done() | 203 | getVideos(1, function (err, res) { |
172 | }) | 204 | if (err) throw err |
173 | }) | 205 | expect(res.body).to.be.an('array') |
206 | expect(res.body.length).to.equal(2) | ||
207 | |||
208 | next() | ||
174 | }) | 209 | }) |
175 | }, 15000) | 210 | }], |
176 | }) | 211 | function (err) { |
212 | if (err) throw err | ||
213 | |||
214 | getVideos(2, function (err, res) { | ||
215 | if (err) throw err | ||
216 | expect(res.body).to.be.an('array') | ||
217 | expect(res.body.length).to.equal(3) | ||
218 | done() | ||
219 | }) | ||
220 | } | ||
221 | ) | ||
177 | }) | 222 | }) |
178 | 223 | ||
179 | it('Should make friends between pod 1 and 2 and exchange their videos', function (done) { | 224 | it('Should make friends between pod 1 and 2 and exchange their videos', function (done) { |
@@ -191,5 +236,17 @@ | |||
191 | }, 5000) | 236 | }, 5000) |
192 | }) | 237 | }) |
193 | }) | 238 | }) |
239 | |||
240 | after(function (done) { | ||
241 | apps.forEach(function (app) { | ||
242 | process.kill(-app.pid) | ||
243 | }) | ||
244 | |||
245 | if (this.ok) { | ||
246 | utils.flushTests(done) | ||
247 | } else { | ||
248 | done() | ||
249 | } | ||
250 | }) | ||
194 | }) | 251 | }) |
195 | })() | 252 | })() |
diff --git a/test/api/friendsBasic.js b/test/api/friendsBasic.js index 15b83d421..dbc918383 100644 --- a/test/api/friendsBasic.js +++ b/test/api/friendsBasic.js | |||
@@ -9,6 +9,9 @@ | |||
9 | var utils = require('./utils') | 9 | var utils = require('./utils') |
10 | 10 | ||
11 | describe('Test basic friends', function () { | 11 | describe('Test basic friends', function () { |
12 | var apps = [] | ||
13 | var urls = [] | ||
14 | |||
12 | function testMadeFriends (urls, url_to_test, callback) { | 15 | function testMadeFriends (urls, url_to_test, callback) { |
13 | var friends = [] | 16 | var friends = [] |
14 | for (var i = 0; i < urls.length; i++) { | 17 | for (var i = 0; i < urls.length; i++) { |
@@ -32,12 +35,11 @@ | |||
32 | }) | 35 | }) |
33 | } | 36 | } |
34 | 37 | ||
35 | var apps = [] | 38 | // --------------------------------------------------------------- |
36 | var urls = [] | ||
37 | 39 | ||
38 | before(function (done) { | 40 | before(function (done) { |
39 | this.timeout(20000) | 41 | this.timeout(20000) |
40 | utils.runMultipleServers(3, function (apps_run, urls_run) { | 42 | utils.flushAndRunMultipleServers(3, function (apps_run, urls_run) { |
41 | apps = apps_run | 43 | apps = apps_run |
42 | urls = urls_run | 44 | urls = urls_run |
43 | done() | 45 | done() |
@@ -54,11 +56,7 @@ | |||
54 | expect(result.length).to.equal(0) | 56 | expect(result.length).to.equal(0) |
55 | callback() | 57 | callback() |
56 | }) | 58 | }) |
57 | }, function (err) { | 59 | }, done) |
58 | if (err) throw err | ||
59 | |||
60 | done() | ||
61 | }) | ||
62 | }) | 60 | }) |
63 | 61 | ||
64 | it('Should make friends', function (done) { | 62 | it('Should make friends', function (done) { |
@@ -66,56 +64,65 @@ | |||
66 | 64 | ||
67 | var path = '/api/v1/pods/makefriends' | 65 | var path = '/api/v1/pods/makefriends' |
68 | 66 | ||
69 | // The second pod make friend with the third | 67 | async.series([ |
70 | request(urls[1]) | 68 | // The second pod make friend with the third |
71 | .get(path) | 69 | function (next) { |
72 | .set('Accept', 'application/json') | 70 | request(urls[1]) |
73 | .expect(204) | 71 | .get(path) |
74 | .end(function (err, res) { | 72 | .set('Accept', 'application/json') |
75 | if (err) throw err | 73 | .expect(204) |
74 | .end(next) | ||
75 | }, | ||
76 | // Wait for the request between pods | ||
77 | function (next) { | ||
78 | setTimeout(next, 1000) | ||
79 | }, | ||
80 | // The second pod should have the third as a friend | ||
81 | function (next) { | ||
82 | utils.getFriendsList(urls[1], function (err, res) { | ||
83 | if (err) throw err | ||
76 | 84 | ||
77 | // Wait for the request between pods | 85 | var result = res.body |
78 | setTimeout(function () { | 86 | expect(result).to.be.an('array') |
79 | // The second pod should have the third as a friend | 87 | expect(result.length).to.equal(1) |
80 | utils.getFriendsList(urls[1], function (err, res) { | 88 | expect(result[0].url).to.be.equal(urls[2]) |
81 | if (err) throw err | ||
82 | 89 | ||
83 | var result = res.body | 90 | next() |
84 | expect(result).to.be.an('array') | 91 | }) |
85 | expect(result.length).to.equal(1) | 92 | }, |
86 | expect(result[0].url).to.be.equal(urls[2]) | 93 | // Same here, the third pod should have the second pod as a friend |
87 | 94 | function (next) { | |
88 | // Same here, the third pod should have the second pod as a friend | 95 | utils.getFriendsList(urls[2], function (err, res) { |
89 | utils.getFriendsList(urls[2], function (err, res) { | 96 | if (err) throw err |
90 | if (err) throw err | 97 | |
91 | 98 | var result = res.body | |
92 | var result = res.body | 99 | expect(result).to.be.an('array') |
93 | expect(result).to.be.an('array') | 100 | expect(result.length).to.equal(1) |
94 | expect(result.length).to.equal(1) | 101 | expect(result[0].url).to.be.equal(urls[1]) |
95 | expect(result[0].url).to.be.equal(urls[1]) | 102 | |
96 | 103 | next() | |
97 | // Finally the first pod make friend with the second pod | 104 | }) |
98 | request(urls[0]) | 105 | }, |
99 | .get(path) | 106 | // Finally the first pod make friend with the second pod |
100 | .set('Accept', 'application/json') | 107 | function (next) { |
101 | .expect(204) | 108 | request(urls[0]) |
102 | .end(function (err, res) { | 109 | .get(path) |
103 | if (err) throw err | 110 | .set('Accept', 'application/json') |
104 | 111 | .expect(204) | |
105 | setTimeout(function () { | 112 | .end(next) |
106 | // Now each pod should be friend with the other ones | 113 | }, |
107 | async.each(urls, function (url, callback) { | 114 | // Wait for the request between pods |
108 | testMadeFriends(urls, url, callback) | 115 | function (next) { |
109 | }, function (err) { | 116 | setTimeout(next, 1000) |
110 | if (err) throw err | 117 | } |
111 | done() | 118 | ], |
112 | }) | 119 | // Now each pod should be friend with the other ones |
113 | }, 1000) | 120 | function (err) { |
114 | }) | 121 | if (err) throw err |
115 | }) | 122 | async.each(urls, function (url, callback) { |
116 | }) | 123 | testMadeFriends(urls, url, callback) |
117 | }, 1000) | 124 | }, done) |
118 | }) | 125 | }) |
119 | }) | 126 | }) |
120 | 127 | ||
121 | it('Should not be allowed to make friend again', function (done) { | 128 | it('Should not be allowed to make friend again', function (done) { |
@@ -123,15 +130,25 @@ | |||
123 | }) | 130 | }) |
124 | 131 | ||
125 | it('Should quit friends of pod 2', function (done) { | 132 | it('Should quit friends of pod 2', function (done) { |
126 | utils.quitFriends(urls[1], function () { | 133 | async.series([ |
127 | utils.getFriendsList(urls[1], function (err, res) { | 134 | // Pod 1 quit friends |
128 | if (err) throw err | 135 | function (next) { |
136 | utils.quitFriends(urls[1], next) | ||
137 | }, | ||
138 | // Pod 1 should not have friends anymore | ||
139 | function (next) { | ||
140 | utils.getFriendsList(urls[1], function (err, res) { | ||
141 | if (err) throw err | ||
129 | 142 | ||
130 | var result = res.body | 143 | var result = res.body |
131 | expect(result).to.be.an('array') | 144 | expect(result).to.be.an('array') |
132 | expect(result.length).to.equal(0) | 145 | expect(result.length).to.equal(0) |
133 | 146 | ||
134 | // Other pods shouldn't have pod 2 too | 147 | next() |
148 | }) | ||
149 | }, | ||
150 | // Other pods shouldn't have pod 1 too | ||
151 | function (next) { | ||
135 | async.each([ urls[0], urls[2] ], function (url, callback) { | 152 | async.each([ urls[0], urls[2] ], function (url, callback) { |
136 | utils.getFriendsList(url, function (err, res) { | 153 | utils.getFriendsList(url, function (err, res) { |
137 | if (err) throw err | 154 | if (err) throw err |
@@ -142,22 +159,16 @@ | |||
142 | expect(result[0].url).not.to.be.equal(urls[1]) | 159 | expect(result[0].url).not.to.be.equal(urls[1]) |
143 | callback() | 160 | callback() |
144 | }) | 161 | }) |
145 | }, function (err) { | 162 | }, next) |
146 | if (err) throw err | 163 | } |
147 | done() | 164 | ], done) |
148 | }) | ||
149 | }) | ||
150 | }) | ||
151 | }) | 165 | }) |
152 | 166 | ||
153 | it('Should allow pod 2 to make friend again', function (done) { | 167 | it('Should allow pod 2 to make friend again', function (done) { |
154 | utils.makeFriends(urls[1], function () { | 168 | utils.makeFriends(urls[1], function () { |
155 | async.each(urls, function (url, callback) { | 169 | async.each(urls, function (url, callback) { |
156 | testMadeFriends(urls, url, callback) | 170 | testMadeFriends(urls, url, callback) |
157 | }, function (err) { | 171 | }, done) |
158 | if (err) throw err | ||
159 | done() | ||
160 | }) | ||
161 | }) | 172 | }) |
162 | }) | 173 | }) |
163 | 174 | ||
@@ -167,9 +178,7 @@ | |||
167 | }) | 178 | }) |
168 | 179 | ||
169 | if (this.ok) { | 180 | if (this.ok) { |
170 | utils.flushTests(function () { | 181 | utils.flushTests(done) |
171 | done() | ||
172 | }) | ||
173 | } else { | 182 | } else { |
174 | done() | 183 | done() |
175 | } | 184 | } |
diff --git a/test/api/multiplePods.js b/test/api/multiplePods.js index 531e1ef33..b579e5e32 100644 --- a/test/api/multiplePods.js +++ b/test/api/multiplePods.js | |||
@@ -17,26 +17,31 @@ | |||
17 | before(function (done) { | 17 | before(function (done) { |
18 | this.timeout(30000) | 18 | this.timeout(30000) |
19 | 19 | ||
20 | utils.runMultipleServers(3, function (apps_run, urls_run) { | 20 | async.series([ |
21 | apps = apps_run | 21 | // Run servers |
22 | urls = urls_run | 22 | function (next) { |
23 | 23 | utils.flushAndRunMultipleServers(3, function (apps_run, urls_run) { | |
24 | apps = apps_run | ||
25 | urls = urls_run | ||
26 | next() | ||
27 | }) | ||
28 | }, | ||
24 | // The second pod make friend with the third | 29 | // The second pod make friend with the third |
25 | utils.makeFriends(urls[1], function (err, res) { | 30 | function (next) { |
26 | if (err) throw err | 31 | utils.makeFriends(urls[1], next) |
27 | 32 | }, | |
28 | // Wait for the request between pods | 33 | // Wait for the request between pods |
29 | setTimeout(function () { | 34 | function (next) { |
30 | utils.makeFriends(urls[0], function (err, res) { | 35 | setTimeout(next, 10000) |
31 | if (err) throw err | 36 | }, |
32 | 37 | // Pod 1 make friends too | |
33 | webtorrent.create({ host: 'client', port: '1' }, function () { | 38 | function (next) { |
34 | done() | 39 | utils.makeFriends(urls[0], next) |
35 | }) | 40 | }, |
36 | }) | 41 | function (next) { |
37 | }, 10000) | 42 | webtorrent.create({ host: 'client', port: '1' }, next) |
38 | }) | 43 | } |
39 | }) | 44 | ], done) |
40 | }) | 45 | }) |
41 | 46 | ||
42 | it('Should not have videos for all pods', function (done) { | 47 | it('Should not have videos for all pods', function (done) { |
@@ -49,22 +54,24 @@ | |||
49 | 54 | ||
50 | callback() | 55 | callback() |
51 | }) | 56 | }) |
52 | }, function (err) { | 57 | }, done) |
53 | if (err) throw err | ||
54 | |||
55 | done() | ||
56 | }) | ||
57 | }) | 58 | }) |
58 | 59 | ||
59 | describe('Should upload the video and propagate on each pod', function () { | 60 | describe('Should upload the video and propagate on each pod', function () { |
60 | it('Should upload the video on pod 1 and propagate on each pod', function (done) { | 61 | it('Should upload the video on pod 1 and propagate on each pod', function (done) { |
61 | this.timeout(15000) | 62 | this.timeout(15000) |
62 | 63 | ||
63 | utils.uploadVideo(urls[0], 'my super name for pod 1', 'my super description for pod 1', 'video_short1.webm', function (err) { | 64 | async.series([ |
64 | if (err) throw err | 65 | function (next) { |
66 | utils.uploadVideo(urls[0], 'my super name for pod 1', 'my super description for pod 1', 'video_short1.webm', next) | ||
67 | }, | ||
68 | function (next) { | ||
69 | setTimeout(next, 11000) | ||
70 | }], | ||
71 | // All pods should have this video | ||
72 | function (err) { | ||
73 | if (err) throw err | ||
65 | 74 | ||
66 | setTimeout(function () { | ||
67 | // All pods should have this video | ||
68 | async.each(urls, function (url, callback) { | 75 | async.each(urls, function (url, callback) { |
69 | var base_magnet = null | 76 | var base_magnet = null |
70 | 77 | ||
@@ -89,23 +96,25 @@ | |||
89 | 96 | ||
90 | callback() | 97 | callback() |
91 | }) | 98 | }) |
92 | }, function (err) { | 99 | }, done) |
93 | if (err) throw err | 100 | } |
94 | 101 | ) | |
95 | done() | ||
96 | }) | ||
97 | }, 11000) | ||
98 | }) | ||
99 | }) | 102 | }) |
100 | 103 | ||
101 | it('Should upload the video on pod 2 and propagate on each pod', function (done) { | 104 | it('Should upload the video on pod 2 and propagate on each pod', function (done) { |
102 | this.timeout(15000) | 105 | this.timeout(15000) |
103 | 106 | ||
104 | utils.uploadVideo(urls[1], 'my super name for pod 2', 'my super description for pod 2', 'video_short2.webm', function (err) { | 107 | async.series([ |
105 | if (err) throw err | 108 | function (next) { |
109 | utils.uploadVideo(urls[1], 'my super name for pod 2', 'my super description for pod 2', 'video_short2.webm', next) | ||
110 | }, | ||
111 | function (next) { | ||
112 | setTimeout(next, 11000) | ||
113 | }], | ||
114 | // All pods should have this video | ||
115 | function (err) { | ||
116 | if (err) throw err | ||
106 | 117 | ||
107 | setTimeout(function () { | ||
108 | // All pods should have this video | ||
109 | async.each(urls, function (url, callback) { | 118 | async.each(urls, function (url, callback) { |
110 | var base_magnet = null | 119 | var base_magnet = null |
111 | 120 | ||
@@ -130,62 +139,60 @@ | |||
130 | 139 | ||
131 | callback() | 140 | callback() |
132 | }) | 141 | }) |
133 | }, function (err) { | 142 | }, done) |
134 | if (err) throw err | 143 | } |
135 | 144 | ) | |
136 | done() | ||
137 | }) | ||
138 | }, 11000) | ||
139 | }) | ||
140 | }) | 145 | }) |
141 | 146 | ||
142 | it('Should upload two videos on pod 3 and propagate on each pod', function (done) { | 147 | it('Should upload two videos on pod 3 and propagate on each pod', function (done) { |
143 | this.timeout(30000) | 148 | this.timeout(30000) |
144 | 149 | ||
145 | utils.uploadVideo(urls[2], 'my super name for pod 3', 'my super description for pod 3', 'video_short3.webm', function (err) { | 150 | async.series([ |
146 | if (err) throw err | 151 | function (next) { |
147 | utils.uploadVideo(urls[2], 'my super name for pod 3-2', 'my super description for pod 3-2', 'video_short.webm', function (err) { | 152 | utils.uploadVideo(urls[2], 'my super name for pod 3', 'my super description for pod 3', 'video_short3.webm', next) |
153 | }, | ||
154 | function (next) { | ||
155 | utils.uploadVideo(urls[2], 'my super name for pod 3-2', 'my super description for pod 3-2', 'video_short.webm', next) | ||
156 | }, | ||
157 | function (next) { | ||
158 | setTimeout(next, 22000) | ||
159 | }], | ||
160 | function (err) { | ||
148 | if (err) throw err | 161 | if (err) throw err |
149 | 162 | ||
150 | setTimeout(function () { | 163 | var base_magnet = null |
151 | var base_magnet = null | 164 | // All pods should have this video |
152 | // All pods should have this video | 165 | async.each(urls, function (url, callback) { |
153 | async.each(urls, function (url, callback) { | 166 | utils.getVideosList(url, function (err, res) { |
154 | utils.getVideosList(url, function (err, res) { | ||
155 | if (err) throw err | ||
156 | |||
157 | var videos = res.body | ||
158 | expect(videos).to.be.an('array') | ||
159 | expect(videos.length).to.equal(4) | ||
160 | var video = videos[2] | ||
161 | expect(video.name).to.equal('my super name for pod 3') | ||
162 | expect(video.description).to.equal('my super description for pod 3') | ||
163 | expect(video.podUrl).to.equal('http://localhost:9003') | ||
164 | expect(video.magnetUri).to.exist | ||
165 | |||
166 | video = videos[3] | ||
167 | expect(video.name).to.equal('my super name for pod 3-2') | ||
168 | expect(video.description).to.equal('my super description for pod 3-2') | ||
169 | expect(video.podUrl).to.equal('http://localhost:9003') | ||
170 | expect(video.magnetUri).to.exist | ||
171 | |||
172 | // All pods should have the same magnet Uri | ||
173 | if (base_magnet === null) { | ||
174 | base_magnet = video.magnetUri | ||
175 | } else { | ||
176 | expect(video.magnetUri).to.equal.magnetUri | ||
177 | } | ||
178 | |||
179 | callback() | ||
180 | }) | ||
181 | }, function (err) { | ||
182 | if (err) throw err | 167 | if (err) throw err |
183 | 168 | ||
184 | done() | 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 | ||
177 | |||
178 | video = videos[3] | ||
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 | ||
183 | |||
184 | // All pods should have the same magnet Uri | ||
185 | if (base_magnet === null) { | ||
186 | base_magnet = video.magnetUri | ||
187 | } else { | ||
188 | expect(video.magnetUri).to.equal.magnetUri | ||
189 | } | ||
190 | |||
191 | callback() | ||
185 | }) | 192 | }) |
186 | }, 22000) | 193 | }, done) |
187 | }) | 194 | } |
188 | }) | 195 | ) |
189 | }) | 196 | }) |
190 | }) | 197 | }) |
191 | 198 | ||
@@ -271,17 +278,18 @@ | |||
271 | it('Should remove the file 3 and 3-2 by asking pod 3', function (done) { | 278 | it('Should remove the file 3 and 3-2 by asking pod 3', function (done) { |
272 | this.timeout(15000) | 279 | this.timeout(15000) |
273 | 280 | ||
274 | utils.removeVideo(urls[2], to_remove[0], function (err) { | 281 | async.series([ |
275 | if (err) throw err | 282 | function (next) { |
276 | utils.removeVideo(urls[2], to_remove[1], function (err) { | 283 | utils.removeVideo(urls[2], to_remove[0], next) |
284 | }, | ||
285 | function (next) { | ||
286 | utils.removeVideo(urls[2], to_remove[1], next) | ||
287 | }], | ||
288 | function (err) { | ||
277 | if (err) throw err | 289 | if (err) throw err |
278 | 290 | setTimeout(done, 11000) | |
279 | // Wait the propagation to the other pods | 291 | } |
280 | setTimeout(function () { | 292 | ) |
281 | done() | ||
282 | }, 11000) | ||
283 | }) | ||
284 | }) | ||
285 | }) | 293 | }) |
286 | 294 | ||
287 | it('Should have videos 1 and 3 on each pod', function (done) { | 295 | it('Should have videos 1 and 3 on each pod', function (done) { |
@@ -300,11 +308,7 @@ | |||
300 | 308 | ||
301 | callback() | 309 | callback() |
302 | }) | 310 | }) |
303 | }, function (err) { | 311 | }, done) |
304 | if (err) throw err | ||
305 | |||
306 | done() | ||
307 | }) | ||
308 | }) | 312 | }) |
309 | }) | 313 | }) |
310 | 314 | ||
@@ -316,9 +320,7 @@ | |||
316 | 320 | ||
317 | // Keep the logs if the test failed | 321 | // Keep the logs if the test failed |
318 | if (this.ok) { | 322 | if (this.ok) { |
319 | utils.flushTests(function () { | 323 | utils.flushTests(done) |
320 | done() | ||
321 | }) | ||
322 | } else { | 324 | } else { |
323 | done() | 325 | done() |
324 | } | 326 | } |
diff --git a/test/api/singlePod.js b/test/api/singlePod.js index be944d8da..a8ae43aee 100644 --- a/test/api/singlePod.js +++ b/test/api/singlePod.js | |||
@@ -1,6 +1,7 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var async = require('async') | ||
4 | var chai = require('chai') | 5 | var chai = require('chai') |
5 | var fs = require('fs') | 6 | var fs = require('fs') |
6 | var expect = chai.expect | 7 | var expect = chai.expect |
@@ -18,16 +19,21 @@ | |||
18 | before(function (done) { | 19 | before(function (done) { |
19 | this.timeout(20000) | 20 | this.timeout(20000) |
20 | 21 | ||
21 | utils.flushTests(function () { | 22 | async.series([ |
22 | utils.runServer(1, function (app1, url1) { | 23 | function (next) { |
23 | app = app1 | 24 | utils.flushTests(next) |
24 | url = url1 | 25 | }, |
25 | 26 | function (next) { | |
26 | webtorrent.create({ host: 'client', port: '1' }, function () { | 27 | utils.runServer(1, function (app1, url1) { |
27 | done() | 28 | app = app1 |
29 | url = url1 | ||
30 | next() | ||
28 | }) | 31 | }) |
29 | }) | 32 | }, |
30 | }) | 33 | function (next) { |
34 | webtorrent.create({ host: 'client', port: '1' }, next) | ||
35 | } | ||
36 | ], done) | ||
31 | }) | 37 | }) |
32 | 38 | ||
33 | it('Should not have videos', function (done) { | 39 | it('Should not have videos', function (done) { |
@@ -132,9 +138,7 @@ | |||
132 | 138 | ||
133 | // Keep the logs if the test failed | 139 | // Keep the logs if the test failed |
134 | if (this.ok) { | 140 | if (this.ok) { |
135 | utils.flushTests(function () { | 141 | utils.flushTests(done) |
136 | done() | ||
137 | }) | ||
138 | } else { | 142 | } else { |
139 | done() | 143 | done() |
140 | } | 144 | } |
diff --git a/test/api/utils.js b/test/api/utils.js index b00890539..afb0abb33 100644 --- a/test/api/utils.js +++ b/test/api/utils.js | |||
@@ -6,10 +6,23 @@ | |||
6 | var fork = child_process.fork | 6 | var fork = child_process.fork |
7 | var request = require('supertest') | 7 | var request = require('supertest') |
8 | 8 | ||
9 | module.exports = { | ||
10 | flushTests: flushTests, | ||
11 | getFriendsList: getFriendsList, | ||
12 | getVideosList: getVideosList, | ||
13 | makeFriends: makeFriends, | ||
14 | quitFriends: quitFriends, | ||
15 | removeVideo: removeVideo, | ||
16 | flushAndRunMultipleServers: flushAndRunMultipleServers, | ||
17 | runServer: runServer, | ||
18 | searchVideo: searchVideo, | ||
19 | uploadVideo: uploadVideo | ||
20 | } | ||
21 | |||
22 | // ---------------------- Export functions -------------------- | ||
23 | |||
9 | function flushTests (callback) { | 24 | function flushTests (callback) { |
10 | exec(__dirname + '/../../scripts/clean_test.sh', function () { | 25 | exec(__dirname + '/../../scripts/clean_test.sh', callback) |
11 | callback() | ||
12 | }) | ||
13 | } | 26 | } |
14 | 27 | ||
15 | function getFriendsList (url, end) { | 28 | function getFriendsList (url, end) { |
@@ -51,9 +64,7 @@ | |||
51 | if (err) throw err | 64 | if (err) throw err |
52 | 65 | ||
53 | // Wait for the request between pods | 66 | // Wait for the request between pods |
54 | setTimeout(function () { | 67 | setTimeout(callback, 1000) |
55 | callback() | ||
56 | }, 1000) | ||
57 | }) | 68 | }) |
58 | } | 69 | } |
59 | 70 | ||
@@ -69,25 +80,10 @@ | |||
69 | if (err) throw err | 80 | if (err) throw err |
70 | 81 | ||
71 | // Wait for the request between pods | 82 | // Wait for the request between pods |
72 | setTimeout(function () { | 83 | setTimeout(callback, 1000) |
73 | callback() | ||
74 | }, 1000) | ||
75 | }) | 84 | }) |
76 | } | 85 | } |
77 | 86 | ||
78 | function uploadVideo (url, name, description, fixture, end) { | ||
79 | var path = '/api/v1/videos' | ||
80 | |||
81 | request(url) | ||
82 | .post(path) | ||
83 | .set('Accept', 'application/json') | ||
84 | .field('name', name) | ||
85 | .field('description', description) | ||
86 | .attach('input_video', __dirname + '/fixtures/' + fixture) | ||
87 | .expect(201) | ||
88 | .end(end) | ||
89 | } | ||
90 | |||
91 | function removeVideo (url, id, end) { | 87 | function removeVideo (url, id, end) { |
92 | var path = '/api/v1/videos' | 88 | var path = '/api/v1/videos' |
93 | 89 | ||
@@ -98,7 +94,7 @@ | |||
98 | .end(end) | 94 | .end(end) |
99 | } | 95 | } |
100 | 96 | ||
101 | function runMultipleServers (total_servers, serversRun) { | 97 | function flushAndRunMultipleServers (total_servers, serversRun) { |
102 | var apps = [] | 98 | var apps = [] |
103 | var urls = [] | 99 | var urls = [] |
104 | var i = 0 | 100 | var i = 0 |
@@ -171,16 +167,16 @@ | |||
171 | .end(end) | 167 | .end(end) |
172 | } | 168 | } |
173 | 169 | ||
174 | module.exports = { | 170 | function uploadVideo (url, name, description, fixture, end) { |
175 | flushTests: flushTests, | 171 | var path = '/api/v1/videos' |
176 | getFriendsList: getFriendsList, | 172 | |
177 | getVideosList: getVideosList, | 173 | request(url) |
178 | makeFriends: makeFriends, | 174 | .post(path) |
179 | quitFriends: quitFriends, | 175 | .set('Accept', 'application/json') |
180 | removeVideo: removeVideo, | 176 | .field('name', name) |
181 | runMultipleServers: runMultipleServers, | 177 | .field('description', description) |
182 | runServer: runServer, | 178 | .attach('input_video', __dirname + '/fixtures/' + fixture) |
183 | searchVideo: searchVideo, | 179 | .expect(201) |
184 | uploadVideo: uploadVideo | 180 | .end(end) |
185 | } | 181 | } |
186 | })() | 182 | })() |