From 34aa316f58f726662bc609cf99f33327bddb18c5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 10 Oct 2022 11:31:01 +0200 Subject: [PATCH] Try to fix tests --- server/tests/shared/live.ts | 9 +++-- shared/server-commands/videos/live-command.ts | 11 ++++++ .../videos/streaming-playlists-command.ts | 36 ++++++++++++++----- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/server/tests/shared/live.ts b/server/tests/shared/live.ts index aa79622cb..f165832fe 100644 --- a/server/tests/shared/live.ts +++ b/server/tests/shared/live.ts @@ -58,13 +58,16 @@ async function testVideoResolutions (options: { : originServer.url + '/static/streaming-playlists/hls' if (objectStorage) { - // Playlist file upload - await wait(500) + await originServer.live.waitUntilSegmentUpload({ playlistNumber: i, segment: segmentNum }) + await wait(1000) expect(hlsPlaylist.segmentsSha256Url).to.contain(ObjectStorageCommand.getPlaylistBaseUrl()) } - const subPlaylist = await originServer.streamingPlaylists.get({ url: `${baseUrl}/${video.uuid}/${i}.m3u8` }) + const subPlaylist = await originServer.streamingPlaylists.get({ + url: `${baseUrl}/${video.uuid}/${i}.m3u8`, + withRetry: objectStorage // With object storage, the request may fail because of inconsistent data in S3 + }) expect(subPlaylist).to.contain(segmentName) diff --git a/shared/server-commands/videos/live-command.ts b/shared/server-commands/videos/live-command.ts index defae95fb..84d127db2 100644 --- a/shared/server-commands/videos/live-command.ts +++ b/shared/server-commands/videos/live-command.ts @@ -172,6 +172,17 @@ export class LiveCommand extends AbstractCommand { return this.server.servers.waitUntilLog(`${videoUUID}/${segmentName}`, totalSessions * 2, false) } + waitUntilSegmentUpload (options: OverrideCommandOptions & { + playlistNumber: number + segment: number + totalSessions?: number + }) { + const { playlistNumber, segment, totalSessions = 1 } = options + const segmentName = `${playlistNumber}-00000${segment}.ts` + + return this.server.servers.waitUntilLog(`${segmentName} in bucket `, totalSessions * 2, false) + } + async waitUntilReplacedByReplay (options: OverrideCommandOptions & { videoId: number | string }) { diff --git a/shared/server-commands/videos/streaming-playlists-command.ts b/shared/server-commands/videos/streaming-playlists-command.ts index 7f923d001..25e446e72 100644 --- a/shared/server-commands/videos/streaming-playlists-command.ts +++ b/shared/server-commands/videos/streaming-playlists-command.ts @@ -1,19 +1,39 @@ +import { wait } from '@shared/core-utils' import { HttpStatusCode } from '@shared/models' -import { unwrapBody, unwrapTextOrDecode, unwrapBodyOrDecodeToJSON } from '../requests' +import { unwrapBody, unwrapBodyOrDecodeToJSON, unwrapTextOrDecode } from '../requests' import { AbstractCommand, OverrideCommandOptions } from '../shared' export class StreamingPlaylistsCommand extends AbstractCommand { - get (options: OverrideCommandOptions & { + async get (options: OverrideCommandOptions & { url: string + withRetry?: boolean // default false + currentRetry?: number }) { - return unwrapTextOrDecode(this.getRawRequest({ - ...options, + const { withRetry, currentRetry = 1 } = options - url: options.url, - implicitToken: false, - defaultExpectedStatus: HttpStatusCode.OK_200 - })) + try { + const result = await unwrapTextOrDecode(this.getRawRequest({ + ...options, + + url: options.url, + implicitToken: false, + defaultExpectedStatus: HttpStatusCode.OK_200 + })) + + return result + } catch (err) { + if (!withRetry || currentRetry > 5) throw err + + await wait(100) + + return this.get({ + ...options, + + withRetry, + currentRetry: currentRetry + 1 + }) + } } getFragmentedSegment (options: OverrideCommandOptions & {