aboutsummaryrefslogblamecommitdiffhomepage
path: root/server/tests/api/request-schedulers.ts
blob: c136d1cea9531cfa709af86c89ee8f0a84738178 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13

                                         










                            


                             



                                                                                                                 









                                                                       







































                                                                         
                                                      


                           

                                       





                        
/* tslint:disable:no-unused-expression */

import 'mocha'
import * as chai from 'chai'
const expect = chai.expect

import {
  ServerInfo,
  flushTests,
  uploadVideo,
  makeFriends,
  wait,
  setAccessTokensToServers,
  flushAndRunMultipleServers,
  getRequestsStats,
  killallServers
} from '../utils'

describe('Test requests schedulers stats', function () {
  const requestSchedulerNames = [ 'requestScheduler', 'requestVideoQaduScheduler', 'requestVideoEventScheduler' ]
  let servers: ServerInfo[] = []

  function uploadVideoWrapper (server: ServerInfo) {
    const videoAttributes = {
      tags: [ 'tag1', 'tag2' ]
    }

    return uploadVideo(server.url, server.accessToken, videoAttributes)
  }

  // ---------------------------------------------------------------

  before(async function () {
    this.timeout(120000)

    servers = await flushAndRunMultipleServers(2)

    await setAccessTokensToServers(servers)

    await makeFriends(servers[0].url, servers[0].accessToken)
  })

  it('Should have a correct timer', async function () {
    const server = servers[0]

    const res = await getRequestsStats(server)

    const requestSchedulers = res.body
    for (const requestSchedulerName of requestSchedulerNames) {
      const requestScheduler = requestSchedulers[requestSchedulerName]

      expect(requestScheduler.remainingMilliSeconds).to.be.at.least(0)
      expect(requestScheduler.remainingMilliSeconds).to.be.at.most(10000)
    }
  })

  it('Should have the correct total request', async function () {
    this.timeout(15000)

    const server = servers[0]
    // Ensure the requests of pod 1 won't be made
    servers[1].app.kill()

    await uploadVideoWrapper(server)

    await wait(1000)

    const res = await getRequestsStats(server)
    const requestSchedulers = res.body
    const requestScheduler = requestSchedulers.requestScheduler
    expect(requestScheduler.totalRequests).to.equal(3)
  })

  after(async function () {
    // Server 1 has already been killed
    killallServers([ servers[0] ])

    if (this['ok']) {
      await flushTests()
    }
  })
})