]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - scripts/benchmark.ts
Correct privacymsg z-index to avoid hover dropdown on scroll
[github/Chocobozzz/PeerTube.git] / scripts / benchmark.ts
index 69d902b5c1cc7dbb7f6edcfbe5e0d92dbd4924fa..0cadb36d94a5897630783ac8b71bd68905491bdf 100644 (file)
@@ -34,98 +34,118 @@ function buildAuthorizationHeader () {
   }
 }
 
+function buildAPHeader () {
+  return {
+    Accept: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'
+  }
+}
+
 async function run () {
   console.log('Preparing server...')
 
   await prepare()
 
   const tests = [
+    {
+      title: 'AP - account peertube',
+      path: '/accounts/peertube',
+      headers: buildAPHeader(),
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"type":')
+      }
+    },
+    {
+      title: 'AP - video',
+      path: '/videos/watch/' + video.uuid,
+      headers: buildAPHeader(),
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"type":"Video"')
+      }
+    },
+    {
+      title: 'Misc - webfinger peertube',
+      path: '/.well-known/webfinger?resource=acct:peertube@' + server.host,
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"subject":')
+      }
+    },
     {
       title: 'API - unread notifications',
       path: '/api/v1/users/me/notifications?start=0&count=0&unread=true',
       headers: buildAuthorizationHeader(),
-      expecter: (_client, statusCode) => {
-        return statusCode === 200
+      expecter: (_body, status) => {
+        return status === 200
       }
     },
     {
       title: 'API - me',
       path: '/api/v1/users/me',
       headers: buildAuthorizationHeader(),
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"id":')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"id":')
       }
     },
     {
       title: 'API - videos list',
       path: '/api/v1/videos',
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"total":10')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"total":10')
       }
     },
     {
       title: 'API - video get',
       path: '/api/v1/videos/' + video.uuid,
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"id":')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"id":')
       }
     },
     {
       title: 'API - video captions',
       path: '/api/v1/videos/' + video.uuid + '/captions',
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"total":4')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"total":4')
       }
     },
     {
       title: 'API - video threads',
       path: '/api/v1/videos/' + video.uuid + '/comment-threads',
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"total":10')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"total":10')
       }
     },
     {
       title: 'API - video replies',
       path: '/api/v1/videos/' + video.uuid + '/comment-threads/' + threadId,
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"comment":{')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"comment":{')
       }
     },
     {
       title: 'HTML - video watch',
       path: '/videos/watch/' + video.uuid,
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.includes('<title>my super')
+      expecter: (body, status) => {
+        return status === 200 && body.includes('<title>my super')
+      }
+    },
+    {
+      title: 'HTML - video embed',
+      path: '/videos/embed/' + video.uuid,
+      expecter: (body, status) => {
+        return status === 200 && body.includes('embed')
       }
     },
     {
       title: 'HTML - homepage',
       path: '/',
-      expecter: (_client, statusCode) => {
-        return statusCode === 200
+      expecter: (_body, status) => {
+        return status === 200
       }
     },
     {
       title: 'API - config',
       path: '/api/v1/config',
-      expecter: (client, statusCode) => {
-        const body = client.resData[0].body
-
-        return statusCode === 200 && body.startsWith('{"instance":')
+      expecter: (body, status) => {
+        return status === 200 && body.startsWith('{"instance":')
       }
     }
   ]
@@ -153,24 +173,27 @@ function runBenchmark (options: {
   const { path, expecter, headers } = options
 
   return new Promise((res, rej) => {
-    const instance = autocannon({
+    autocannon({
       url: server.url + path,
       connections: 20,
       headers,
       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) => {
       if (err) return rej(err)
 
       return res(result)
     })
-
-    instance.on('response', (client, statusCode) => {
-      if (expecter(client, statusCode) !== true) {
-        console.error('Expected result failed.', { data: client.resData })
-        process.exit(-1)
-      }
-    })
   })
 }