From 792e5b8e5b731e15228dd5938bc2f99bb2e1070a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 2 Oct 2018 09:04:19 +0200 Subject: [PATCH] Try to improve redundancy tests --- server/lib/activitypub/videos.ts | 2 ++ .../schedulers/videos-redundancy-scheduler.ts | 2 ++ server/tests/api/server/redundancy.ts | 25 ++++++++++++------- server/tests/utils/server/servers.ts | 18 ++++++++++++- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index cd1bc4e06..54cea542f 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -396,6 +396,8 @@ async function refreshVideoIfNeeded (options: { } await retryTransactionWrapper(updateVideoFromAP, updateOptions) await syncVideoExternalAttributes(video, videoObject, options.syncParam) + + return video } catch (err) { logger.warn('Cannot refresh video %s.', options.video.url, { err }) return video diff --git a/server/lib/schedulers/videos-redundancy-scheduler.ts b/server/lib/schedulers/videos-redundancy-scheduler.ts index 0b1ae76ff..607bdf67c 100644 --- a/server/lib/schedulers/videos-redundancy-scheduler.ts +++ b/server/lib/schedulers/videos-redundancy-scheduler.ts @@ -157,6 +157,8 @@ export class VideosRedundancyScheduler extends AbstractScheduler { createdModel.VideoFile = file await sendCreateCacheFile(serverActor, createdModel) + + logger.info('Duplicated %s - %d -> %s.', video.url, file.resolution, createdModel.url) } } 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 } -- 2.41.0