diff --git a/.buildkite/scripts/common/env.sh b/.buildkite/scripts/common/env.sh index 9b9ff5aa2b9e2..20f0de8600b36 100755 --- a/.buildkite/scripts/common/env.sh +++ b/.buildkite/scripts/common/env.sh @@ -95,12 +95,3 @@ fi export BUILD_TS_REFS_DISABLE=true export DISABLE_BOOTSTRAP_VALIDATION=true - -export TEST_KIBANA_HOST=localhost -export TEST_KIBANA_PORT=6101 -export TEST_KIBANA_URL="http://elastic:changeme@localhost:6101" -export TEST_ES_URL="http://elastic:changeme@localhost:6102" -export TEST_ES_TRANSPORT_PORT=6301-6309 -export TEST_CORS_SERVER_PORT=6106 -export ALERTING_PROXY_PORT=6105 -export TEST_PROXY_SERVER_PORT=6107 diff --git a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js index 7ec57b65d6d98..5ef6145698811 100644 --- a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js +++ b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js @@ -69,6 +69,16 @@ const { ES_KEY_PATH, ES_CERT_PATH } = require('@kbn/dev-utils'); }); } + if (url.pathname === '/_cluster/health') { + return send( + 200, + { + status: 'green', + }, + { 'x-elastic-product': 'Elasticsearch' } + ); + } + return send(404, { error: { reason: 'not found', diff --git a/packages/kbn-es/src/utils/native_realm.js b/packages/kbn-es/src/utils/native_realm.js index 62480ba4b537e..52d6ae807777b 100644 --- a/packages/kbn-es/src/utils/native_realm.js +++ b/packages/kbn-es/src/utils/native_realm.js @@ -53,7 +53,18 @@ exports.NativeRealm = class NativeRealm { }); } + async clusterReady() { + return await this._autoRetry({ maxAttempts: 10 }, async () => { + const { status } = await this._client.cluster.health(); + if (status === 'red') { + throw new Error(`not ready, cluster health is ${status}`); + } + }); + } + async setPasswords(options) { + await this.clusterReady(); + if (!(await this.isSecurityEnabled())) { this._log.info('security is not enabled, unable to set native realm passwords'); return; @@ -97,7 +108,7 @@ exports.NativeRealm = class NativeRealm { } async _autoRetry(opts, fn) { - const { attempt = 1, maxAttempts = 3 } = opts; + const { attempt = 1, maxAttempts = 3, sleep = 1000 } = opts; try { return await fn(attempt); @@ -108,7 +119,7 @@ exports.NativeRealm = class NativeRealm { const sec = 1.5 * attempt; this._log.warning(`assuming ES isn't initialized completely, trying again in ${sec} seconds`); - await new Promise((resolve) => setTimeout(resolve, sec * 1000)); + await new Promise((resolve) => setTimeout(resolve, sleep)); const nextOpts = { ...opts, diff --git a/packages/kbn-es/src/utils/native_realm.test.js b/packages/kbn-es/src/utils/native_realm.test.js index 132fe3ba4aee2..a567c15e743af 100644 --- a/packages/kbn-es/src/utils/native_realm.test.js +++ b/packages/kbn-es/src/utils/native_realm.test.js @@ -18,6 +18,9 @@ const mockClient = { xpack: { info: jest.fn(), }, + cluster: { + health: jest.fn(), + }, security: { changePassword: jest.fn(), getUser: jest.fn(), @@ -49,6 +52,12 @@ function mockXPackInfo(available, enabled) { })); } +function mockClusterStatus(status) { + mockClient.cluster.health.mockImplementation(() => { + return status; + }); +} + describe('isSecurityEnabled', () => { test('returns true if enabled and available', async () => { mockXPackInfo(true, true); @@ -95,6 +104,7 @@ describe('isSecurityEnabled', () => { describe('setPasswords', () => { it('uses provided passwords', async () => { mockXPackInfo(true, true); + mockClusterStatus('green'); mockClient.security.getUser.mockImplementation(() => ({ kibana_system: { diff --git a/packages/kbn-test/src/es/es_test_config.ts b/packages/kbn-test/src/es/es_test_config.ts index 70000c8068e9f..7abfe25545cd2 100644 --- a/packages/kbn-test/src/es/es_test_config.ts +++ b/packages/kbn-test/src/es/es_test_config.ts @@ -8,7 +8,7 @@ import { kibanaPackageJson as pkg } from '@kbn/utils'; import Url from 'url'; -import { adminTestUser } from '../kbn'; +import { systemIndicesSuperuser } from '../kbn'; class EsTestConfig { getVersion() { @@ -51,8 +51,8 @@ class EsTestConfig { }; } - const username = process.env.TEST_ES_USERNAME || adminTestUser.username; - const password = process.env.TEST_ES_PASSWORD || adminTestUser.password; + const username = process.env.TEST_ES_USERNAME || systemIndicesSuperuser.username; + const password = process.env.TEST_ES_PASSWORD || systemIndicesSuperuser.password; const port = process.env.TEST_ES_PORT ? parseInt(process.env.TEST_ES_PORT, 10) : 9220; diff --git a/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts b/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts index a32ff72375e8a..5fdd17a4f5d6f 100644 --- a/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts +++ b/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts @@ -48,7 +48,10 @@ const { startES } = kbnTestServer.createTestServers({ settings: { es: { license: 'basic', - dataArchive: Path.join(__dirname, './archives', '7.7.2_xpack_100k_obj.zip'), + dataArchive: Path.resolve( + __dirname, + '../../integration_tests/archives/7.7.2_xpack_100k_obj.zip' + ), esArgs: ['http.max_content_length=10Kb'], }, }, diff --git a/src/core/server/saved_objects/migrations/actions/integration_tests/archives/7.7.2_xpack_100k_obj.zip b/src/core/server/saved_objects/migrations/actions/integration_tests/archives/7.7.2_xpack_100k_obj.zip deleted file mode 100644 index 13afaa04b06f9..0000000000000 Binary files a/src/core/server/saved_objects/migrations/actions/integration_tests/archives/7.7.2_xpack_100k_obj.zip and /dev/null differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_01.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_01.zip index 70966debbaf0e..43965fd584256 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_01.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_01.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_02.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_02.zip index 451c48d8107c8..d4d404e7c1952 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_02.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_5k_so_node_02.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_corrupted_so.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_corrupted_so.zip index 44f2fc9ba19eb..f4a89fbcb2514 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_corrupted_so.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_corrupted_so.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_unknown_so.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_unknown_so.zip index 30ee6ee23dbf3..3312515024b91 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_unknown_so.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.0_with_unknown_so.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.2_so_with_multiple_namespaces.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.2_so_with_multiple_namespaces.zip index e4dce85f15e38..bc305de2d4560 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.2_so_with_multiple_namespaces.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.13.2_so_with_multiple_namespaces.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.14.0_xpack_sample_saved_objects.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.14.0_xpack_sample_saved_objects.zip index 70d68587e3603..7b498c945680c 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.14.0_xpack_sample_saved_objects.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.14.0_xpack_sample_saved_objects.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.3.0_xpack_sample_saved_objects.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.3.0_xpack_sample_saved_objects.zip index 5745a3e07d488..b79a497d06941 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.3.0_xpack_sample_saved_objects.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.3.0_xpack_sample_saved_objects.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7.7.2_xpack_100k_obj.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7.7.2_xpack_100k_obj.zip index 13afaa04b06f9..68d740dd21f69 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7.7.2_xpack_100k_obj.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7.7.2_xpack_100k_obj.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/archives/7_13_corrupt_and_transform_failures_docs.zip b/src/core/server/saved_objects/migrations/integration_tests/archives/7_13_corrupt_and_transform_failures_docs.zip index 30ee6ee23dbf3..b808bdc4f59ce 100644 Binary files a/src/core/server/saved_objects/migrations/integration_tests/archives/7_13_corrupt_and_transform_failures_docs.zip and b/src/core/server/saved_objects/migrations/integration_tests/archives/7_13_corrupt_and_transform_failures_docs.zip differ diff --git a/src/core/server/saved_objects/migrations/integration_tests/batch_size_bytes.test.ts b/src/core/server/saved_objects/migrations/integration_tests/batch_size_bytes.test.ts index 90f8aafa23122..b501461869797 100644 --- a/src/core/server/saved_objects/migrations/integration_tests/batch_size_bytes.test.ts +++ b/src/core/server/saved_objects/migrations/integration_tests/batch_size_bytes.test.ts @@ -51,8 +51,7 @@ async function fetchDocuments(esClient: ElasticsearchClient, index: string) { const assertMigratedDocuments = (arr: any[], target: any[]) => target.every((v) => arr.includes(v)); -// dataArchive not compatible with ES 8.0+ -describe.skip('migration v2', () => { +describe('migration v2', () => { let esServer: kbnTestServer.TestElasticsearchUtils; let root: Root; let startES: () => Promise; diff --git a/src/core/server/saved_objects/migrations/integration_tests/corrupt_outdated_docs.test.ts b/src/core/server/saved_objects/migrations/integration_tests/corrupt_outdated_docs.test.ts index 39676a7ad7f9b..80ac5369c087f 100644 --- a/src/core/server/saved_objects/migrations/integration_tests/corrupt_outdated_docs.test.ts +++ b/src/core/server/saved_objects/migrations/integration_tests/corrupt_outdated_docs.test.ts @@ -40,7 +40,7 @@ describe('migration v2 with corrupt saved object documents', () => { await new Promise((resolve) => setTimeout(resolve, 10000)); }); - it('collects corrupt saved object documents across batches', async () => { + it.skip('collects corrupt saved object documents across batches', async () => { const { startES } = kbnTestServer.createTestServers({ adjustTimeout: (t: number) => jest.setTimeout(t), settings: { diff --git a/src/core/server/saved_objects/migrations/integration_tests/outdated_docs.test.ts b/src/core/server/saved_objects/migrations/integration_tests/outdated_docs.test.ts index 4b73b757cfb15..b40fcda246c3f 100644 --- a/src/core/server/saved_objects/migrations/integration_tests/outdated_docs.test.ts +++ b/src/core/server/saved_objects/migrations/integration_tests/outdated_docs.test.ts @@ -41,7 +41,7 @@ describe('migration v2', () => { await new Promise((resolve) => setTimeout(resolve, 10000)); }); - it('migrates the documents to the highest version', async () => { + it.skip('migrates the documents to the highest version', async () => { const migratedIndex = `.kibana_${pkg.version}_001`; const { startES } = kbnTestServer.createTestServers({ adjustTimeout: (t: number) => jest.setTimeout(t),