1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-03 17:59:37 +02:00

Add runner server tests

This commit is contained in:
Chocobozzz 2023-04-21 15:00:01 +02:00 committed by Chocobozzz
parent 2fe978744e
commit d102de1b38
95 changed files with 4215 additions and 648 deletions

View file

@ -5,8 +5,9 @@ import { AbstractCommand, OverrideCommandOptions } from '../shared/abstract-comm
export class ConfigCommand extends AbstractCommand {
static getCustomConfigResolutions (enabled: boolean) {
static getCustomConfigResolutions (enabled: boolean, with0p = false) {
return {
'0p': enabled && with0p,
'144p': enabled,
'240p': enabled,
'360p': enabled,
@ -129,7 +130,8 @@ export class ConfigCommand extends AbstractCommand {
})
}
enableTranscoding (webtorrent = true, hls = true) {
// TODO: convert args to object
enableTranscoding (webtorrent = true, hls = true, with0p = false) {
return this.updateExistingSubConfig({
newConfig: {
transcoding: {
@ -138,7 +140,7 @@ export class ConfigCommand extends AbstractCommand {
allowAudioFiles: true,
allowAdditionalExtensions: true,
resolutions: ConfigCommand.getCustomConfigResolutions(true),
resolutions: ConfigCommand.getCustomConfigResolutions(true, with0p),
webtorrent: {
enabled: webtorrent
@ -151,6 +153,7 @@ export class ConfigCommand extends AbstractCommand {
})
}
// TODO: convert args to object
enableMinimumTranscoding (webtorrent = true, hls = true) {
return this.updateExistingSubConfig({
newConfig: {
@ -173,6 +176,25 @@ export class ConfigCommand extends AbstractCommand {
})
}
enableRemoteTranscoding () {
return this.updateExistingSubConfig({
newConfig: {
transcoding: {
remoteRunners: {
enabled: true
}
},
live: {
transcoding: {
remoteRunners: {
enabled: true
}
}
}
}
})
}
// ---------------------------------------------------------------------------
enableStudio () {
@ -363,6 +385,9 @@ export class ConfigCommand extends AbstractCommand {
},
transcoding: {
enabled: true,
remoteRunners: {
enabled: false
},
allowAdditionalExtensions: true,
allowAudioFiles: true,
threads: 1,
@ -398,6 +423,9 @@ export class ConfigCommand extends AbstractCommand {
maxUserLives: 50,
transcoding: {
enabled: true,
remoteRunners: {
enabled: false
},
threads: 4,
profile: 'default',
resolutions: {

View file

@ -1,16 +1,17 @@
import { expect } from 'chai'
import { wait } from '@shared/core-utils'
import { JobState, JobType } from '../../models'
import { JobState, JobType, RunnerJobState } from '../../models'
import { PeerTubeServer } from './server'
async function waitJobs (
serversArg: PeerTubeServer[] | PeerTubeServer,
options: {
skipDelayed?: boolean // default false
runnerJobs?: boolean // default false
} = {}
) {
const { skipDelayed = false } = options
const { skipDelayed = false, runnerJobs = false } = options
const pendingJobWait = process.env.NODE_PENDING_JOB_WAIT
? parseInt(process.env.NODE_PENDING_JOB_WAIT, 10)
@ -33,7 +34,8 @@ async function waitJobs (
// Check if each server has pending request
for (const server of servers) {
for (const state of states) {
const p = server.jobs.list({
const jobPromise = server.jobs.list({
state,
start: 0,
count: 10,
@ -46,17 +48,29 @@ async function waitJobs (
}
})
tasks.push(p)
tasks.push(jobPromise)
}
const p = server.debug.getDebug()
const debugPromise = server.debug.getDebug()
.then(obj => {
if (obj.activityPubMessagesWaiting !== 0) {
pendingRequests = true
}
})
tasks.push(debugPromise)
if (runnerJobs) {
const runnerJobsPromise = server.runnerJobs.list({ count: 100 })
.then(({ data }) => {
for (const job of data) {
if (job.state.id !== RunnerJobState.COMPLETED) {
pendingRequests = true
}
}
})
tasks.push(runnerJobsPromise)
}
tasks.push(p)
}
return tasks

View file

@ -8,9 +8,9 @@ import { CLICommand } from '../cli'
import { CustomPagesCommand } from '../custom-pages'
import { FeedCommand } from '../feeds'
import { LogsCommand } from '../logs'
import { SQLCommand } from '../miscs'
import { AbusesCommand } from '../moderation'
import { OverviewsCommand } from '../overviews'
import { RunnerJobsCommand, RunnerRegistrationTokensCommand, RunnersCommand } from '../runners'
import { SearchCommand } from '../search'
import { SocketIOCommand } from '../socket'
import {
@ -136,7 +136,6 @@ export class PeerTubeServer {
streamingPlaylists?: StreamingPlaylistsCommand
channels?: ChannelsCommand
comments?: CommentsCommand
sql?: SQLCommand
notifications?: NotificationsCommand
servers?: ServersCommand
login?: LoginCommand
@ -150,6 +149,10 @@ export class PeerTubeServer {
videoToken?: VideoTokenCommand
registrations?: RegistrationsCommand
runners?: RunnersCommand
runnerRegistrationTokens?: RunnerRegistrationTokensCommand
runnerJobs?: RunnerJobsCommand
constructor (options: { serverNumber: number } | { url: string }) {
if ((options as any).url) {
this.setUrl((options as any).url)
@ -311,14 +314,14 @@ export class PeerTubeServer {
})
}
async kill () {
if (!this.app) return
await this.sql.cleanup()
kill () {
if (!this.app) return Promise.resolve()
process.kill(-this.app.pid)
this.app = null
return Promise.resolve()
}
private randomServer () {
@ -420,7 +423,6 @@ export class PeerTubeServer {
this.streamingPlaylists = new StreamingPlaylistsCommand(this)
this.channels = new ChannelsCommand(this)
this.comments = new CommentsCommand(this)
this.sql = new SQLCommand(this)
this.notifications = new NotificationsCommand(this)
this.servers = new ServersCommand(this)
this.login = new LoginCommand(this)
@ -433,5 +435,9 @@ export class PeerTubeServer {
this.twoFactor = new TwoFactorCommand(this)
this.videoToken = new VideoTokenCommand(this)
this.registrations = new RegistrationsCommand(this)
this.runners = new RunnersCommand(this)
this.runnerRegistrationTokens = new RunnerRegistrationTokensCommand(this)
this.runnerJobs = new RunnerJobsCommand(this)
}
}

View file

@ -20,7 +20,7 @@ function createMultipleServers (totalServers: number, configOverride?: object, o
return Promise.all(serverPromises)
}
async function killallServers (servers: PeerTubeServer[]) {
function killallServers (servers: PeerTubeServer[]) {
return Promise.all(servers.map(s => s.kill()))
}