1 import { FfmpegCommand } from 'fluent-ffmpeg'
2 import { wait } from '@shared/core-utils'
3 import { VideoCreateResult, VideoPrivacy } from '@shared/models'
8 setAccessTokensToServers,
9 setDefaultVideoChannel,
11 waitUntilLivePublishedOnAllServers
12 } from '@shared/server-commands'
14 async function processViewersStats (servers: PeerTubeServer[]) {
17 for (const server of servers) {
18 await server.debug.sendCommand({ body: { command: 'process-video-views-buffer' } })
19 await server.debug.sendCommand({ body: { command: 'process-video-viewers' } })
22 await waitJobs(servers)
25 async function processViewsBuffer (servers: PeerTubeServer[]) {
26 for (const server of servers) {
27 await server.debug.sendCommand({ body: { command: 'process-video-views-buffer' } })
30 await waitJobs(servers)
33 async function prepareViewsServers () {
34 const servers = await createMultipleServers(2)
35 await setAccessTokensToServers(servers)
36 await setDefaultVideoChannel(servers)
38 await servers[0].config.updateCustomSubConfig({
50 await doubleFollow(servers[0], servers[1])
55 async function prepareViewsVideos (options: {
56 servers: PeerTubeServer[]
60 const { servers } = options
62 const liveAttributes = {
64 channelId: servers[0].store.channel.id,
65 privacy: VideoPrivacy.PUBLIC
68 let ffmpegCommand: FfmpegCommand
69 let live: VideoCreateResult
70 let vod: VideoCreateResult
73 live = await servers[0].live.create({ fields: liveAttributes })
75 ffmpegCommand = await servers[0].live.sendRTMPStreamInVideo({ videoId: live.uuid })
76 await waitUntilLivePublishedOnAllServers(servers, live.uuid)
80 vod = await servers[0].videos.quickUpload({ name: 'video' })
83 await waitJobs(servers)
85 return { liveVideoId: live?.uuid, vodVideoId: vod?.uuid, ffmpegCommand }