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 { program } from 'commander'
|
||||||
import { writeJson } from 'fs-extra'
|
import { writeJson } from 'fs-extra'
|
||||||
import { Video, VideoPrivacy } from '@shared/models'
|
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 server: PeerTubeServer
|
||||||
let video: Video
|
let video: Video
|
||||||
let threadId: number
|
let threadId: number
|
||||||
|
@ -21,7 +23,7 @@ const outfile = options.outfile
|
||||||
run()
|
run()
|
||||||
.catch(err => console.error(err))
|
.catch(err => console.error(err))
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
if (server) return killallServers([ server ])
|
if (servers) return killallServers(servers)
|
||||||
})
|
})
|
||||||
|
|
||||||
function buildAuthorizationHeader () {
|
function buildAuthorizationHeader () {
|
||||||
|
@ -36,6 +38,12 @@ function buildAPHeader () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildJSONHeader () {
|
||||||
|
return {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function run () {
|
async function run () {
|
||||||
console.log('Preparing server...')
|
console.log('Preparing server...')
|
||||||
|
|
||||||
|
@ -143,6 +151,27 @@ async function run () {
|
||||||
expecter: (body, status) => {
|
expecter: (body, status) => {
|
||||||
return status === 200 && body.startsWith('{"client":')
|
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 => {
|
].filter(t => {
|
||||||
if (!options.grep) return true
|
if (!options.grep) return true
|
||||||
|
@ -167,14 +196,18 @@ async function run () {
|
||||||
|
|
||||||
function runBenchmark (options: {
|
function runBenchmark (options: {
|
||||||
path: string
|
path: string
|
||||||
|
method?: string
|
||||||
|
body?: string
|
||||||
headers?: { [ id: string ]: string }
|
headers?: { [ id: string ]: string }
|
||||||
expecter: Function
|
expecter: Function
|
||||||
}) {
|
}) {
|
||||||
const { path, expecter, headers } = options
|
const { method, path, body, expecter, headers } = options
|
||||||
|
|
||||||
return new Promise((res, rej) => {
|
return new Promise((res, rej) => {
|
||||||
autocannon({
|
autocannon({
|
||||||
url: server.url + path,
|
url: server.url + path,
|
||||||
|
method,
|
||||||
|
body,
|
||||||
connections: 20,
|
connections: 20,
|
||||||
headers,
|
headers,
|
||||||
pipelining: 1,
|
pipelining: 1,
|
||||||
|
@ -198,14 +231,18 @@ function runBenchmark (options: {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function prepare () {
|
async function prepare () {
|
||||||
server = await createSingleServer(1, {
|
servers = await createMultipleServers(3, {
|
||||||
rates_limit: {
|
rates_limit: {
|
||||||
api: {
|
api: {
|
||||||
max: 5_000_000
|
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 = {
|
const attributes = {
|
||||||
name: 'my super video',
|
name: 'my super video',
|
||||||
|
@ -248,6 +285,4 @@ async function prepare () {
|
||||||
fixture: 'subtitle-good2.vtt'
|
fixture: 'subtitle-good2.vtt'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return { server, video, threadId }
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue