Server: add tests to video transcoder
authorChocobozzz <florian.bigard@gmail.com>
Thu, 4 May 2017 19:51:00 +0000 (21:51 +0200)
committerChocobozzz <florian.bigard@gmail.com>
Thu, 4 May 2017 19:51:00 +0000 (21:51 +0200)
config/default.yaml
config/test-2.yaml
config/test-6.yaml
server/tests/api/index.js
server/tests/api/video-transcoder.js [new file with mode: 0644]

index 27eb2a5336539afdeae1ece1ad00f25f64caceb7..e03bf1aeaa9b6ab25d19e3fe18dc0791747a4b78 100644 (file)
@@ -32,5 +32,5 @@ signup:
 # If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag
 # Uses a lot of CPU!
 transcoding:
-  enabled: true
+  enabled: false
   threads: 2
index 77b2d60951746657e9f7c73d7b240ce46c2c6b1f..c95b9c229440a7acc32db30eba70edc491c965c9 100644 (file)
@@ -21,3 +21,6 @@ admin:
 
 signup:
   enabled: false
+
+transcoding:
+  enabled: true
index 169af973a8b87ef8ae1eb748063d55ba3b25c139..d74d3b05214214de7d7e797fe5fe70c3dcae36ad 100644 (file)
@@ -18,6 +18,3 @@ storage:
 
 admin:
   email: 'admin6@example.com'
-
-transcoding:
-  enabled: true
index 7ae18f674a6c2a161b267c93980dda9b89d9631b..cc86a3d3b84628e8c523f8ae4d03bb35909f1e37 100644 (file)
@@ -11,3 +11,4 @@ require('./video-blacklist')
 require('./multiple-pods')
 require('./requests')
 require('./friends-advanced')
+require('./video-transcoder')
diff --git a/server/tests/api/video-transcoder.js b/server/tests/api/video-transcoder.js
new file mode 100644 (file)
index 0000000..3ff7b23
--- /dev/null
@@ -0,0 +1,115 @@
+/* eslint-disable no-unused-expressions */
+
+'use strict'
+
+const chai = require('chai')
+const each = require('async/each')
+const expect = chai.expect
+const series = require('async/series')
+const webtorrent = new (require('webtorrent'))()
+
+const loginUtils = require('../utils/login')
+const serversUtils = require('../utils/servers')
+const videosUtils = require('../utils/videos')
+
+describe('Test video blacklists', function () {
+  let servers = []
+
+  before(function (done) {
+    this.timeout(30000)
+
+    series([
+      // Run servers
+      function (next) {
+        serversUtils.flushAndRunMultipleServers(2, function (serversRun) {
+          servers = serversRun
+          next()
+        })
+      },
+      // Get the access tokens
+      function (next) {
+        each(servers, function (server, callbackEach) {
+          loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
+            if (err) return callbackEach(err)
+
+            server.accessToken = accessToken
+            callbackEach()
+          })
+        }, next)
+      }
+    ], done)
+  })
+
+  it('Should not transcode video on server 1', function (done) {
+    this.timeout(60000)
+
+    const videoAttributes = {
+      name: 'my super name for pod 1',
+      description: 'my super description for pod 1',
+      fixture: 'video_short.webm'
+    }
+    videosUtils.uploadVideo(servers[0].url, servers[0].accessToken, videoAttributes, function (err) {
+      if (err) throw err
+
+      setTimeout(function () {
+        videosUtils.getVideosList(servers[0].url, function (err, res) {
+          if (err) throw err
+
+          const video = res.body.data[0]
+          expect(video.magnetUri).to.match(/\.webm/)
+
+          webtorrent.add(video.magnetUri, function (torrent) {
+            expect(torrent.files).to.exist
+            expect(torrent.files.length).to.equal(1)
+            expect(torrent.files[0].path).match(/\.webm$/)
+
+            done()
+          })
+        })
+      }, 30000)
+    })
+  })
+
+  it('Should transcode video on server 2', function (done) {
+    this.timeout(60000)
+
+    const videoAttributes = {
+      name: 'my super name for pod 2',
+      description: 'my super description for pod 2',
+      fixture: 'video_short.webm'
+    }
+    videosUtils.uploadVideo(servers[1].url, servers[1].accessToken, videoAttributes, function (err) {
+      if (err) throw err
+
+      setTimeout(function () {
+        videosUtils.getVideosList(servers[1].url, function (err, res) {
+          if (err) throw err
+
+          const video = res.body.data[0]
+          expect(video.magnetUri).to.match(/\.mp4/)
+
+          webtorrent.add(video.magnetUri, function (torrent) {
+            expect(torrent.files).to.exist
+            expect(torrent.files.length).to.equal(1)
+            expect(torrent.files[0].path).match(/\.mp4$/)
+
+            done()
+          })
+        })
+      }, 30000)
+    })
+  })
+
+  after(function (done) {
+    servers.forEach(function (server) {
+      process.kill(-server.app.pid)
+    })
+
+    // Keep the logs if the test failed
+    if (this.ok) {
+      serversUtils.flushTests(done)
+    } else {
+      done()
+    }
+  })
+})