Fix benchmark

pull/3909/head
Chocobozzz 2021-03-30 08:57:17 +02:00
parent 6794d1005f
commit 47099aba46
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 40 additions and 61 deletions

View File

@ -50,126 +50,102 @@ async function run () {
title: 'AP - account peertube', title: 'AP - account peertube',
path: '/accounts/peertube', path: '/accounts/peertube',
headers: buildAPHeader(), headers: buildAPHeader(),
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"type":')
return statusCode === 200 && body.startsWith('{"type":')
} }
}, },
{ {
title: 'AP - video', title: 'AP - video',
path: '/videos/watch/' + video.uuid, path: '/videos/watch/' + video.uuid,
headers: buildAPHeader(), headers: buildAPHeader(),
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"type":"Video"')
return statusCode === 200 && body.startsWith('{"type":"Video"')
} }
}, },
{ {
title: 'Misc - webfinger peertube', title: 'Misc - webfinger peertube',
path: '/.well-known/webfinger?resource=acct:peertube@' + server.host, path: '/.well-known/webfinger?resource=acct:peertube@' + server.host,
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"subject":')
return statusCode === 200 && body.startsWith('{"subject":')
} }
}, },
{ {
title: 'API - unread notifications', title: 'API - unread notifications',
path: '/api/v1/users/me/notifications?start=0&count=0&unread=true', path: '/api/v1/users/me/notifications?start=0&count=0&unread=true',
headers: buildAuthorizationHeader(), headers: buildAuthorizationHeader(),
expecter: (_client, statusCode) => { expecter: (_body, status) => {
return statusCode === 200 return status === 200
} }
}, },
{ {
title: 'API - me', title: 'API - me',
path: '/api/v1/users/me', path: '/api/v1/users/me',
headers: buildAuthorizationHeader(), headers: buildAuthorizationHeader(),
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"id":')
return statusCode === 200 && body.startsWith('{"id":')
} }
}, },
{ {
title: 'API - videos list', title: 'API - videos list',
path: '/api/v1/videos', path: '/api/v1/videos',
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"total":10')
return statusCode === 200 && body.startsWith('{"total":10')
} }
}, },
{ {
title: 'API - video get', title: 'API - video get',
path: '/api/v1/videos/' + video.uuid, path: '/api/v1/videos/' + video.uuid,
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"id":')
return statusCode === 200 && body.startsWith('{"id":')
} }
}, },
{ {
title: 'API - video captions', title: 'API - video captions',
path: '/api/v1/videos/' + video.uuid + '/captions', path: '/api/v1/videos/' + video.uuid + '/captions',
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"total":4')
return statusCode === 200 && body.startsWith('{"total":4')
} }
}, },
{ {
title: 'API - video threads', title: 'API - video threads',
path: '/api/v1/videos/' + video.uuid + '/comment-threads', path: '/api/v1/videos/' + video.uuid + '/comment-threads',
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"total":10')
return statusCode === 200 && body.startsWith('{"total":10')
} }
}, },
{ {
title: 'API - video replies', title: 'API - video replies',
path: '/api/v1/videos/' + video.uuid + '/comment-threads/' + threadId, path: '/api/v1/videos/' + video.uuid + '/comment-threads/' + threadId,
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"comment":{')
return statusCode === 200 && body.startsWith('{"comment":{')
} }
}, },
{ {
title: 'HTML - video watch', title: 'HTML - video watch',
path: '/videos/watch/' + video.uuid, path: '/videos/watch/' + video.uuid,
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.includes('<title>my super')
return statusCode === 200 && body.includes('<title>my super')
} }
}, },
{ {
title: 'HTML - video embed', title: 'HTML - video embed',
path: '/videos/embed/' + video.uuid, path: '/videos/embed/' + video.uuid,
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.includes('embed')
return statusCode === 200 && body.includes('embed')
} }
}, },
{ {
title: 'HTML - homepage', title: 'HTML - homepage',
path: '/', path: '/',
expecter: (_client, statusCode) => { expecter: (_body, status) => {
return statusCode === 200 return status === 200
} }
}, },
{ {
title: 'API - config', title: 'API - config',
path: '/api/v1/config', path: '/api/v1/config',
expecter: (client, statusCode) => { expecter: (body, status) => {
const body = client.resData[0].body return status === 200 && body.startsWith('{"instance":')
return statusCode === 200 && body.startsWith('{"instance":')
} }
} }
] ]
@ -197,24 +173,27 @@ function runBenchmark (options: {
const { path, expecter, headers } = options const { path, expecter, headers } = options
return new Promise((res, rej) => { return new Promise((res, rej) => {
const instance = autocannon({ autocannon({
url: server.url + path, url: server.url + path,
connections: 20, connections: 20,
headers, headers,
pipelining: 1, pipelining: 1,
duration: 10 duration: 10,
requests: [
{
onResponse: (status, body) => {
if (expecter(body, status) !== true) {
console.error('Expected result failed.', { body, status })
throw new Error('Invalid expectation')
}
}
}
]
}, (err, result) => { }, (err, result) => {
if (err) return rej(err) if (err) return rej(err)
return res(result) return res(result)
}) })
instance.on('response', (client, statusCode) => {
if (expecter(client, statusCode) !== true) {
console.error('Expected result failed.', { data: client.resData })
process.exit(-1)
}
})
}) })
} }