From 10a72a7e617273cdbe897766f77f427eb57b689a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 28 Dec 2021 11:41:41 +0100 Subject: [PATCH] Fix tests --- .../job-queue/handlers/activitypub-cleaner.ts | 38 +++++++------------ server/tests/api/activitypub/cleaner.ts | 15 ++++++-- server/tests/api/server/handle-down.ts | 2 +- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/server/lib/job-queue/handlers/activitypub-cleaner.ts b/server/lib/job-queue/handlers/activitypub-cleaner.ts index 1540bf23a..509dd1cb5 100644 --- a/server/lib/job-queue/handlers/activitypub-cleaner.ts +++ b/server/lib/job-queue/handlers/activitypub-cleaner.ts @@ -14,29 +14,27 @@ import { VideoModel } from '@server/models/video/video' import { VideoCommentModel } from '@server/models/video/video-comment' import { VideoShareModel } from '@server/models/video/video-share' import { HttpStatusCode } from '@shared/models' -import { logger } from '../../../helpers/logger' +import { logger, loggerTagsFactory } from '../../../helpers/logger' import { AccountVideoRateModel } from '../../../models/account/account-video-rate' +const lTags = loggerTagsFactory('ap-cleaner') + // Job to clean remote interactions off local videos async function processActivityPubCleaner (_job: Job) { - logger.info('Processing ActivityPub cleaner.') + logger.info('Processing ActivityPub cleaner.', lTags()) { const rateUrls = await AccountVideoRateModel.listRemoteRateUrlsOfLocalVideos() const { bodyValidator, deleter, updater } = rateOptionsFactory() await map(rateUrls, async rateUrl => { - try { - const result = await updateObjectIfNeeded({ url: rateUrl, bodyValidator, updater, deleter }) + const result = await updateObjectIfNeeded({ url: rateUrl, bodyValidator, updater, deleter }) - if (result?.status === 'deleted') { - const { videoId, type } = result.data + if (result?.status === 'deleted') { + const { videoId, type } = result.data - await VideoModel.updateRatesOf(videoId, type, undefined) - } - } catch (err) { - logger.warn('Cannot update/delete remote AP rate %s.', rateUrl, { err }) + await VideoModel.updateRatesOf(videoId, type, undefined) } }, { concurrency: AP_CLEANER.CONCURRENCY }) } @@ -46,11 +44,7 @@ async function processActivityPubCleaner (_job: Job) { const { bodyValidator, deleter, updater } = shareOptionsFactory() await map(shareUrls, async shareUrl => { - try { - await updateObjectIfNeeded({ url: shareUrl, bodyValidator, updater, deleter }) - } catch (err) { - logger.warn('Cannot update/delete remote AP share %s.', shareUrl, { err }) - } + await updateObjectIfNeeded({ url: shareUrl, bodyValidator, updater, deleter }) }, { concurrency: AP_CLEANER.CONCURRENCY }) } @@ -59,11 +53,7 @@ async function processActivityPubCleaner (_job: Job) { const { bodyValidator, deleter, updater } = commentOptionsFactory() await map(commentUrls, async commentUrl => { - try { - await updateObjectIfNeeded({ url: commentUrl, bodyValidator, updater, deleter }) - } catch (err) { - logger.warn('Cannot update/delete remote AP comment %s.', commentUrl, { err }) - } + await updateObjectIfNeeded({ url: commentUrl, bodyValidator, updater, deleter }) }, { concurrency: AP_CLEANER.CONCURRENCY }) } } @@ -85,7 +75,7 @@ async function updateObjectIfNeeded (options: { const { url, bodyValidator, updater, deleter } = options const on404OrTombstone = async () => { - logger.info('Removing remote AP object %s.', url) + logger.info('Removing remote AP object %s.', url, lTags(url)) const data = await deleter(url) return { status: 'deleted' as 'deleted', data } @@ -107,7 +97,7 @@ async function updateObjectIfNeeded (options: { throw new Error(`New url ${newUrl} has not the same host than old url ${url}`) } - logger.info('Updating remote AP object %s.', url) + logger.info('Updating remote AP object %s.', url, lTags(url)) const data = await updater(url, newUrl) return { status: 'updated', data } @@ -120,11 +110,11 @@ async function updateObjectIfNeeded (options: { return on404OrTombstone() } - logger.debug('Remote AP object %s is unavailable.', url) + logger.debug('Remote AP object %s is unavailable.', url, lTags(url)) const unavailability = await Redis.Instance.addAPUnavailability(url) if (unavailability >= AP_CLEANER.UNAVAILABLE_TRESHOLD) { - logger.info('Removing unavailable AP resource %s.', url) + logger.info('Removing unavailable AP resource %s.', url, lTags(url)) return on404OrTombstone() } diff --git a/server/tests/api/activitypub/cleaner.ts b/server/tests/api/activitypub/cleaner.ts index dc885023a..d0a151f5c 100644 --- a/server/tests/api/activitypub/cleaner.ts +++ b/server/tests/api/activitypub/cleaner.ts @@ -291,12 +291,12 @@ describe('Test AP cleaner', function () { { const video = await servers[0].videos.get({ id: uuid }) - expect(video.likes).to.equal(3) + expect(video.likes).to.equal(2) expect(video.dislikes).to.equal(0) } { - const { total } = await servers[0].comments.listThreads({ videoId: videoUUID1 }) + const { total } = await servers[0].comments.listThreads({ videoId: uuid }) expect(total).to.equal(2) } } @@ -319,8 +319,15 @@ describe('Test AP cleaner', function () { await wait(5000) await expectNotDeleted() - await wait(15000) - await expectDeleted() + let continueWhile = true + + do { + try { + await expectDeleted() + continueWhile = false + } catch { + } + } while (continueWhile) }) after(async function () { diff --git a/server/tests/api/server/handle-down.ts b/server/tests/api/server/handle-down.ts index 7c3836681..3dcd076f5 100644 --- a/server/tests/api/server/handle-down.ts +++ b/server/tests/api/server/handle-down.ts @@ -50,7 +50,7 @@ describe('Test handle downs', function () { let commentCommands: CommentsCommand[] before(async function () { - this.timeout(30000) + this.timeout(120000) servers = await createMultipleServers(3) commentCommands = servers.map(s => s.comments)