]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/server/open-telemetry.ts
Fix lowest server port
[github/Chocobozzz/PeerTube.git] / server / tests / api / server / open-telemetry.ts
index 20909429fcdf35157f62d90861c658d800682678..fd85fc5141ec39ba1df0ff787e7dca6b4a542114 100644 (file)
@@ -2,21 +2,23 @@
 
 import { expect } from 'chai'
 import { expectLogContain, expectLogDoesNotContain, MockHTTP } from '@server/tests/shared'
-import { HttpStatusCode, VideoPrivacy } from '@shared/models'
+import { HttpStatusCode, VideoPrivacy, VideoResolution } from '@shared/models'
 import { cleanupTests, createSingleServer, makeRawRequest, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands'
 
 describe('Open Telemetry', function () {
   let server: PeerTubeServer
 
   describe('Metrics', function () {
-    const metricsUrl = 'http://localhost:9091/metrics'
+    const metricsUrl = 'http://127.0.0.1:9092/metrics'
 
     it('Should not enable open telemetry metrics', async function () {
+      this.timeout(60000)
+
       server = await createSingleServer(1)
 
       let hasError = false
       try {
-        await makeRawRequest(metricsUrl, HttpStatusCode.NOT_FOUND_404)
+        await makeRawRequest({ url: metricsUrl, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
       } catch (err) {
         hasError = err.message.includes('ECONNREFUSED')
       }
@@ -27,7 +29,9 @@ describe('Open Telemetry', function () {
     })
 
     it('Should enable open telemetry metrics', async function () {
-      server = await createSingleServer(1, {
+      this.timeout(120000)
+
+      await server.run({
         open_telemetry: {
           metrics: {
             enabled: true
@@ -35,9 +39,59 @@ describe('Open Telemetry', function () {
         }
       })
 
-      const res = await makeRawRequest(metricsUrl, HttpStatusCode.OK_200)
-      expect(res.text).to.contain('peertube_job_queue_total')
+      // Simulate a HTTP request
+      await server.videos.list()
+
+      const res = await makeRawRequest({ url: metricsUrl, expectedStatus: HttpStatusCode.OK_200 })
+      expect(res.text).to.contain('peertube_job_queue_total{')
+      expect(res.text).to.contain('http_request_duration_ms_bucket{')
+    })
+
+    it('Should have playback metrics', async function () {
+      await setAccessTokensToServers([ server ])
+
+      const video = await server.videos.quickUpload({ name: 'video' })
+
+      await server.metrics.addPlaybackMetric({
+        metrics: {
+          playerMode: 'p2p-media-loader',
+          resolution: VideoResolution.H_1080P,
+          fps: 30,
+          resolutionChanges: 1,
+          errors: 2,
+          downloadedBytesP2P: 0,
+          downloadedBytesHTTP: 0,
+          uploadedBytesP2P: 5,
+          videoId: video.uuid
+        }
+      })
+
+      const res = await makeRawRequest({ url: metricsUrl, expectedStatus: HttpStatusCode.OK_200 })
+      expect(res.text).to.contain('peertube_playback_http_downloaded_bytes_total{')
+    })
+
+    it('Should disable http request duration metrics', async function () {
+      await server.kill()
 
+      await server.run({
+        open_telemetry: {
+          metrics: {
+            enabled: true,
+            http_request_duration: {
+              enabled: false
+            }
+          }
+        }
+      })
+
+      // Simulate a HTTP request
+      await server.videos.list()
+
+      const res = await makeRawRequest({ url: metricsUrl, expectedStatus: HttpStatusCode.OK_200 })
+      expect(res.text).to.not.contain('http_request_duration_ms_bucket{')
+    })
+
+    after(async function () {
       await server.kill()
     })
   })
@@ -60,12 +114,12 @@ describe('Open Telemetry', function () {
     })
 
     it('Should enable open telemetry metrics', async function () {
-      server = await createSingleServer(1, {
+      await server.run({
         open_telemetry: {
           tracing: {
             enabled: true,
             jaeger_exporter: {
-              endpoint: 'http://localhost:' + mockPort
+              endpoint: 'http://127.0.0.1:' + mockPort
             }
           }
         }