import 'mocha'
import { VideoDetails } from '../../../../shared/models/videos'
import {
+ checkSegmentHash,
+ checkVideoFilesWereRemoved, cleanupTests,
doubleFollow,
flushAndRunMultipleServers,
getFollowingListPaginationAndSort,
getVideo,
+ getVideoWithToken,
immutableAssign,
- killallServers, makeGetRequest,
+ killallServers,
+ makeGetRequest,
+ removeVideo,
+ reRunServer,
root,
ServerInfo,
- setAccessTokensToServers, unfollow,
+ setAccessTokensToServers,
+ unfollow,
uploadVideo,
viewVideo,
wait,
- waitUntilLog,
- checkVideoFilesWereRemoved, removeVideo, getVideoWithToken, reRunServer, checkSegmentHash
-} from '../../../../shared/utils'
-import { waitJobs } from '../../../../shared/utils/server/jobs'
+ waitUntilLog
+} from '../../../../shared/extra-utils'
+import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import * as magnetUtil from 'magnet-uri'
-import { updateRedundancy } from '../../../../shared/utils/server/redundancy'
+import { updateRedundancy } from '../../../../shared/extra-utils/server/redundancy'
import { ActorFollow } from '../../../../shared/models/actors'
import { readdir } from 'fs-extra'
import { join } from 'path'
import { VideoRedundancyStrategy } from '../../../../shared/models/redundancy'
-import { getStats } from '../../../../shared/utils/server/stats'
+import { getStats } from '../../../../shared/extra-utils/server/stats'
import { ServerStats } from '../../../../shared/models/server/server-stats.model'
const expect = chai.expect
expect(parsed.urlList).to.have.lengthOf(baseWebseeds.length)
}
-async function runServers (strategy: VideoRedundancyStrategy, additionalParams: any = {}) {
+async function flushAndRunServers (strategy: VideoRedundancyStrategy, additionalParams: any = {}) {
const config = {
transcoding: {
hls: {
immutableAssign({
min_lifetime: '1 hour',
strategy: strategy,
- size: '200KB'
+ size: '400KB'
}, additionalParams)
]
}
if (!videoUUID) videoUUID = video1Server2UUID
const webseeds = [
- 'http://localhost:9002/static/webseed/' + videoUUID
+ `http://localhost:${servers[ 1 ].port}/static/webseed/${videoUUID}`
]
for (const server of servers) {
if (!videoUUID) videoUUID = video1Server2UUID
const webseeds = [
- 'http://localhost:9001/static/redundancy/' + videoUUID,
- 'http://localhost:9002/static/webseed/' + videoUUID
+ `http://localhost:${servers[ 0 ].port}/static/redundancy/${videoUUID}`,
+ `http://localhost:${servers[ 1 ].port}/static/webseed/${videoUUID}`
]
for (const server of servers) {
}
}
- for (const directory of [ 'test1/redundancy', 'test2/videos' ]) {
+ const directories = [
+ 'test' + servers[0].internalServerNumber + '/redundancy',
+ 'test' + servers[1].internalServerNumber + '/videos'
+ ]
+
+ for (const directory of directories) {
const files = await readdir(join(root(), directory))
expect(files).to.have.length.at.least(4)
expect(redundancy.baseUrl).to.equal(servers[0].url + '/static/redundancy/hls/' + videoUUID)
}
- const baseUrlPlaylist = servers[1].url + '/static/playlists/hls'
+ const baseUrlPlaylist = servers[1].url + '/static/streaming-playlists/hls'
const baseUrlSegment = servers[0].url + '/static/redundancy/hls'
const res = await getVideo(servers[0].url, videoUUID)
await checkSegmentHash(baseUrlPlaylist, baseUrlSegment, videoUUID, resolution, hlsPlaylist)
}
- for (const directory of [ 'test1/redundancy/hls', 'test2/playlists/hls' ]) {
+ const directories = [
+ 'test' + servers[0].internalServerNumber + '/redundancy/hls',
+ 'test' + servers[1].internalServerNumber + '/streaming-playlists/hls'
+ ]
+
+ for (const directory of directories) {
const files = await readdir(join(root(), directory, videoUUID))
expect(files).to.have.length.at.least(4)
const stat = data.videosRedundancy[0]
expect(stat.strategy).to.equal(strategy)
- expect(stat.totalSize).to.equal(204800)
- expect(stat.totalUsed).to.be.at.least(1).and.below(204801)
+ expect(stat.totalSize).to.equal(409600)
+ expect(stat.totalUsed).to.be.at.least(1).and.below(409601)
expect(stat.totalVideoFiles).to.equal(4)
expect(stat.totalVideos).to.equal(1)
}
const stat = data.videosRedundancy[0]
expect(stat.strategy).to.equal(strategy)
- expect(stat.totalSize).to.equal(204800)
+ expect(stat.totalSize).to.equal(409600)
expect(stat.totalUsed).to.equal(0)
expect(stat.totalVideoFiles).to.equal(0)
expect(stat.totalVideos).to.equal(0)
async function enableRedundancyOnServer1 () {
await updateRedundancy(servers[ 0 ].url, servers[ 0 ].accessToken, servers[ 1 ].host, true)
- const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 5, '-createdAt')
+ const res = await getFollowingListPaginationAndSort({ url: servers[ 0 ].url, start: 0, count: 5, sort: '-createdAt' })
const follows: ActorFollow[] = res.body.data
- const server2 = follows.find(f => f.following.host === 'localhost:9002')
- const server3 = follows.find(f => f.following.host === 'localhost:9003')
+ const server2 = follows.find(f => f.following.host === `localhost:${servers[ 1 ].port}`)
+ const server3 = follows.find(f => f.following.host === `localhost:${servers[ 2 ].port}`)
expect(server3).to.not.be.undefined
expect(server3.following.hostRedundancyAllowed).to.be.false
async function disableRedundancyOnServer1 () {
await updateRedundancy(servers[ 0 ].url, servers[ 0 ].accessToken, servers[ 1 ].host, false)
- const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 5, '-createdAt')
+ const res = await getFollowingListPaginationAndSort({ url: servers[ 0 ].url, start: 0, count: 5, sort: '-createdAt' })
const follows: ActorFollow[] = res.body.data
- const server2 = follows.find(f => f.following.host === 'localhost:9002')
- const server3 = follows.find(f => f.following.host === 'localhost:9003')
+ const server2 = follows.find(f => f.following.host === `localhost:${servers[ 1 ].port}`)
+ const server3 = follows.find(f => f.following.host === `localhost:${servers[ 2 ].port}`)
expect(server3).to.not.be.undefined
expect(server3.following.hostRedundancyAllowed).to.be.false
expect(server2.following.hostRedundancyAllowed).to.be.false
}
-async function cleanServers () {
- killallServers(servers)
-}
-
describe('Test videos redundancy', function () {
describe('With most-views strategy', function () {
before(function () {
this.timeout(120000)
- return runServers(strategy)
+ return flushAndRunServers(strategy)
})
it('Should have 1 webseed on the first video', async function () {
await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos', join('playlists', 'hls') ])
})
- after(function () {
- return cleanServers()
+ after(async function () {
+ return cleanupTests(servers)
})
})
before(function () {
this.timeout(120000)
- return runServers(strategy)
+ return flushAndRunServers(strategy)
})
it('Should have 1 webseed on the first video', async function () {
await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ])
})
- after(function () {
- return cleanServers()
+ after(async function () {
+ await cleanupTests(servers)
})
})
before(function () {
this.timeout(120000)
- return runServers(strategy, { min_views: 3 })
+ return flushAndRunServers(strategy, { min_views: 3 })
})
it('Should have 1 webseed on the first video', async function () {
}
})
- after(function () {
- return cleanServers()
+ after(async function () {
+ await cleanupTests(servers)
})
})
before(async function () {
this.timeout(120000)
- await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
+ await flushAndRunServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await enableRedundancyOnServer1()
})
await wait(10000)
try {
- await checkContains(servers, 'http%3A%2F%2Flocalhost%3A9001')
+ await checkContains(servers, 'http%3A%2F%2Flocalhost%3A' + servers[0].port)
} catch {
// Maybe a server deleted a redundancy in the scheduler
await wait(2000)
- await checkContains(servers, 'http%3A%2F%2Flocalhost%3A9001')
+ await checkContains(servers, 'http%3A%2F%2Flocalhost%3A' + servers[0].port)
}
})
await wait(15000)
- await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001')
+ await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A' + servers[0].port)
})
- after(function () {
- return killallServers([ servers[1], servers[2] ])
+ after(async function () {
+ await cleanupTests(servers)
})
})
before(async function () {
this.timeout(120000)
- await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
+ await flushAndRunServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await enableRedundancyOnServer1()
await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ join('redundancy', 'hls') ])
})
- after(function () {
- return cleanServers()
+ after(async function () {
+ await cleanupTests(servers)
})
})
})