]>
Commit | Line | Data |
---|---|---|
254d3579 | 1 | import { ensureDir } from 'fs-extra' |
c55e3d72 | 2 | import { isGithubCI } from '@shared/core-utils' |
254d3579 | 3 | import { PeerTubeServer, RunServerOptions } from './server' |
89231874 | 4 | |
e65ef81c | 5 | async function createSingleServer (serverNumber: number, configOverride?: object, options: RunServerOptions = {}) { |
254d3579 | 6 | const server = new PeerTubeServer({ serverNumber }) |
0e1dc3e7 | 7 | |
2e980ed3 | 8 | await server.flushAndRun(configOverride, options) |
af4ae64f | 9 | |
254d3579 | 10 | return server |
913b1d71 C |
11 | } |
12 | ||
e65ef81c | 13 | function createMultipleServers (totalServers: number, configOverride?: object, options: RunServerOptions = {}) { |
254d3579 | 14 | const serverPromises: Promise<PeerTubeServer>[] = [] |
86ebdf8c | 15 | |
254d3579 | 16 | for (let i = 1; i <= totalServers; i++) { |
0305db28 | 17 | serverPromises.push(createSingleServer(i, configOverride, options)) |
0e1dc3e7 C |
18 | } |
19 | ||
254d3579 | 20 | return Promise.all(serverPromises) |
7bc29171 C |
21 | } |
22 | ||
254d3579 C |
23 | async function killallServers (servers: PeerTubeServer[]) { |
24 | return Promise.all(servers.map(s => s.kill())) | |
0e1dc3e7 C |
25 | } |
26 | ||
254d3579 | 27 | async function cleanupTests (servers: PeerTubeServer[]) { |
9293139f | 28 | await killallServers(servers) |
86ebdf8c | 29 | |
83ef31fe C |
30 | if (isGithubCI()) { |
31 | await ensureDir('artifacts') | |
32 | } | |
33 | ||
6c5065a0 | 34 | let p: Promise<any>[] = [] |
86ebdf8c | 35 | for (const server of servers) { |
89d241a7 | 36 | p = p.concat(server.servers.cleanupTests()) |
86ebdf8c C |
37 | } |
38 | ||
39 | return Promise.all(p) | |
40 | } | |
41 | ||
2a491182 F |
42 | function getServerImportConfig (mode: 'youtube-dl' | 'yt-dlp') { |
43 | return { | |
44 | import: { | |
45 | videos: { | |
46 | http: { | |
47 | youtube_dl_release: { | |
48 | url: mode === 'youtube-dl' | |
49 | ? 'https://yt-dl.org/downloads/latest/youtube-dl' | |
50 | : 'https://api.github.com/repos/yt-dlp/yt-dlp/releases', | |
51 | ||
52 | name: mode | |
53 | } | |
54 | } | |
55 | } | |
56 | } | |
57 | } | |
58 | } | |
59 | ||
0e1dc3e7 C |
60 | // --------------------------------------------------------------------------- |
61 | ||
62 | export { | |
254d3579 C |
63 | createSingleServer, |
64 | createMultipleServers, | |
86ebdf8c | 65 | cleanupTests, |
2a491182 F |
66 | killallServers, |
67 | getServerImportConfig | |
0e1dc3e7 | 68 | } |