From 6afc0d374cbb7c87c095eaa3235e1e83134c0337 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 18 Mar 2022 14:52:53 +0100 Subject: [PATCH] Add watching and views endpoints to benchmark --- scripts/benchmark.ts | 49 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/scripts/benchmark.ts b/scripts/benchmark.ts index 48e740dff..91e8b865a 100644 --- a/scripts/benchmark.ts +++ b/scripts/benchmark.ts @@ -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 } }