/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-import * as chai from 'chai'
-import 'mocha'
+import { expect } from 'chai'
+import { VideoPrivacy } from '@shared/models'
import {
cleanupTests,
- flushAndRunServer,
- follow,
+ createSingleServer,
killallServers,
- reRunServer,
- ServerInfo,
+ PeerTubeServer,
setAccessTokensToServers,
- uploadVideo,
- waitUntilLog
-} from '../../../../shared/extra-utils'
-import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
-import { listVideoRedundancies, updateRedundancy } from '@shared/extra-utils/server/redundancy'
-
-const expect = chai.expect
+ waitJobs
+} from '@shared/server-commands'
describe('Test redundancy constraints', function () {
- let remoteServer: ServerInfo
- let localServer: ServerInfo
- let servers: ServerInfo[]
+ let remoteServer: PeerTubeServer
+ let localServer: PeerTubeServer
+ let servers: PeerTubeServer[]
+
+ const remoteServerConfig = {
+ redundancy: {
+ videos: {
+ check_interval: '1 second',
+ strategies: [
+ {
+ strategy: 'recently-added',
+ min_lifetime: '1 hour',
+ size: '100MB',
+ min_views: 0
+ }
+ ]
+ }
+ }
+ }
+
+ async function uploadWrapper (videoName: string) {
+ // Wait for transcoding
+ const { id } = await localServer.videos.upload({ attributes: { name: 'to transcode', privacy: VideoPrivacy.PRIVATE } })
+ await waitJobs([ localServer ])
+
+ // Update video to schedule a federation
+ await localServer.videos.update({ id, attributes: { name: videoName, privacy: VideoPrivacy.PUBLIC } })
+ }
async function getTotalRedundanciesLocalServer () {
- const res = await listVideoRedundancies({
- url: localServer.url,
- accessToken: localServer.accessToken,
- target: 'my-videos'
- })
+ const body = await localServer.redundancy.listVideos({ target: 'my-videos' })
- return res.body.total
+ return body.total
}
async function getTotalRedundanciesRemoteServer () {
- const res = await listVideoRedundancies({
- url: remoteServer.url,
- accessToken: remoteServer.accessToken,
- target: 'remote-videos'
- })
+ const body = await remoteServer.redundancy.listVideos({ target: 'remote-videos' })
- return res.body.total
+ return body.total
}
before(async function () {
this.timeout(120000)
{
- const config = {
- redundancy: {
- videos: {
- check_interval: '1 second',
- strategies: [
- {
- strategy: 'recently-added',
- min_lifetime: '1 hour',
- size: '100MB',
- min_views: 0
- }
- ]
- }
- }
- }
- remoteServer = await flushAndRunServer(1, config)
+ remoteServer = await createSingleServer(1, remoteServerConfig)
}
{
}
}
}
- localServer = await flushAndRunServer(2, config)
+ localServer = await createSingleServer(2, config)
}
servers = [ remoteServer, localServer ]
// Get the access tokens
await setAccessTokensToServers(servers)
- await uploadVideo(localServer.url, localServer.accessToken, { name: 'video 1 server 2' })
+ await localServer.videos.upload({ attributes: { name: 'video 1 server 2' } })
await waitJobs(servers)
// Server 1 and server 2 follow each other
- await follow(remoteServer.url, [ localServer.url ], remoteServer.accessToken)
+ await remoteServer.follows.follow({ hosts: [ localServer.url ] })
await waitJobs(servers)
- await updateRedundancy(remoteServer.url, remoteServer.accessToken, localServer.host, true)
+ await remoteServer.redundancy.updateRedundancy({ host: localServer.host, redundancyAllowed: true })
await waitJobs(servers)
})
this.timeout(120000)
await waitJobs(servers)
- await waitUntilLog(remoteServer, 'Duplicated ', 5)
+ await remoteServer.servers.waitUntilLog('Duplicated ', 5)
await waitJobs(servers)
{
}
}
await killallServers([ localServer ])
- await reRunServer(localServer, config)
+ await localServer.run(config)
- await uploadVideo(localServer.url, localServer.accessToken, { name: 'video 2 server 2' })
+ await uploadWrapper('video 2 server 2')
- await waitJobs(servers)
- await waitUntilLog(remoteServer, 'Duplicated ', 10)
+ await remoteServer.servers.waitUntilLog('Duplicated ', 10)
await waitJobs(servers)
{
}
}
await killallServers([ localServer ])
- await reRunServer(localServer, config)
+ await localServer.run(config)
- await uploadVideo(localServer.url, localServer.accessToken, { name: 'video 3 server 2' })
+ await uploadWrapper('video 3 server 2')
- await waitJobs(servers)
- await waitUntilLog(remoteServer, 'Duplicated ', 15)
+ await remoteServer.servers.waitUntilLog('Duplicated ', 15)
await waitJobs(servers)
{
it('Should have redundancy on server 1 and on server 2 with followings filter now server 2 follows server 1', async function () {
this.timeout(120000)
- await follow(localServer.url, [ remoteServer.url ], localServer.accessToken)
+ await localServer.follows.follow({ hosts: [ remoteServer.url ] })
await waitJobs(servers)
- await uploadVideo(localServer.url, localServer.accessToken, { name: 'video 4 server 2' })
-
- await waitJobs(servers)
- await waitUntilLog(remoteServer, 'Duplicated ', 20)
+ await uploadWrapper('video 4 server 2')
+ await remoteServer.servers.waitUntilLog('Duplicated ', 20)
await waitJobs(servers)
{