forked from opensearch-project/OpenSearch-Dashboards
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtasks.js
90 lines (73 loc) · 2.42 KB
/
tasks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import { relative, resolve } from 'path';
import Rx from 'rxjs/Rx';
import { withProcRunner } from '@kbn/dev-utils';
import {
runElasticsearch,
runKibanaServer,
runFtr,
KIBANA_FTR_SCRIPT,
} from './lib';
import { readConfigFile } from '../../../../src/functional_test_runner/lib';
const SUCCESS_MESSAGE = `
Elasticsearch and Kibana are ready for functional testing. Start the functional tests
in another terminal session by running this command from this directory:
node ${relative(process.cwd(), KIBANA_FTR_SCRIPT)}
`;
/**
* Run servers and tests for each config
* @param {string[]} configPaths Array of paths to configs
* @param {boolean} bail Whether to exit test run at the first failure
* @param {Log} log Optional logger
*/
export async function runTests(configPaths, { bail, log }) {
for (const configPath of configPaths) {
await runSingleConfig(resolve(process.cwd(), configPath), { bail, log });
}
}
/**
* Start only servers using single config
* @param {string} configPath Path to a config file
* @param {Log} log Optional logger
*/
export async function startServers(configPath, { log }) {
configPath = resolve(process.cwd(), configPath);
await withProcRunner(log, async procs => {
const config = await readConfigFile(log, configPath);
const es = await runElasticsearch({ config, log });
await runKibanaServer({ procs, config, log });
// wait for 5 seconds of silence before logging the
// success message so that it doesn't get buried
await silence(5000, { log });
log.info(SUCCESS_MESSAGE);
await procs.waitForAllToStop();
await es.cleanup();
});
}
async function silence(milliseconds, { log }) {
await Rx.Observable.fromEvent(log, 'data')
.startWith(null)
.switchMap(() => Rx.Observable.timer(milliseconds))
.take(1)
.toPromise();
}
/*
* Start servers and run tests for single config
*/
async function runSingleConfig(configPath, { bail, log }) {
await withProcRunner(log, async procs => {
const config = await readConfigFile(log, configPath);
const es = await runElasticsearch({ config, log });
await runKibanaServer({ procs, config });
// Note: When solving how to incorporate functional_test_runner
// clean this up
await runFtr({
procs,
configPath,
bail,
log,
cwd: process.cwd(),
});
await procs.stop('kibana');
await es.cleanup();
});
}