From 792e5b8e5b731e15228dd5938bc2f99bb2e1070a Mon Sep 17 00:00:00 2001
From: Chocobozzz <me@florianbigard.com>
Date: Tue, 2 Oct 2018 09:04:19 +0200
Subject: Try to improve redundancy tests

---
 server/tests/api/server/redundancy.ts | 25 ++++++++++++++++---------
 server/tests/utils/server/servers.ts  | 18 +++++++++++++++++-
 2 files changed, 33 insertions(+), 10 deletions(-)

(limited to 'server/tests')

diff --git a/server/tests/api/server/redundancy.ts b/server/tests/api/server/redundancy.ts
index e1709891d..fcf1eacd3 100644
--- a/server/tests/api/server/redundancy.ts
+++ b/server/tests/api/server/redundancy.ts
@@ -15,7 +15,8 @@ import {
   setAccessTokensToServers, unfollow,
   uploadVideo,
   viewVideo,
-  wait
+  wait,
+  waitUntilLog
 } from '../../utils'
 import { waitJobs } from '../../utils/server/jobs'
 import * as magnetUtil from 'magnet-uri'
@@ -225,7 +226,7 @@ describe('Test videos redundancy', function () {
       this.timeout(40000)
 
       await waitJobs(servers)
-      await wait(15000)
+      await waitUntilLog(servers[0], 'Duplicated ', 4)
       await waitJobs(servers)
 
       await check2Webseeds(strategy)
@@ -270,7 +271,7 @@ describe('Test videos redundancy', function () {
       this.timeout(40000)
 
       await waitJobs(servers)
-      await wait(15000)
+      await waitUntilLog(servers[0], 'Duplicated ', 4)
       await waitJobs(servers)
 
       await check2Webseeds(strategy)
@@ -336,7 +337,7 @@ describe('Test videos redundancy', function () {
       this.timeout(40000)
 
       await waitJobs(servers)
-      await wait(15000)
+      await waitUntilLog(servers[0], 'Duplicated ', 4)
       await waitJobs(servers)
 
       await check2Webseeds(strategy)
@@ -423,7 +424,7 @@ describe('Test videos redundancy', function () {
       await enableRedundancyOnServer1()
 
       await waitJobs(servers)
-      await wait(5000)
+      await waitUntilLog(servers[0], 'Duplicated ', 4)
       await waitJobs(servers)
 
       await check2Webseeds(strategy)
@@ -434,15 +435,21 @@ describe('Test videos redundancy', function () {
     })
 
     it('Should cache video 2 webseed on the first video', async function () {
-      this.timeout(40000)
-      this.retries(3)
+      this.timeout(50000)
 
       await waitJobs(servers)
 
       await wait(7000)
 
-      await check1WebSeed(strategy, video1Server2UUID)
-      await check2Webseeds(strategy, video2Server2UUID)
+      try {
+        await check1WebSeed(strategy, video1Server2UUID)
+        await check2Webseeds(strategy, video2Server2UUID)
+      } catch {
+        await wait(7000)
+
+        await check1WebSeed(strategy, video1Server2UUID)
+        await check2Webseeds(strategy, video2Server2UUID)
+      }
     })
 
     after(function () {
diff --git a/server/tests/utils/server/servers.ts b/server/tests/utils/server/servers.ts
index fbfc83ca1..3c946db27 100644
--- a/server/tests/utils/server/servers.ts
+++ b/server/tests/utils/server/servers.ts
@@ -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,
@@ -157,6 +159,19 @@ function killallServers (servers: ServerInfo[]) {
   }
 }
 
+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 {
@@ -165,5 +180,6 @@ export {
   flushTests,
   runServer,
   killallServers,
-  reRunServer
+  reRunServer,
+  waitUntilLog
 }
-- 
cgit v1.2.3