+ describe('After a server restart', function () {
+ let liveVideoId: string
+ let liveVideoReplayId: string
+
+ async function createLiveWrapper (saveReplay: boolean) {
+ const liveAttributes = {
+ name: 'live video',
+ channelId: servers[0].videoChannel.id,
+ privacy: VideoPrivacy.PUBLIC,
+ saveReplay
+ }
+
+ const res = await createLive(servers[0].url, servers[0].accessToken, liveAttributes)
+ return res.body.video.uuid
+ }
+
+ before(async function () {
+ this.timeout(60000)
+
+ liveVideoId = await createLiveWrapper(false)
+ liveVideoReplayId = await createLiveWrapper(true)
+
+ await Promise.all([
+ sendRTMPStreamInVideo(servers[0].url, servers[0].accessToken, liveVideoId),
+ sendRTMPStreamInVideo(servers[0].url, servers[0].accessToken, liveVideoReplayId)
+ ])
+
+ await Promise.all([
+ waitUntilLiveStarts(servers[0].url, servers[0].accessToken, liveVideoId),
+ waitUntilLiveStarts(servers[0].url, servers[0].accessToken, liveVideoReplayId)
+ ])
+
+ await killallServers([ servers[0] ])
+ await reRunServer(servers[0])
+
+ await wait(5000)
+ })
+
+ it('Should cleanup lives', async function () {
+ this.timeout(60000)
+
+ const res = await getVideo(servers[0].url, liveVideoId)
+ const video: VideoDetails = res.body
+
+ expect(video.state.id).to.equal(VideoState.LIVE_ENDED)
+ })
+
+ it('Should save a live replay', async function () {
+ this.timeout(60000)
+
+ await waitJobs(servers)
+
+ const res = await getVideo(servers[0].url, liveVideoReplayId)
+ const video: VideoDetails = res.body
+
+ expect(video.state.id).to.equal(VideoState.PUBLISHED)
+ })
+ })
+