diff --git a/packages/kbn-test/src/es/es_test_cluster.js b/packages/kbn-test/src/es/es_test_cluster.js index d969f7d6ec313..20bee8f1f0468 100644 --- a/packages/kbn-test/src/es/es_test_cluster.js +++ b/packages/kbn-test/src/es/es_test_cluster.js @@ -26,6 +26,7 @@ import { esTestConfig } from './es_test_config'; import { rmrfSync } from './rmrf_sync'; import { KIBANA_ROOT } from '../'; import elasticsearch from 'elasticsearch'; +const path = require('path'); export function createEsTestCluster(options = {}) { const { @@ -61,10 +62,17 @@ export function createEsTestCluster(options = {}) { } async start(esArgs = []) { - const { installPath } = - esFrom === 'source' - ? await cluster.installSource(config) - : await cluster.installSnapshot(config); + let installPath; + + if (esFrom === 'source') { + installPath = (await cluster.installSource(config)).installPath; + } else if (esFrom === 'snapshot') { + installPath = (await cluster.installSnapshot(config)).installPath; + } else if (path.isAbsolute(esFrom)) { + installPath = esFrom; + } else { + throw new Error(`unknown option esFrom "${esFrom}"`); + } await cluster.start(installPath, { esArgs: [ diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/args.test.js.snap b/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/args.test.js.snap index 4c022abdf1f01..50da9f6836883 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/args.test.js.snap +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/args.test.js.snap @@ -9,14 +9,14 @@ Usage: node scripts/functional_tests_server [options] [-- --] Options: - --help Display this menu and exit. - --config Pass in a config - --esFrom Build Elasticsearch from source or run from snapshot. Default: snapshot - --kibana-install-dir Run Kibana from existing install directory instead of from source. - --verbose Log everything. - --debug Run in debug mode. - --quiet Only log errors. - --silent Log nothing." + --help Display this menu and exit. + --config Pass in a config + --esFrom Build Elasticsearch from source, snapshot or path to existing install dir. Default: snapshot + --kibana-install-dir Run Kibana from existing install directory instead of from source. + --verbose Log everything. + --debug Run in debug mode. + --quiet Only log errors. + --silent Log nothing." `; exports[`process options for start servers CLI accepts debug option 1`] = ` @@ -26,6 +26,7 @@ Object { ], "createLogger": [Function], "debug": true, + "esFrom": "snapshot", "extraKbnOpts": undefined, } `; @@ -36,6 +37,7 @@ Object { "foo", ], "createLogger": [Function], + "esFrom": "snapshot", "extraKbnOpts": undefined, } `; @@ -49,6 +51,7 @@ Object { "foo", ], "createLogger": [Function], + "esFrom": "snapshot", "extraKbnOpts": Object { "server.foo": "bar", }, @@ -61,6 +64,7 @@ Object { "foo", ], "createLogger": [Function], + "esFrom": "snapshot", "extraKbnOpts": undefined, "quiet": true, } @@ -72,6 +76,7 @@ Object { "foo", ], "createLogger": [Function], + "esFrom": "snapshot", "extraKbnOpts": undefined, "silent": true, } @@ -94,6 +99,7 @@ Object { "foo", ], "createLogger": [Function], + "esFrom": "snapshot", "extraKbnOpts": undefined, "installDir": "foo", } @@ -105,6 +111,7 @@ Object { "foo", ], "createLogger": [Function], + "esFrom": "snapshot", "extraKbnOpts": undefined, "verbose": true, } diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/cli.test.js.snap b/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/cli.test.js.snap index 8aa6f0787f02b..b54bf5dc84dd1 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/cli.test.js.snap +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/__snapshots__/cli.test.js.snap @@ -40,11 +40,4 @@ exports[`start servers CLI options rejects invalid options even if valid options functional_tests_server: invalid option [grep] ...stack trace... " -`; - -exports[`start servers CLI options rejects non-enum value for esFrom 1`] = ` -" -functional_tests_server: invalid argument [butter] to option [esFrom] - ...stack trace... -" -`; +`; \ No newline at end of file diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/args.js b/packages/kbn-test/src/functional_tests/cli/start_servers/args.js index bc3d97ab0641f..5e61e36c21e78 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/args.js +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/args.js @@ -27,9 +27,8 @@ const options = { desc: 'Pass in a config', }, esFrom: { - arg: '', - choices: ['snapshot', 'source'], - desc: 'Build Elasticsearch from source or run from snapshot.', + arg: '', + desc: 'Build Elasticsearch from source, snapshot or path to existing install dir.', default: 'snapshot', }, 'kibana-install-dir': { @@ -54,7 +53,7 @@ export function displayHelp() { }; }) .map(option => { - return `--${option.usage.padEnd(28)} ${option.desc} ${option.default}`; + return `--${option.usage.padEnd(30)} ${option.desc} ${option.default}`; }) .join(`\n `); @@ -80,6 +79,10 @@ export function processOptions(userOptions, defaultConfigPath) { throw new Error(`functional_tests_server: config is required`); } + if (!userOptions.esFrom) { + userOptions.esFrom = 'snapshot'; + } + if (userOptions['kibana-install-dir']) { userOptions.installDir = userOptions['kibana-install-dir']; delete userOptions['kibana-install-dir']; diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js b/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js index b85113b26ab8b..22c06b6ae3231 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js @@ -65,12 +65,6 @@ describe('process options for start servers CLI', () => { expect(options).toMatchSnapshot(); }); - it('rejects non-enum value for esFrom', () => { - expect(() => { - processOptions({ esFrom: 'butter' }, ['foo']); - }).toThrow('functional_tests_server: invalid argument [butter] to option [esFrom]'); - }); - it('accepts debug option', () => { const options = processOptions({ debug: true }, ['foo']); expect(options).toMatchSnapshot(); diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/cli.test.js b/packages/kbn-test/src/functional_tests/cli/start_servers/cli.test.js index f9b5e81ef63a2..43bab5a4afe89 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/cli.test.js +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/cli.test.js @@ -126,15 +126,6 @@ describe('start servers CLI', () => { expect(exitMock).not.toHaveBeenCalled(); }); - it('rejects non-enum value for esFrom', async () => { - global.process.argv.push('--esFrom', 'butter'); - - await startServersCli('foo'); - - expect(exitMock).toHaveBeenCalledWith(1); - checkMockConsoleLogSnapshot(logMock); - }); - it('accepts debug option', async () => { global.process.argv.push('--debug'); diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.js b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.js index d0a3160018fea..9c433ad23e4d1 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.js +++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.js @@ -24,7 +24,7 @@ import { createEsTestCluster } from '../../es'; import { setupUsers, DEFAULT_SUPERUSER_PASS } from './auth'; export async function runElasticsearch({ config, options }) { - const { log, esFrom } = options; + const { log, esFrom, esInstallDir } = options; const isOss = config.get('esTestCluster.license') === 'oss'; const cluster = createEsTestCluster({ @@ -34,6 +34,7 @@ export async function runElasticsearch({ config, options }) { log, basePath: resolve(KIBANA_ROOT, '.es'), esFrom: esFrom || config.get('esTestCluster.from'), + esInstallDir, }); const esArgs = config.get('esTestCluster.serverArgs');