aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests/real-world
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/real-world')
-rw-r--r--server/tests/real-world/real-world.ts51
1 files changed, 24 insertions, 27 deletions
diff --git a/server/tests/real-world/real-world.ts b/server/tests/real-world/real-world.ts
index c79ad38ff..ac83d64a6 100644
--- a/server/tests/real-world/real-world.ts
+++ b/server/tests/real-world/real-world.ts
@@ -1,25 +1,24 @@
1import * as program from 'commander'
2
3// /!\ Before imports /!\ 1// /!\ Before imports /!\
4process.env.NODE_ENV = 'test' 2process.env.NODE_ENV = 'test'
5 3
6import { Video, VideoRateType, VideoFile } from '../../../shared' 4import * as program from 'commander'
5import { Video, VideoFile, VideoRateType } from '../../../shared'
7import { 6import {
8 ServerInfo as DefaultServerInfo,
9 flushAndRunMultipleServers, 7 flushAndRunMultipleServers,
10 setAccessTokensToServers,
11 makeFriends,
12 wait,
13 killallServers,
14 flushTests, 8 flushTests,
15 uploadVideo, 9 getAllVideosListBy,
10 getRequestsStats,
11 getVideo,
16 getVideosList, 12 getVideosList,
17 updateVideo, 13 killallServers,
18 removeVideo, 14 removeVideo,
19 getVideo, 15 ServerInfo as DefaultServerInfo,
20 getAllVideosListBy, 16 setAccessTokensToServers,
21 getRequestsStats 17 updateVideo,
18 uploadVideo,
19 wait
22} from '../utils' 20} from '../utils'
21import { follow } from '../utils/follows'
23 22
24interface ServerInfo extends DefaultServerInfo { 23interface ServerInfo extends DefaultServerInfo {
25 requestsNumber: number 24 requestsNumber: number
@@ -32,7 +31,7 @@ program
32 .option('-v, --view [weight]', 'Weight for viewing videos') 31 .option('-v, --view [weight]', 'Weight for viewing videos')
33 .option('-l, --like [weight]', 'Weight for liking videos') 32 .option('-l, --like [weight]', 'Weight for liking videos')
34 .option('-s, --dislike [weight]', 'Weight for disliking videos') 33 .option('-s, --dislike [weight]', 'Weight for disliking videos')
35 .option('-p, --pods [n]', 'Number of pods to run (3 or 6)', /^3|6$/, 3) 34 .option('-p, --servers [n]', 'Number of servers to run (3 or 6)', /^3|6$/, 3)
36 .option('-i, --interval-action [interval]', 'Interval in ms for an action') 35 .option('-i, --interval-action [interval]', 'Interval in ms for an action')
37 .option('-I, --interval-integrity [interval]', 'Interval in ms for an integrity check') 36 .option('-I, --interval-integrity [interval]', 'Interval in ms for an integrity check')
38 .option('-f, --flush', 'Flush datas on exit') 37 .option('-f, --flush', 'Flush datas on exit')
@@ -50,7 +49,7 @@ const actionInterval = program['intervalAction'] !== undefined ? parseInt(progra
50const integrityInterval = program['intervalIntegrity'] !== undefined ? parseInt(program['intervalIntegrity'], 10) : 60000 49const integrityInterval = program['intervalIntegrity'] !== undefined ? parseInt(program['intervalIntegrity'], 10) : 60000
51const displayDiffOnFail = program['difference'] || false 50const displayDiffOnFail = program['difference'] || false
52 51
53const numberOfPods = 6 52const numberOfServers = 6
54 53
55console.log( 54console.log(
56 'Create weight: %d, update weight: %d, remove weight: %d, view weight: %d, like weight: %d, dislike weight: %d.', 55 'Create weight: %d, update weight: %d, remove weight: %d, view weight: %d, like weight: %d, dislike weight: %d.',
@@ -77,7 +76,7 @@ start()
77// ---------------------------------------------------------------------------- 76// ----------------------------------------------------------------------------
78 77
79async function start () { 78async function start () {
80 const servers = await runServers(numberOfPods) 79 const servers = await runServers(numberOfServers)
81 80
82 process.on('exit', async () => { 81 process.on('exit', async () => {
83 await exitServers(servers, flushAtExit) 82 await exitServers(servers, flushAtExit)
@@ -152,22 +151,20 @@ function getRandomNumServer (servers) {
152 return getRandomInt(0, servers.length) 151 return getRandomInt(0, servers.length)
153} 152}
154 153
155async function runServers (numberOfPods: number) { 154async function runServers (numberOfServers: number) {
156 const servers: ServerInfo[] = (await flushAndRunMultipleServers(numberOfPods)) 155 const servers: ServerInfo[] = (await flushAndRunMultipleServers(numberOfServers))
157 .map(s => Object.assign({ requestsNumber: 0 }, s)) 156 .map(s => Object.assign({ requestsNumber: 0 }, s))
158 157
159 // Get the access tokens 158 // Get the access tokens
160 await setAccessTokensToServers(servers) 159 await setAccessTokensToServers(servers)
161 160
162 await makeFriends(servers[1].url, servers[1].accessToken) 161 for (let i = 0; i < numberOfServers; i++) {
163 await makeFriends(servers[0].url, servers[0].accessToken) 162 for (let j = 0; j < numberOfServers; j++) {
164 await wait(1000) 163 if (i === j) continue
165
166 await makeFriends(servers[3].url, servers[3].accessToken)
167 await makeFriends(servers[5].url, servers[5].accessToken)
168 await makeFriends(servers[4].url, servers[4].accessToken)
169 164
170 await wait(1000) 165 await follow(servers[i].url, [ servers[j].url ], servers[i].accessToken)
166 }
167 }
171 168
172 return servers 169 return servers
173} 170}
@@ -259,7 +256,7 @@ async function checkIntegrity (servers: ServerInfo[]) {
259 const videos: Video[][] = [] 256 const videos: Video[][] = []
260 const tasks: Promise<any>[] = [] 257 const tasks: Promise<any>[] = []
261 258
262 // Fetch all videos and remove some fields that can differ between pods 259 // Fetch all videos and remove some fields that can differ between servers
263 for (const server of servers) { 260 for (const server of servers) {
264 const p = getAllVideosListBy(server.url).then(res => videos.push(res.body.data)) 261 const p = getAllVideosListBy(server.url).then(res => videos.push(res.body.data))
265 tasks.push(p) 262 tasks.push(p)