mirror of https://github.com/Chocobozzz/PeerTube
Add watching and views endpoints to benchmark
parent
cc92203fe5
commit
6afc0d374c
|
@ -2,8 +2,10 @@ import autocannon, { printResult } from 'autocannon'
|
|||
import { program } from 'commander'
|
||||
import { writeJson } from 'fs-extra'
|
||||
import { Video, VideoPrivacy } from '@shared/models'
|
||||
import { createSingleServer, killallServers, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands'
|
||||
import { createMultipleServers, doubleFollow, killallServers, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands'
|
||||
|
||||
let servers: PeerTubeServer[]
|
||||
// First server
|
||||
let server: PeerTubeServer
|
||||
let video: Video
|
||||
let threadId: number
|
||||
|
@ -21,7 +23,7 @@ const outfile = options.outfile
|
|||
run()
|
||||
.catch(err => console.error(err))
|
||||
.finally(() => {
|
||||
if (server) return killallServers([ server ])
|
||||
if (servers) return killallServers(servers)
|
||||
})
|
||||
|
||||
function buildAuthorizationHeader () {
|
||||
|
@ -36,6 +38,12 @@ function buildAPHeader () {
|
|||
}
|
||||
}
|
||||
|
||||
function buildJSONHeader () {
|
||||
return {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
}
|
||||
|
||||
async function run () {
|
||||
console.log('Preparing server...')
|
||||
|
||||
|
@ -143,6 +151,27 @@ async function run () {
|
|||
expecter: (body, status) => {
|
||||
return status === 200 && body.startsWith('{"client":')
|
||||
}
|
||||
},
|
||||
{
|
||||
title: 'API - watching',
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
...buildAuthorizationHeader(),
|
||||
...buildJSONHeader()
|
||||
},
|
||||
body: JSON.stringify({ currentTime: 2 }),
|
||||
path: '/api/v1/videos/' + video.uuid + '/watching',
|
||||
expecter: (body, status) => {
|
||||
return status === 204
|
||||
}
|
||||
},
|
||||
{
|
||||
title: 'API - views',
|
||||
method: 'POST',
|
||||
path: '/api/v1/videos/' + video.uuid + '/views',
|
||||
expecter: (body, status) => {
|
||||
return status === 204
|
||||
}
|
||||
}
|
||||
].filter(t => {
|
||||
if (!options.grep) return true
|
||||
|
@ -167,14 +196,18 @@ async function run () {
|
|||
|
||||
function runBenchmark (options: {
|
||||
path: string
|
||||
method?: string
|
||||
body?: string
|
||||
headers?: { [ id: string ]: string }
|
||||
expecter: Function
|
||||
}) {
|
||||
const { path, expecter, headers } = options
|
||||
const { method, path, body, expecter, headers } = options
|
||||
|
||||
return new Promise((res, rej) => {
|
||||
autocannon({
|
||||
url: server.url + path,
|
||||
method,
|
||||
body,
|
||||
connections: 20,
|
||||
headers,
|
||||
pipelining: 1,
|
||||
|
@ -198,14 +231,18 @@ function runBenchmark (options: {
|
|||
}
|
||||
|
||||
async function prepare () {
|
||||
server = await createSingleServer(1, {
|
||||
servers = await createMultipleServers(3, {
|
||||
rates_limit: {
|
||||
api: {
|
||||
max: 5_000_000
|
||||
}
|
||||
}
|
||||
})
|
||||
await setAccessTokensToServers([ server ])
|
||||
server = servers[0]
|
||||
|
||||
await setAccessTokensToServers(servers)
|
||||
await doubleFollow(servers[0], servers[1])
|
||||
await doubleFollow(servers[0], servers[2])
|
||||
|
||||
const attributes = {
|
||||
name: 'my super video',
|
||||
|
@ -248,6 +285,4 @@ async function prepare () {
|
|||
fixture: 'subtitle-good2.vtt'
|
||||
})
|
||||
}
|
||||
|
||||
return { server, video, threadId }
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue