X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fserver%2Fstats.ts;h=0e77712cf7781620a44227f5e062c97443f49cce;hb=f2eb23cd87cf32b8fe545178143b5f49e06a58da;hp=aaa6c62f7d2a720ff1b7517228514e5b43038662;hpb=88108880bbdba473cfe36ecbebc1c3c4f972e102;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/server/stats.ts b/server/tests/api/server/stats.ts index aaa6c62f7..0e77712cf 100644 --- a/server/tests/api/server/stats.ts +++ b/server/tests/api/server/stats.ts @@ -1,43 +1,46 @@ -/* tslint:disable:no-unused-expression */ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import * as chai from 'chai' import 'mocha' -import { ServerStats } from '../../../../shared/models/server/server-stats.model' +import * as chai from 'chai' import { + cleanupTests, createUser, doubleFollow, flushAndRunMultipleServers, follow, - killallServers, ServerInfo, + unfollow, + updateCustomSubConfig, uploadVideo, + userLogin, viewVideo, wait -} from '../../../../shared/utils' -import { flushTests, setAccessTokensToServers } from '../../../../shared/utils/index' -import { getStats } from '../../../../shared/utils/server/stats' -import { addVideoCommentThread } from '../../../../shared/utils/videos/video-comments' -import { waitJobs } from '../../../../shared/utils/server/jobs' +} from '../../../../shared/extra-utils' +import { setAccessTokensToServers } from '../../../../shared/extra-utils/index' +import { waitJobs } from '../../../../shared/extra-utils/server/jobs' +import { getStats } from '../../../../shared/extra-utils/server/stats' +import { addVideoCommentThread } from '../../../../shared/extra-utils/videos/video-comments' +import { ServerStats } from '../../../../shared/models/server/server-stats.model' const expect = chai.expect describe('Test stats (excluding redundancy)', function () { let servers: ServerInfo[] = [] + const user = { + username: 'user1', + password: 'super_password' + } before(async function () { this.timeout(60000) - await flushTests() servers = await flushAndRunMultipleServers(3) + await setAccessTokensToServers(servers) await doubleFollow(servers[0], servers[1]) - const user = { - username: 'user1', - password: 'super_password' - } - await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) + await createUser({ url: servers[0].url, accessToken: servers[0].accessToken, username: user.username, password: user.password }) const resVideo = await uploadVideo(servers[0].url, servers[0].accessToken, { fixture: 'video_short.webm' }) const videoUUID = resVideo.body.video.uuid @@ -97,7 +100,83 @@ describe('Test stats (excluding redundancy)', function () { expect(data.totalInstanceFollowers).to.equal(0) }) + it('Should have the correct total videos stats after an unfollow', async function () { + this.timeout(15000) + + await unfollow(servers[2].url, servers[2].accessToken, servers[0]) + await waitJobs(servers) + + const res = await getStats(servers[2].url) + const data: ServerStats = res.body + + expect(data.totalVideos).to.equal(0) + }) + + it('Should have the correct active users stats', async function () { + const server = servers[0] + + { + const res = await getStats(server.url) + const data: ServerStats = res.body + expect(data.totalDailyActiveUsers).to.equal(1) + expect(data.totalWeeklyActiveUsers).to.equal(1) + expect(data.totalMonthlyActiveUsers).to.equal(1) + } + + { + await userLogin(server, user) + + const res = await getStats(server.url) + const data: ServerStats = res.body + expect(data.totalDailyActiveUsers).to.equal(2) + expect(data.totalWeeklyActiveUsers).to.equal(2) + expect(data.totalMonthlyActiveUsers).to.equal(2) + } + }) + + it('Should correctly count video file sizes if transcoding is enabled', async function () { + this.timeout(20000) + + await updateCustomSubConfig(servers[0].url, servers[0].accessToken, { + transcoding: { + enabled: true, + webtorrent: { + enabled: true + }, + hls: { + enabled: true + }, + resolutions: { + '0p': false, + '240p': false, + '360p': false, + '480p': false, + '720p': false, + '1080p': false, + '2160p': false + } + } + }) + + await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video', fixture: 'video_short.webm' }) + + await waitJobs(servers) + + { + const res = await getStats(servers[1].url) + const data: ServerStats = res.body + expect(data.totalLocalVideoFilesSize).to.equal(0) + } + + { + const res = await getStats(servers[0].url) + const data: ServerStats = res.body + expect(data.totalLocalVideoFilesSize).to.be.greaterThan(300000) + expect(data.totalLocalVideoFilesSize).to.be.lessThan(400000) + } + }) + after(async function () { - killallServers(servers) + await cleanupTests(servers) }) })