diff options
Diffstat (limited to 'packages/tests/src/api/views/videos-views-cleaner.ts')
-rw-r--r-- | packages/tests/src/api/views/videos-views-cleaner.ts | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/packages/tests/src/api/views/videos-views-cleaner.ts b/packages/tests/src/api/views/videos-views-cleaner.ts new file mode 100644 index 000000000..521dd9b5e --- /dev/null +++ b/packages/tests/src/api/views/videos-views-cleaner.ts | |||
@@ -0,0 +1,98 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ | ||
2 | |||
3 | import { expect } from 'chai' | ||
4 | import { SQLCommand } from '@tests/shared/sql-command.js' | ||
5 | import { wait } from '@peertube/peertube-core-utils' | ||
6 | import { | ||
7 | cleanupTests, | ||
8 | createMultipleServers, | ||
9 | doubleFollow, | ||
10 | killallServers, | ||
11 | PeerTubeServer, | ||
12 | setAccessTokensToServers, | ||
13 | waitJobs | ||
14 | } from '@peertube/peertube-server-commands' | ||
15 | |||
16 | describe('Test video views cleaner', function () { | ||
17 | let servers: PeerTubeServer[] | ||
18 | let sqlCommands: SQLCommand[] = [] | ||
19 | |||
20 | let videoIdServer1: string | ||
21 | let videoIdServer2: string | ||
22 | |||
23 | before(async function () { | ||
24 | this.timeout(240000) | ||
25 | |||
26 | servers = await createMultipleServers(2) | ||
27 | await setAccessTokensToServers(servers) | ||
28 | |||
29 | await doubleFollow(servers[0], servers[1]) | ||
30 | |||
31 | videoIdServer1 = (await servers[0].videos.quickUpload({ name: 'video server 1' })).uuid | ||
32 | videoIdServer2 = (await servers[1].videos.quickUpload({ name: 'video server 2' })).uuid | ||
33 | |||
34 | await waitJobs(servers) | ||
35 | |||
36 | await servers[0].views.simulateView({ id: videoIdServer1 }) | ||
37 | await servers[1].views.simulateView({ id: videoIdServer1 }) | ||
38 | await servers[0].views.simulateView({ id: videoIdServer2 }) | ||
39 | await servers[1].views.simulateView({ id: videoIdServer2 }) | ||
40 | |||
41 | await waitJobs(servers) | ||
42 | |||
43 | sqlCommands = servers.map(s => new SQLCommand(s)) | ||
44 | }) | ||
45 | |||
46 | it('Should not clean old video views', async function () { | ||
47 | this.timeout(50000) | ||
48 | |||
49 | await killallServers([ servers[0] ]) | ||
50 | |||
51 | await servers[0].run({ views: { videos: { remote: { max_age: '10 days' } } } }) | ||
52 | |||
53 | await wait(6000) | ||
54 | |||
55 | // Should still have views | ||
56 | |||
57 | for (let i = 0; i < servers.length; i++) { | ||
58 | const total = await sqlCommands[i].countVideoViewsOf(videoIdServer1) | ||
59 | expect(total).to.equal(2, 'Server ' + servers[i].serverNumber + ' does not have the correct amount of views') | ||
60 | } | ||
61 | |||
62 | for (let i = 0; i < servers.length; i++) { | ||
63 | const total = await sqlCommands[i].countVideoViewsOf(videoIdServer2) | ||
64 | expect(total).to.equal(2, 'Server ' + servers[i].serverNumber + ' does not have the correct amount of views') | ||
65 | } | ||
66 | }) | ||
67 | |||
68 | it('Should clean old video views', async function () { | ||
69 | this.timeout(50000) | ||
70 | |||
71 | await killallServers([ servers[0] ]) | ||
72 | |||
73 | await servers[0].run({ views: { videos: { remote: { max_age: '5 seconds' } } } }) | ||
74 | |||
75 | await wait(6000) | ||
76 | |||
77 | // Should still have views | ||
78 | |||
79 | for (let i = 0; i < servers.length; i++) { | ||
80 | const total = await sqlCommands[i].countVideoViewsOf(videoIdServer1) | ||
81 | expect(total).to.equal(2) | ||
82 | } | ||
83 | |||
84 | const totalServer1 = await sqlCommands[0].countVideoViewsOf(videoIdServer2) | ||
85 | expect(totalServer1).to.equal(0) | ||
86 | |||
87 | const totalServer2 = await sqlCommands[1].countVideoViewsOf(videoIdServer2) | ||
88 | expect(totalServer2).to.equal(2) | ||
89 | }) | ||
90 | |||
91 | after(async function () { | ||
92 | for (const sqlCommand of sqlCommands) { | ||
93 | await sqlCommand.cleanup() | ||
94 | } | ||
95 | |||
96 | await cleanupTests(servers) | ||
97 | }) | ||
98 | }) | ||