]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/utils/server/servers.ts
Check video exists before extending its expiration
[github/Chocobozzz/PeerTube.git] / server / tests / utils / server / servers.ts
index 8340fbc18d01bf79b1518262158dd8337a8c7d69..3c946db273d6014bb90c790c9c6d193b79b8143d 100644 (file)
@@ -1,5 +1,7 @@
 import { ChildProcess, exec, fork } from 'child_process'
 import { join } from 'path'
+import { root, wait } from '../miscs/miscs'
+import { readFile } from 'fs-extra'
 
 interface ServerInfo {
   app: ChildProcess,
@@ -24,7 +26,9 @@ interface ServerInfo {
     id: number
     uuid: string
     name: string
-    accountName: string
+    account: {
+      name: string
+    }
   }
 
   remoteVideo?: {
@@ -33,7 +37,7 @@ interface ServerInfo {
   }
 }
 
-function flushAndRunMultipleServers (totalServers) {
+function flushAndRunMultipleServers (totalServers: number, configOverride?: Object) {
   let apps = []
   let i = 0
 
@@ -49,10 +53,7 @@ function flushAndRunMultipleServers (totalServers) {
     flushTests()
       .then(() => {
         for (let j = 1; j <= totalServers; j++) {
-          // For the virtual buffer
-          setTimeout(() => {
-            runServer(j).then(app => anotherServerDone(j, app))
-          }, 1000 * (j - 1))
+          runServer(j, configOverride).then(app => anotherServerDone(j, app))
         }
       })
   })
@@ -86,7 +87,7 @@ function runServer (serverNumber: number, configOverride?: Object) {
 
   // These actions are async so we need to be sure that they have both been done
   const serverRunString = {
-    'Server listening on port': false
+    'Server listening': false
   }
   const key = 'Database peertube_test' + serverNumber + ' is ready'
   serverRunString[key] = false
@@ -114,7 +115,7 @@ function runServer (serverNumber: number, configOverride?: Object) {
   }
 
   return new Promise<ServerInfo>(res => {
-    server.app = fork(join(__dirname, '..', '..', '..', 'dist', 'server.js'), [], options)
+    server.app = fork(join(__dirname, '..', '..', '..', '..', 'dist', 'server.js'), [], options)
     server.app.stdout.on('data', function onStdout (data) {
       let dontContinue = false
 
@@ -145,12 +146,32 @@ function runServer (serverNumber: number, configOverride?: Object) {
   })
 }
 
+async function reRunServer (server: ServerInfo, configOverride?: any) {
+  const newServer = await runServer(server.serverNumber, configOverride)
+  server.app = newServer.app
+
+  return server
+}
+
 function killallServers (servers: ServerInfo[]) {
   for (const server of servers) {
     process.kill(-server.app.pid)
   }
 }
 
+async function waitUntilLog (server: ServerInfo, str: string, count = 1) {
+  const logfile = join(root(), 'test' + server.serverNumber, 'logs/peertube.log')
+
+  while (true) {
+    const buf = await readFile(logfile)
+
+    const matches = buf.toString().match(new RegExp(str, 'g'))
+    if (matches && matches.length === count) return
+
+    await wait(1000)
+  }
+}
+
 // ---------------------------------------------------------------------------
 
 export {
@@ -158,5 +179,7 @@ export {
   flushAndRunMultipleServers,
   flushTests,
   runServer,
-  killallServers
+  killallServers,
+  reRunServer,
+  waitUntilLog
 }