aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-05-04 21:51:00 +0200
committerChocobozzz <florian.bigard@gmail.com>2017-05-04 21:51:00 +0200
commitfce897f326af14406ced2f71a00ae89ff297a550 (patch)
tree96538ca4f10e068c5ee1909f005809b01b51fd53
parent227d02feadbc9b1fc916a12528ccc0623fb3069e (diff)
downloadPeerTube-fce897f326af14406ced2f71a00ae89ff297a550.tar.gz
PeerTube-fce897f326af14406ced2f71a00ae89ff297a550.tar.zst
PeerTube-fce897f326af14406ced2f71a00ae89ff297a550.zip
Server: add tests to video transcoder
-rw-r--r--config/default.yaml2
-rw-r--r--config/test-2.yaml3
-rw-r--r--config/test-6.yaml3
-rw-r--r--server/tests/api/index.js1
-rw-r--r--server/tests/api/video-transcoder.js115
5 files changed, 120 insertions, 4 deletions
diff --git a/config/default.yaml b/config/default.yaml
index 27eb2a533..e03bf1aea 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -32,5 +32,5 @@ signup:
32# If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag 32# If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag
33# Uses a lot of CPU! 33# Uses a lot of CPU!
34transcoding: 34transcoding:
35 enabled: true 35 enabled: false
36 threads: 2 36 threads: 2
diff --git a/config/test-2.yaml b/config/test-2.yaml
index 77b2d6095..c95b9c229 100644
--- a/config/test-2.yaml
+++ b/config/test-2.yaml
@@ -21,3 +21,6 @@ admin:
21 21
22signup: 22signup:
23 enabled: false 23 enabled: false
24
25transcoding:
26 enabled: true
diff --git a/config/test-6.yaml b/config/test-6.yaml
index 169af973a..d74d3b052 100644
--- a/config/test-6.yaml
+++ b/config/test-6.yaml
@@ -18,6 +18,3 @@ storage:
18 18
19admin: 19admin:
20 email: 'admin6@example.com' 20 email: 'admin6@example.com'
21
22transcoding:
23 enabled: true
diff --git a/server/tests/api/index.js b/server/tests/api/index.js
index 7ae18f674..cc86a3d3b 100644
--- a/server/tests/api/index.js
+++ b/server/tests/api/index.js
@@ -11,3 +11,4 @@ require('./video-blacklist')
11require('./multiple-pods') 11require('./multiple-pods')
12require('./requests') 12require('./requests')
13require('./friends-advanced') 13require('./friends-advanced')
14require('./video-transcoder')
diff --git a/server/tests/api/video-transcoder.js b/server/tests/api/video-transcoder.js
new file mode 100644
index 000000000..3ff7b230a
--- /dev/null
+++ b/server/tests/api/video-transcoder.js
@@ -0,0 +1,115 @@
1/* eslint-disable no-unused-expressions */
2
3'use strict'
4
5const chai = require('chai')
6const each = require('async/each')
7const expect = chai.expect
8const series = require('async/series')
9const webtorrent = new (require('webtorrent'))()
10
11const loginUtils = require('../utils/login')
12const serversUtils = require('../utils/servers')
13const videosUtils = require('../utils/videos')
14
15describe('Test video blacklists', function () {
16 let servers = []
17
18 before(function (done) {
19 this.timeout(30000)
20
21 series([
22 // Run servers
23 function (next) {
24 serversUtils.flushAndRunMultipleServers(2, function (serversRun) {
25 servers = serversRun
26 next()
27 })
28 },
29 // Get the access tokens
30 function (next) {
31 each(servers, function (server, callbackEach) {
32 loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
33 if (err) return callbackEach(err)
34
35 server.accessToken = accessToken
36 callbackEach()
37 })
38 }, next)
39 }
40 ], done)
41 })
42
43 it('Should not transcode video on server 1', function (done) {
44 this.timeout(60000)
45
46 const videoAttributes = {
47 name: 'my super name for pod 1',
48 description: 'my super description for pod 1',
49 fixture: 'video_short.webm'
50 }
51 videosUtils.uploadVideo(servers[0].url, servers[0].accessToken, videoAttributes, function (err) {
52 if (err) throw err
53
54 setTimeout(function () {
55 videosUtils.getVideosList(servers[0].url, function (err, res) {
56 if (err) throw err
57
58 const video = res.body.data[0]
59 expect(video.magnetUri).to.match(/\.webm/)
60
61 webtorrent.add(video.magnetUri, function (torrent) {
62 expect(torrent.files).to.exist
63 expect(torrent.files.length).to.equal(1)
64 expect(torrent.files[0].path).match(/\.webm$/)
65
66 done()
67 })
68 })
69 }, 30000)
70 })
71 })
72
73 it('Should transcode video on server 2', function (done) {
74 this.timeout(60000)
75
76 const videoAttributes = {
77 name: 'my super name for pod 2',
78 description: 'my super description for pod 2',
79 fixture: 'video_short.webm'
80 }
81 videosUtils.uploadVideo(servers[1].url, servers[1].accessToken, videoAttributes, function (err) {
82 if (err) throw err
83
84 setTimeout(function () {
85 videosUtils.getVideosList(servers[1].url, function (err, res) {
86 if (err) throw err
87
88 const video = res.body.data[0]
89 expect(video.magnetUri).to.match(/\.mp4/)
90
91 webtorrent.add(video.magnetUri, function (torrent) {
92 expect(torrent.files).to.exist
93 expect(torrent.files.length).to.equal(1)
94 expect(torrent.files[0].path).match(/\.mp4$/)
95
96 done()
97 })
98 })
99 }, 30000)
100 })
101 })
102
103 after(function (done) {
104 servers.forEach(function (server) {
105 process.kill(-server.app.pid)
106 })
107
108 // Keep the logs if the test failed
109 if (this.ok) {
110 serversUtils.flushTests(done)
111 } else {
112 done()
113 }
114 })
115})