]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/request-schedulers.js
Requests -> RequestSchedulers
[github/Chocobozzz/PeerTube.git] / server / tests / api / request-schedulers.js
CommitLineData
72329aaa
C
1/* eslint-disable no-unused-expressions */
2
d3cd34be
C
3'use strict'
4
5const chai = require('chai')
6const each = require('async/each')
7const expect = chai.expect
8const request = require('supertest')
9
10const loginUtils = require('../utils/login')
11const podsUtils = require('../utils/pods')
12const serversUtils = require('../utils/servers')
13const videosUtils = require('../utils/videos')
14
e636eb88 15describe('Test requests schedulers stats', function () {
b4c5ac97 16 const requestSchedulerNames = [ 'requestScheduler', 'requestVideoQaduScheduler', 'requestVideoEventScheduler' ]
e636eb88 17 const path = '/api/v1/request-schedulers/stats'
d3cd34be
C
18 let servers = []
19
20 function uploadVideo (server, callback) {
b4c5ac97
C
21 const videoAttributes = {
22 tags: [ 'tag1', 'tag2' ]
23 }
d3cd34be 24
b4c5ac97 25 videosUtils.uploadVideo(server.url, server.accessToken, videoAttributes, callback)
d3cd34be
C
26 }
27
28 function getRequestsStats (server, callback) {
29 request(server.url)
30 .get(path)
31 .set('Accept', 'application/json')
32 .set('Authorization', 'Bearer ' + server.accessToken)
33 .expect(200)
34 .end(callback)
35 }
36
37 // ---------------------------------------------------------------
38
39 before(function (done) {
40 this.timeout(20000)
41 serversUtils.flushAndRunMultipleServers(2, function (serversRun, urlsRun) {
42 servers = serversRun
43
44 each(servers, function (server, callbackEach) {
45 loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
46 if (err) return callbackEach(err)
47
48 server.accessToken = accessToken
49 callbackEach()
50 })
51 }, function (err) {
52 if (err) throw err
53
54 const server1 = servers[0]
55 podsUtils.makeFriends(server1.url, server1.accessToken, done)
56 })
57 })
58 })
59
60 it('Should have a correct timer', function (done) {
61 const server = servers[0]
62
63 getRequestsStats(server, function (err, res) {
64 if (err) throw err
65
b4c5ac97
C
66 const requestSchedulers = res.body
67 for (const requestSchedulerName of requestSchedulerNames) {
68 const requestScheduler = requestSchedulers[requestSchedulerName]
69
70 expect(requestScheduler.remainingMilliSeconds).to.be.at.least(0)
71 expect(requestScheduler.remainingMilliSeconds).to.be.at.most(10000)
72 }
d3cd34be
C
73
74 done()
75 })
76 })
77
feb4bdfd 78 it('Should have the correct total request', function (done) {
d3cd34be
C
79 this.timeout(15000)
80
81 const server = servers[0]
82 // Ensure the requests of pod 1 won't be made
83 servers[1].app.kill()
84
85 uploadVideo(server, function (err) {
86 if (err) throw err
87
7920c273
C
88 setTimeout(function () {
89 getRequestsStats(server, function (err, res) {
90 if (err) throw err
d3cd34be 91
b4c5ac97
C
92 const requestSchedulers = res.body
93 const requestScheduler = requestSchedulers.requestScheduler
94 expect(requestScheduler.totalRequests).to.equal(1)
d3cd34be 95
7920c273
C
96 done()
97 })
98 }, 1000)
d3cd34be
C
99 })
100 })
101
d3cd34be
C
102 after(function (done) {
103 process.kill(-servers[0].app.pid)
104
105 if (this.ok) {
106 serversUtils.flushTests(done)
107 } else {
108 done()
109 }
110 })
111})