From 536598cfafab1c5e24e881db1c528489f804fb6b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 16 May 2019 16:55:34 +0200 Subject: Add audio support in upload --- server/tests/api/check-params/config.ts | 1 + server/tests/api/server/config.ts | 3 +++ 2 files changed, 4 insertions(+) (limited to 'server/tests') diff --git a/server/tests/api/check-params/config.ts b/server/tests/api/check-params/config.ts index 2a2ec606a..8155e11ab 100644 --- a/server/tests/api/check-params/config.ts +++ b/server/tests/api/check-params/config.ts @@ -59,6 +59,7 @@ describe('Test config API validators', function () { transcoding: { enabled: true, allowAdditionalExtensions: true, + allowAudioFiles: true, threads: 1, resolutions: { '240p': false, diff --git a/server/tests/api/server/config.ts b/server/tests/api/server/config.ts index ca389b7b6..2ad477c99 100644 --- a/server/tests/api/server/config.ts +++ b/server/tests/api/server/config.ts @@ -52,6 +52,7 @@ function checkInitialConfig (server: ServerInfo, data: CustomConfig) { expect(data.user.videoQuotaDaily).to.equal(-1) expect(data.transcoding.enabled).to.be.false expect(data.transcoding.allowAdditionalExtensions).to.be.false + expect(data.transcoding.allowAudioFiles).to.be.false expect(data.transcoding.threads).to.equal(2) expect(data.transcoding.resolutions['240p']).to.be.true expect(data.transcoding.resolutions['360p']).to.be.true @@ -102,6 +103,7 @@ function checkUpdatedConfig (data: CustomConfig) { expect(data.transcoding.enabled).to.be.true expect(data.transcoding.threads).to.equal(1) expect(data.transcoding.allowAdditionalExtensions).to.be.true + expect(data.transcoding.allowAudioFiles).to.be.true expect(data.transcoding.resolutions['240p']).to.be.false expect(data.transcoding.resolutions['360p']).to.be.true expect(data.transcoding.resolutions['480p']).to.be.true @@ -215,6 +217,7 @@ describe('Test config', function () { transcoding: { enabled: true, allowAdditionalExtensions: true, + allowAudioFiles: true, threads: 1, resolutions: { '240p': false, -- cgit v1.2.3 From b345a8047bfde1efa1fdbd249f25f663151265a8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 17 May 2019 11:56:12 +0200 Subject: Add audio upload tests --- server/tests/api/server/config.ts | 11 +++++- server/tests/api/server/jobs.ts | 2 +- server/tests/api/travis-2.sh | 2 +- server/tests/api/videos/video-hls.ts | 41 ++++++++++++++++------ server/tests/api/videos/video-transcoder.ts | 51 ++++++++++++++++++++++++++++ server/tests/fixtures/sample.ogg | Bin 0 -> 105243 bytes 6 files changed, 93 insertions(+), 14 deletions(-) create mode 100644 server/tests/fixtures/sample.ogg (limited to 'server/tests') diff --git a/server/tests/api/server/config.ts b/server/tests/api/server/config.ts index 2ad477c99..8ea21158a 100644 --- a/server/tests/api/server/config.ts +++ b/server/tests/api/server/config.ts @@ -15,7 +15,7 @@ import { registerUser, reRunServer, ServerInfo, setAccessTokensToServers, - updateCustomConfig + updateCustomConfig, uploadVideo } from '../../../../shared/extra-utils' import { ServerConfig } from '../../../../shared/models' @@ -160,6 +160,9 @@ describe('Test config', function () { expect(data.video.file.extensions).to.contain('.webm') expect(data.video.file.extensions).to.contain('.ogv') + await uploadVideo(server.url, server.accessToken, { fixture: 'video_short.mkv' }, 400) + await uploadVideo(server.url, server.accessToken, { fixture: 'sample.ogg' }, 400) + expect(data.contactForm.enabled).to.be.true }) @@ -272,6 +275,12 @@ describe('Test config', function () { expect(data.video.file.extensions).to.contain('.ogv') expect(data.video.file.extensions).to.contain('.flv') expect(data.video.file.extensions).to.contain('.mkv') + expect(data.video.file.extensions).to.contain('.mp3') + expect(data.video.file.extensions).to.contain('.ogg') + expect(data.video.file.extensions).to.contain('.flac') + + await uploadVideo(server.url, server.accessToken, { fixture: 'video_short.mkv' }, 200) + await uploadVideo(server.url, server.accessToken, { fixture: 'sample.ogg' }, 200) }) it('Should have the configuration updated after a restart', async function () { diff --git a/server/tests/api/server/jobs.ts b/server/tests/api/server/jobs.ts index 634654626..3ab2fe120 100644 --- a/server/tests/api/server/jobs.ts +++ b/server/tests/api/server/jobs.ts @@ -26,7 +26,7 @@ describe('Test jobs', function () { }) it('Should create some jobs', async function () { - this.timeout(30000) + this.timeout(60000) await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video1' }) await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video2' }) diff --git a/server/tests/api/travis-2.sh b/server/tests/api/travis-2.sh index 82c1864b4..ba7a061b0 100644 --- a/server/tests/api/travis-2.sh +++ b/server/tests/api/travis-2.sh @@ -5,5 +5,5 @@ set -eu serverFiles=$(find server/tests/api/server -type f | grep -v index.ts | xargs echo) usersFiles=$(find server/tests/api/users -type f | grep -v index.ts | xargs echo) -MOCHA_PARALLEL=true mocha-parallel-tests --max-parallel $1 --timeout 5000 --exit --require ts-node/register --bail \ +MOCHA_PARALLEL=true mocha --timeout 5000 --exit --require ts-node/register --bail \ $serverFiles $usersFiles diff --git a/server/tests/api/videos/video-hls.ts b/server/tests/api/videos/video-hls.ts index 504c50dee..eacd9ab79 100644 --- a/server/tests/api/videos/video-hls.ts +++ b/server/tests/api/videos/video-hls.ts @@ -21,12 +21,11 @@ import { import { VideoDetails } from '../../../../shared/models/videos' import { VideoStreamingPlaylistType } from '../../../../shared/models/videos/video-streaming-playlist.type' import { join } from 'path' +import { DEFAULT_AUDIO_RESOLUTION } from '../../../initializers/constants' const expect = chai.expect -async function checkHlsPlaylist (servers: ServerInfo[], videoUUID: string) { - const resolutions = [ 240, 360, 480, 720 ] - +async function checkHlsPlaylist (servers: ServerInfo[], videoUUID: string, resolutions = [ 240, 360, 480, 720 ]) { for (const server of servers) { const res = await getVideo(server.url, videoUUID) const videoDetails: VideoDetails = res.body @@ -41,9 +40,8 @@ async function checkHlsPlaylist (servers: ServerInfo[], videoUUID: string) { const masterPlaylist = res2.text - expect(masterPlaylist).to.contain('#EXT-X-STREAM-INF:BANDWIDTH=55472,RESOLUTION=640x360,FRAME-RATE=25') - for (const resolution of resolutions) { + expect(masterPlaylist).to.match(new RegExp('#EXT-X-STREAM-INF:BANDWIDTH=\\d+,RESOLUTION=\\d+x' + resolution + ',FRAME-RATE=\\d+')) expect(masterPlaylist).to.contain(`${resolution}.m3u8`) } } @@ -70,11 +68,21 @@ async function checkHlsPlaylist (servers: ServerInfo[], videoUUID: string) { describe('Test HLS videos', function () { let servers: ServerInfo[] = [] let videoUUID = '' + let videoAudioUUID = '' before(async function () { this.timeout(120000) - servers = await flushAndRunMultipleServers(2, { transcoding: { enabled: true, hls: { enabled: true } } }) + const configOverride = { + transcoding: { + enabled: true, + allow_audio_files: true, + hls: { + enabled: true + } + } + } + servers = await flushAndRunMultipleServers(2, configOverride) // Get the access tokens await setAccessTokensToServers(servers) @@ -86,16 +94,25 @@ describe('Test HLS videos', function () { it('Should upload a video and transcode it to HLS', async function () { this.timeout(120000) - { - const res = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, { name: 'video 1', fixture: 'video_short.webm' }) - videoUUID = res.body.video.uuid - } + const res = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, { name: 'video 1', fixture: 'video_short.webm' }) + videoUUID = res.body.video.uuid await waitJobs(servers) await checkHlsPlaylist(servers, videoUUID) }) + it('Should upload an audio file and transcode it to HLS', async function () { + this.timeout(120000) + + const res = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, { name: 'video audio', fixture: 'sample.ogg' }) + videoAudioUUID = res.body.video.uuid + + await waitJobs(servers) + + await checkHlsPlaylist(servers, videoAudioUUID, [ DEFAULT_AUDIO_RESOLUTION ]) + }) + it('Should update the video', async function () { await updateVideo(servers[0].url, servers[0].accessToken, videoUUID, { name: 'video 1 updated' }) @@ -104,13 +121,15 @@ describe('Test HLS videos', function () { await checkHlsPlaylist(servers, videoUUID) }) - it('Should delete the video', async function () { + it('Should delete videos', async function () { await removeVideo(servers[0].url, servers[0].accessToken, videoUUID) + await removeVideo(servers[0].url, servers[0].accessToken, videoAudioUUID) await waitJobs(servers) for (const server of servers) { await getVideo(server.url, videoUUID, 404) + await getVideo(server.url, videoAudioUUID, 404) } }) diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index cfd0c8430..90ade1652 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts @@ -14,6 +14,7 @@ import { getMyVideos, getVideo, getVideosList, + makeGetRequest, root, ServerInfo, setAccessTokensToServers, @@ -365,6 +366,56 @@ describe('Test video transcoding', function () { expect(await canDoQuickTranscode(buildAbsoluteFixturePath('video_short.webm'))).to.be.false }) + it('Should merge an audio file with the preview file', async function () { + this.timeout(60000) + + const videoAttributesArg = { name: 'audio_with_preview', previewfile: 'preview.jpg', fixture: 'sample.ogg' } + await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, videoAttributesArg) + + await waitJobs(servers) + + for (const server of servers) { + const res = await getVideosList(server.url) + + const video = res.body.data.find(v => v.name === 'audio_with_preview') + const res2 = await getVideo(server.url, video.id) + const videoDetails: VideoDetails = res2.body + + expect(videoDetails.files).to.have.lengthOf(1) + + await makeGetRequest({ url: server.url, path: videoDetails.thumbnailPath, statusCodeExpected: 200 }) + await makeGetRequest({ url: server.url, path: videoDetails.previewPath, statusCodeExpected: 200 }) + + const magnetUri = videoDetails.files[ 0 ].magnetUri + expect(magnetUri).to.contain('.mp4') + } + }) + + it('Should upload an audio file and choose a default background image', async function () { + this.timeout(60000) + + const videoAttributesArg = { name: 'audio_without_preview', fixture: 'sample.ogg' } + await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, videoAttributesArg) + + await waitJobs(servers) + + for (const server of servers) { + const res = await getVideosList(server.url) + + const video = res.body.data.find(v => v.name === 'audio_without_preview') + const res2 = await getVideo(server.url, video.id) + const videoDetails = res2.body + + expect(videoDetails.files).to.have.lengthOf(1) + + await makeGetRequest({ url: server.url, path: videoDetails.thumbnailPath, statusCodeExpected: 200 }) + await makeGetRequest({ url: server.url, path: videoDetails.previewPath, statusCodeExpected: 200 }) + + const magnetUri = videoDetails.files[ 0 ].magnetUri + expect(magnetUri).to.contain('.mp4') + } + }) + after(async function () { await cleanupTests(servers) }) diff --git a/server/tests/fixtures/sample.ogg b/server/tests/fixtures/sample.ogg new file mode 100644 index 000000000..0d7f43eb7 Binary files /dev/null and b/server/tests/fixtures/sample.ogg differ -- cgit v1.2.3 From 80b8ad2a7084c206efb194ddfbea13df860f0c5f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 17 May 2019 15:51:42 +0200 Subject: Update travis ffmpeg patch version --- server/tests/api/videos/multiple-servers.ts | 4 ++-- server/tests/api/videos/services.ts | 4 ++-- server/tests/api/videos/video-hls.ts | 4 ++++ server/tests/fixtures/preview.jpg | Bin 4215 -> 6868 bytes server/tests/fixtures/video_short1-preview.webm.jpg | Bin 10181 -> 22654 bytes 5 files changed, 8 insertions(+), 4 deletions(-) (limited to 'server/tests') diff --git a/server/tests/api/videos/multiple-servers.ts b/server/tests/api/videos/multiple-servers.ts index 09b461200..e9625e5f7 100644 --- a/server/tests/api/videos/multiple-servers.ts +++ b/server/tests/api/videos/multiple-servers.ts @@ -215,7 +215,7 @@ describe('Test multiple servers', function () { files: [ { resolution: 240, - size: 187000 + size: 189000 }, { resolution: 360, @@ -223,7 +223,7 @@ describe('Test multiple servers', function () { }, { resolution: 480, - size: 383000 + size: 384000 }, { resolution: 720, diff --git a/server/tests/api/videos/services.ts b/server/tests/api/videos/services.ts index 38e232e5f..17172331f 100644 --- a/server/tests/api/videos/services.ts +++ b/server/tests/api/videos/services.ts @@ -41,8 +41,8 @@ describe('Test services', function () { expect(res.body.width).to.equal(560) expect(res.body.height).to.equal(315) expect(res.body.thumbnail_url).to.equal(expectedThumbnailUrl) - expect(res.body.thumbnail_width).to.equal(560) - expect(res.body.thumbnail_height).to.equal(315) + expect(res.body.thumbnail_width).to.equal(850) + expect(res.body.thumbnail_height).to.equal(480) }) it('Should have a valid oEmbed response with small max height query', async function () { diff --git a/server/tests/api/videos/video-hls.ts b/server/tests/api/videos/video-hls.ts index eacd9ab79..39178bb1a 100644 --- a/server/tests/api/videos/video-hls.ts +++ b/server/tests/api/videos/video-hls.ts @@ -114,6 +114,8 @@ describe('Test HLS videos', function () { }) it('Should update the video', async function () { + this.timeout(10000) + await updateVideo(servers[0].url, servers[0].accessToken, videoUUID, { name: 'video 1 updated' }) await waitJobs(servers) @@ -122,6 +124,8 @@ describe('Test HLS videos', function () { }) it('Should delete videos', async function () { + this.timeout(10000) + await removeVideo(servers[0].url, servers[0].accessToken, videoUUID) await removeVideo(servers[0].url, servers[0].accessToken, videoAudioUUID) diff --git a/server/tests/fixtures/preview.jpg b/server/tests/fixtures/preview.jpg index c40ece838..cb5692281 100644 Binary files a/server/tests/fixtures/preview.jpg and b/server/tests/fixtures/preview.jpg differ diff --git a/server/tests/fixtures/video_short1-preview.webm.jpg b/server/tests/fixtures/video_short1-preview.webm.jpg index d2a068b78..157d3ca9a 100644 Binary files a/server/tests/fixtures/video_short1-preview.webm.jpg and b/server/tests/fixtures/video_short1-preview.webm.jpg differ -- cgit v1.2.3