Browse Source

Correctly wait for live segment generation

pull/5340/merge
Chocobozzz 2 weeks ago
parent
commit
81f14b9112
No known key found for this signature in database GPG Key ID: 583A612D890159BE
7 changed files with 26 additions and 19 deletions
  1. +15
    -13
      server/tests/api/live/live-save-replay.ts
  2. +1
    -1
      server/tests/api/server/bulk.ts
  3. +1
    -1
      server/tests/api/server/email.ts
  4. +1
    -1
      server/tests/api/server/handle-down.ts
  5. +1
    -1
      server/tests/api/server/services.ts
  6. +1
    -1
      server/tests/api/server/stats.ts
  7. +6
    -1
      shared/server-commands/videos/live-command.ts

+ 15
- 13
server/tests/api/live/live-save-replay.ts View File

@@ -153,7 +153,7 @@ describe('Save replay setting', function () {
let sessionEndDateMin: Date

it('Should correctly create and federate the "waiting for stream" live', async function () {
this.timeout(20000)
this.timeout(40000)

liveVideoUUID = await createLiveWrapper({ permanent: false, replay: false })

@@ -164,7 +164,7 @@ describe('Save replay setting', function () {
})

it('Should correctly have updated the live and federated it when streaming in the live', async function () {
this.timeout(30000)
this.timeout(40000)

ffmpegCommand = await servers[0].live.sendRTMPStreamInVideo({ videoId: liveVideoUUID })

@@ -253,7 +253,7 @@ describe('Save replay setting', function () {
describe('With save replay enabled on non permanent live', function () {

it('Should correctly create and federate the "waiting for stream" live', async function () {
this.timeout(20000)
this.timeout(40000)

liveVideoUUID = await createLiveWrapper({ permanent: false, replay: true, replaySettings: { privacy: VideoPrivacy.UNLISTED } })

@@ -265,7 +265,7 @@ describe('Save replay setting', function () {
})

it('Should correctly have updated the live and federated it when streaming in the live', async function () {
this.timeout(20000)
this.timeout(40000)

ffmpegCommand = await servers[0].live.sendRTMPStreamInVideo({ videoId: liveVideoUUID })
await waitUntilLivePublishedOnAllServers(servers, liveVideoUUID)
@@ -278,7 +278,7 @@ describe('Save replay setting', function () {
})

it('Should correctly have saved the live and federated it after the streaming', async function () {
this.timeout(30000)
this.timeout(40000)

const session = await servers[0].live.findLatestSession({ videoId: liveVideoUUID })
expect(session.endDate).to.not.exist
@@ -319,7 +319,7 @@ describe('Save replay setting', function () {
})

it('Should update the saved live and correctly federate the updated attributes', async function () {
this.timeout(30000)
this.timeout(40000)

await servers[0].videos.update({ id: liveVideoUUID, attributes: { name: 'video updated', privacy: VideoPrivacy.PUBLIC } })
await waitJobs(servers)
@@ -367,7 +367,7 @@ describe('Save replay setting', function () {
describe('With a first live and its replay', function () {

it('Should correctly create and federate the "waiting for stream" live', async function () {
this.timeout(20000)
this.timeout(40000)

liveVideoUUID = await createLiveWrapper({ permanent: true, replay: true, replaySettings: { privacy: VideoPrivacy.UNLISTED } })

@@ -379,7 +379,7 @@ describe('Save replay setting', function () {
})

it('Should correctly have updated the live and federated it when streaming in the live', async function () {
this.timeout(20000)
this.timeout(40000)

ffmpegCommand = await servers[0].live.sendRTMPStreamInVideo({ videoId: liveVideoUUID })
await waitUntilLivePublishedOnAllServers(servers, liveVideoUUID)
@@ -392,7 +392,7 @@ describe('Save replay setting', function () {
})

it('Should correctly have saved the live and federated it after the streaming', async function () {
this.timeout(30000)
this.timeout(40000)

const liveDetails = await servers[0].videos.get({ id: liveVideoUUID })

@@ -443,10 +443,11 @@ describe('Save replay setting', function () {
})

describe('With a second live and its replay', function () {

it('Should update the replay settings', async function () {
await servers[0].live.update(
{ videoId: liveVideoUUID, fields: { replaySettings: { privacy: VideoPrivacy.PUBLIC } } })
await servers[0].live.update({ videoId: liveVideoUUID, fields: { replaySettings: { privacy: VideoPrivacy.PUBLIC } } })
await waitJobs(servers)

const live = await servers[0].live.get({ videoId: liveVideoUUID })

expect(live.saveReplay).to.be.true
@@ -456,7 +457,7 @@ describe('Save replay setting', function () {
})

it('Should correctly have updated the live and federated it when streaming in the live', async function () {
this.timeout(20000)
this.timeout(40000)

ffmpegCommand = await servers[0].live.sendRTMPStreamInVideo({ videoId: liveVideoUUID })
await waitUntilLivePublishedOnAllServers(servers, liveVideoUUID)
@@ -469,7 +470,8 @@ describe('Save replay setting', function () {
})

it('Should correctly have saved the live and federated it after the streaming', async function () {
this.timeout(30000)
this.timeout(40000)

const liveDetails = await servers[0].videos.get({ id: liveVideoUUID })

await stopFfmpeg(ffmpegCommand)


+ 1
- 1
server/tests/api/server/bulk.ts View File

@@ -87,7 +87,7 @@ describe('Test bulk actions', function () {
}

before(async function () {
this.timeout(120000)
this.timeout(240000)

await servers[0].videos.upload({ attributes: { name: 'video 1 server 1' } })
await servers[0].videos.upload({ attributes: { name: 'video 2 server 1' } })


+ 1
- 1
server/tests/api/server/email.ts View File

@@ -33,7 +33,7 @@ describe('Test emails', function () {
}

before(async function () {
this.timeout(50000)
this.timeout(120000)

const emailPort = await MockSmtpServer.Instance.collectEmails(emails)
server = await createSingleServer(1, ConfigCommand.getEmailOverrideConfig(emailPort))


+ 1
- 1
server/tests/api/server/handle-down.ts View File

@@ -282,7 +282,7 @@ describe('Test handle downs', function () {
})

it('Should upload many videos on server 1', async function () {
this.timeout(120000)
this.timeout(240000)

for (let i = 0; i < 10; i++) {
const uuid = (await servers[0].videos.quickUpload({ name: 'video ' + i })).uuid


+ 1
- 1
server/tests/api/server/services.ts View File

@@ -26,7 +26,7 @@ describe('Test services', function () {
]

before(async function () {
this.timeout(30000)
this.timeout(120000)

server = await createSingleServer(1)



+ 1
- 1
server/tests/api/server/stats.ts View File

@@ -232,7 +232,7 @@ describe('Test stats (excluding redundancy)', function () {
})

it('Should have the correct AP stats', async function () {
this.timeout(60000)
this.timeout(120000)

await servers[0].config.disableTranscoding()



+ 6
- 1
shared/server-commands/videos/live-command.ts View File

@@ -213,6 +213,7 @@ export class LiveCommand extends AbstractCommand {

while (error) {
try {
// Check fragment exists
await this.getRawRequest({
...options,

@@ -224,12 +225,16 @@ export class LiveCommand extends AbstractCommand {
const video = await server.videos.get({ id: videoUUID })
const hlsPlaylist = video.streamingPlaylists[0]

// Check SHA generation
const shaBody = await server.streamingPlaylists.getSegmentSha256({ url: hlsPlaylist.segmentsSha256Url, withRetry: objectStorage })

if (!shaBody[segmentName]) {
throw new Error('Segment SHA does not exist')
}

// Check fragment is in m3u8 playlist
const subPlaylist = await server.streamingPlaylists.get({ url: `${baseUrl}/${video.uuid}/${playlistNumber}.m3u8` })
if (!subPlaylist.includes(segmentName)) throw new Error('Fragment does not exist in playlist')

error = false
} catch {
error = true


Loading…
Cancel
Save