]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Introduce stats command
authorChocobozzz <me@florianbigard.com>
Wed, 7 Jul 2021 09:07:12 +0000 (11:07 +0200)
committerChocobozzz <me@florianbigard.com>
Tue, 20 Jul 2021 13:27:17 +0000 (15:27 +0200)
server/tests/api/redundancy/redundancy.ts
server/tests/api/server/stats.ts
shared/extra-utils/index.ts
shared/extra-utils/server/index.ts
shared/extra-utils/server/servers.ts
shared/extra-utils/server/stats-command.ts [new file with mode: 0644]
shared/extra-utils/server/stats.ts [deleted file]

index 5b970473c054ea1c7b6ed4e195586df67dd405c4..e4ea99de6c2223973218a09f66593446a6613f5e 100644 (file)
@@ -5,7 +5,6 @@ import * as chai from 'chai'
 import { readdir } from 'fs-extra'
 import * as magnetUtil from 'magnet-uri'
 import { join } from 'path'
-import { removeVideoRedundancy } from '@server/lib/redundancy'
 import { HttpStatusCode } from '@shared/core-utils'
 import {
   checkSegmentHash,
@@ -30,15 +29,7 @@ import {
   waitJobs,
   waitUntilLog
 } from '@shared/extra-utils'
-import { getStats } from '@shared/extra-utils/server/stats'
-import {
-  ServerStats,
-  VideoDetails,
-  VideoPrivacy,
-  VideoRedundancy,
-  VideoRedundancyStrategy,
-  VideoRedundancyStrategyWithManual
-} from '@shared/models'
+import { VideoDetails, VideoPrivacy, VideoRedundancyStrategy, VideoRedundancyStrategyWithManual } from '@shared/models'
 
 const expect = chai.expect
 
@@ -241,9 +232,7 @@ async function checkStatsGlobal (strategy: VideoRedundancyStrategyWithManual) {
     statsLength = 2
   }
 
-  const res = await getStats(servers[0].url)
-  const data: ServerStats = res.body
-
+  const data = await servers[0].statsCommand.get()
   expect(data.videosRedundancy).to.have.lengthOf(statsLength)
 
   const stat = data.videosRedundancy[0]
index f609ea7254ff0218086c33e8264a37ee9288041e..36114a2970d88f17542387f439d36478363396c6 100644 (file)
@@ -19,8 +19,7 @@ import {
   wait,
   waitJobs
 } from '@shared/extra-utils'
-import { getStats } from '@shared/extra-utils/server/stats'
-import { ActivityType, ServerStats, VideoPlaylistPrivacy } from '@shared/models'
+import { ActivityType, VideoPlaylistPrivacy } from '@shared/models'
 
 const expect = chai.expect
 
@@ -58,8 +57,7 @@ describe('Test stats (excluding redundancy)', function () {
   })
 
   it('Should have the correct stats on instance 1', async function () {
-    const res = await getStats(servers[0].url)
-    const data: ServerStats = res.body
+    const data = await servers[0].statsCommand.get()
 
     expect(data.totalLocalVideoComments).to.equal(1)
     expect(data.totalLocalVideos).to.equal(1)
@@ -74,8 +72,7 @@ describe('Test stats (excluding redundancy)', function () {
   })
 
   it('Should have the correct stats on instance 2', async function () {
-    const res = await getStats(servers[1].url)
-    const data: ServerStats = res.body
+    const data = await servers[1].statsCommand.get()
 
     expect(data.totalLocalVideoComments).to.equal(0)
     expect(data.totalLocalVideos).to.equal(0)
@@ -90,8 +87,7 @@ describe('Test stats (excluding redundancy)', function () {
   })
 
   it('Should have the correct stats on instance 3', async function () {
-    const res = await getStats(servers[2].url)
-    const data: ServerStats = res.body
+    const data = await servers[2].statsCommand.get()
 
     expect(data.totalLocalVideoComments).to.equal(0)
     expect(data.totalLocalVideos).to.equal(0)
@@ -110,8 +106,7 @@ describe('Test stats (excluding redundancy)', function () {
     await servers[2].followsCommand.unfollow({ target: servers[0] })
     await waitJobs(servers)
 
-    const res = await getStats(servers[2].url)
-    const data: ServerStats = res.body
+    const data = await servers[2].statsCommand.get()
 
     expect(data.totalVideos).to.equal(0)
   })
@@ -120,8 +115,8 @@ describe('Test stats (excluding redundancy)', function () {
     const server = servers[0]
 
     {
-      const res = await getStats(server.url)
-      const data: ServerStats = res.body
+      const data = await server.statsCommand.get()
+
       expect(data.totalDailyActiveUsers).to.equal(1)
       expect(data.totalWeeklyActiveUsers).to.equal(1)
       expect(data.totalMonthlyActiveUsers).to.equal(1)
@@ -130,8 +125,8 @@ describe('Test stats (excluding redundancy)', function () {
     {
       await userLogin(server, user)
 
-      const res = await getStats(server.url)
-      const data: ServerStats = res.body
+      const data = await server.statsCommand.get()
+
       expect(data.totalDailyActiveUsers).to.equal(2)
       expect(data.totalWeeklyActiveUsers).to.equal(2)
       expect(data.totalMonthlyActiveUsers).to.equal(2)
@@ -142,8 +137,8 @@ describe('Test stats (excluding redundancy)', function () {
     const server = servers[0]
 
     {
-      const res = await getStats(server.url)
-      const data: ServerStats = res.body
+      const data = await server.statsCommand.get()
+
       expect(data.totalLocalDailyActiveVideoChannels).to.equal(1)
       expect(data.totalLocalWeeklyActiveVideoChannels).to.equal(1)
       expect(data.totalLocalMonthlyActiveVideoChannels).to.equal(1)
@@ -157,8 +152,8 @@ describe('Test stats (excluding redundancy)', function () {
       const resChannel = await addVideoChannel(server.url, server.accessToken, channelAttributes)
       channelId = resChannel.body.videoChannel.id
 
-      const res = await getStats(server.url)
-      const data: ServerStats = res.body
+      const data = await server.statsCommand.get()
+
       expect(data.totalLocalDailyActiveVideoChannels).to.equal(1)
       expect(data.totalLocalWeeklyActiveVideoChannels).to.equal(1)
       expect(data.totalLocalMonthlyActiveVideoChannels).to.equal(1)
@@ -167,8 +162,8 @@ describe('Test stats (excluding redundancy)', function () {
     {
       await uploadVideo(server.url, server.accessToken, { fixture: 'video_short.webm', channelId })
 
-      const res = await getStats(server.url)
-      const data: ServerStats = res.body
+      const data = await server.statsCommand.get()
+
       expect(data.totalLocalDailyActiveVideoChannels).to.equal(2)
       expect(data.totalLocalWeeklyActiveVideoChannels).to.equal(2)
       expect(data.totalLocalMonthlyActiveVideoChannels).to.equal(2)
@@ -179,9 +174,8 @@ describe('Test stats (excluding redundancy)', function () {
     const server = servers[0]
 
     {
-      const resStats = await getStats(server.url)
-      const dataStats: ServerStats = resStats.body
-      expect(dataStats.totalLocalPlaylists).to.equal(0)
+      const data = await server.statsCommand.get()
+      expect(data.totalLocalPlaylists).to.equal(0)
     }
 
     {
@@ -195,9 +189,8 @@ describe('Test stats (excluding redundancy)', function () {
         }
       })
 
-      const resStats = await getStats(server.url)
-      const dataStats: ServerStats = resStats.body
-      expect(dataStats.totalLocalPlaylists).to.equal(1)
+      const data = await server.statsCommand.get()
+      expect(data.totalLocalPlaylists).to.equal(1)
     }
   })
 
@@ -231,14 +224,12 @@ describe('Test stats (excluding redundancy)', function () {
     await waitJobs(servers)
 
     {
-      const res = await getStats(servers[1].url)
-      const data: ServerStats = res.body
+      const data = await servers[1].statsCommand.get()
       expect(data.totalLocalVideoFilesSize).to.equal(0)
     }
 
     {
-      const res = await getStats(servers[0].url)
-      const data: ServerStats = res.body
+      const data = await servers[0].statsCommand.get()
       expect(data.totalLocalVideoFilesSize).to.be.greaterThan(500000)
       expect(data.totalLocalVideoFilesSize).to.be.lessThan(600000)
     }
@@ -253,8 +244,7 @@ describe('Test stats (excluding redundancy)', function () {
       }
     })
 
-    const res1 = await getStats(servers[1].url)
-    const first = res1.body as ServerStats
+    const first = await servers[1].statsCommand.get()
 
     for (let i = 0; i < 10; i++) {
       await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video' })
@@ -264,10 +254,9 @@ describe('Test stats (excluding redundancy)', function () {
 
     await wait(6000)
 
-    const res2 = await getStats(servers[1].url)
-    const second: ServerStats = res2.body
-
+    const second = await servers[1].statsCommand.get()
     expect(second.totalActivityPubMessagesProcessed).to.be.greaterThan(first.totalActivityPubMessagesProcessed)
+
     const apTypes: ActivityType[] = [
       'Create', 'Update', 'Delete', 'Follow', 'Accept', 'Announce', 'Undo', 'Like', 'Reject', 'View', 'Dislike', 'Flag'
     ]
@@ -287,9 +276,7 @@ describe('Test stats (excluding redundancy)', function () {
 
     await wait(6000)
 
-    const res3 = await getStats(servers[1].url)
-    const third: ServerStats = res3.body
-
+    const third = await servers[1].statsCommand.get()
     expect(third.totalActivityPubMessagesWaiting).to.equal(0)
     expect(third.activityPubMessagesProcessedPerSecond).to.be.lessThan(second.activityPubMessagesProcessedPerSecond)
   })
index cf6418249b76fbbd5b5a91d5f860c92522d12df8..f69d7241e698b60ac9f21f7576b1db7cc5bda391 100644 (file)
@@ -13,10 +13,6 @@ export * from './server'
 export * from './requests/check-api-params'
 export * from './requests/requests'
 
-export * from './server/clients'
-export * from './server/config'
-export * from './server/servers'
-
 export * from './users/accounts'
 export * from './users/blocklist'
 export * from './users/login'
index 3ee70f0cf91f64efc76c525c0efc8bf3026039e6..d37f463216032d170266ef0d157ddec7c84f0dd0 100644 (file)
@@ -1,3 +1,4 @@
+export * from './config'
 export * from './contact-form-command'
 export * from './debug-command'
 export * from './follows-command'
@@ -7,3 +8,5 @@ export * from './jobs-command'
 export * from './plugins-command'
 export * from './plugins'
 export * from './redundancy-command'
+export * from './servers'
+export * from './stats-command'
index eaf39eceaa201bcbe4a0b471dc3ea4e1ef3eb4b0..4603cf62e13c71b47deddc0982bb73b27868e8d3 100644 (file)
@@ -22,6 +22,7 @@ import { FollowsCommand } from './follows-command'
 import { JobsCommand } from './jobs-command'
 import { PluginsCommand } from './plugins-command'
 import { RedundancyCommand } from './redundancy-command'
+import { StatsCommand } from './stats-command'
 
 interface ServerInfo {
   app: ChildProcess
@@ -89,6 +90,7 @@ interface ServerInfo {
   jobsCommand?: JobsCommand
   pluginsCommand?: PluginsCommand
   redundancyCommand?: RedundancyCommand
+  statsCommand?: StatsCommand
 }
 
 function parallelTests () {
@@ -308,6 +310,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
       server.jobsCommand = new JobsCommand(server)
       server.pluginsCommand = new PluginsCommand(server)
       server.redundancyCommand = new RedundancyCommand(server)
+      server.statsCommand = new StatsCommand(server)
 
       res(server)
     })
diff --git a/shared/extra-utils/server/stats-command.ts b/shared/extra-utils/server/stats-command.ts
new file mode 100644 (file)
index 0000000..b51d9ce
--- /dev/null
@@ -0,0 +1,25 @@
+import { ServerStats } from '@shared/models'
+import { HttpStatusCode } from '../../core-utils/miscs/http-error-codes'
+import { AbstractCommand, OverrideCommandOptions } from '../shared'
+
+export class StatsCommand extends AbstractCommand {
+
+  get (options: OverrideCommandOptions & {
+    useCache?: boolean // default false
+  } = {}) {
+    const { useCache = false } = options
+    const path = '/api/v1/server/stats'
+
+    const query = {
+      t: useCache ? undefined : new Date().getTime()
+    }
+
+    return this.getRequestBody<ServerStats>({
+      ...options,
+
+      path,
+      query,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+}
diff --git a/shared/extra-utils/server/stats.ts b/shared/extra-utils/server/stats.ts
deleted file mode 100644 (file)
index b9dae24..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-import { makeGetRequest } from '../requests/requests'
-import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
-
-function getStats (url: string, useCache = false) {
-  const path = '/api/v1/server/stats'
-
-  const query = {
-    t: useCache ? undefined : new Date().getTime()
-  }
-
-  return makeGetRequest({
-    url,
-    path,
-    query,
-    statusCodeExpected: HttpStatusCode.OK_200
-  })
-}
-
-// ---------------------------------------------------------------------------
-
-export {
-  getStats
-}