From a322cdcc69c9ffde45307eda10c6ee27eda12792 Mon Sep 17 00:00:00 2001 From: Tre' Seymour Date: Tue, 2 May 2023 13:22:14 +0100 Subject: [PATCH] [QA] Fixup flaky test Resolves https://github.com/elastic/kibana/issues/136856 Add async keyword where it should have been. Split archive into kbn and es archives...instigated by Pierre's comment: https://github.com/elastic/kibana/issues/136856#issuecomment-1253609280 Note: Had to use both as one archive is "hidden". Unload via Pierre's "new" clean method. --- scripts/archive_migration_functions.sh | 29 ++++++++++++++----- .../hidden_saved_objects/data.json | 21 +------------- .../saved_objects_hidden_type/delete.ts | 23 ++++++++++----- .../saved_objects_hidden_type/export.ts | 24 +++++++++------ .../saved_objects_hidden_type/find.ts | 23 ++++++++++----- .../resolve_import_errors.ts | 23 ++++++++++----- .../saved_objects_management/bulk_get.ts | 23 ++++++++++----- .../saved_objects_management/find.ts | 23 ++++++++++----- .../saved_objects_management/scroll_count.ts | 23 ++++++++++----- .../hidden_saved_objects.json | 11 +++++++ 10 files changed, 138 insertions(+), 85 deletions(-) create mode 100644 x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects.json diff --git a/scripts/archive_migration_functions.sh b/scripts/archive_migration_functions.sh index 36c7f61abdba1..ae51d0cb41b31 100755 --- a/scripts/archive_migration_functions.sh +++ b/scripts/archive_migration_functions.sh @@ -19,12 +19,11 @@ standard_list="url,index-pattern,query,graph-workspace,tag,visualization,canvas-element,canvas-workpad,dashboard,search,lens,map,cases,uptime-dynamic-settings,osquery-saved-query,osquery-pack,infrastructure-ui-source,metrics-explorer-view,inventory-view,infrastructure-monitoring-log-view,apm-indices" -orig_archive="x-pack/test/functional/es_archives/security_solution/timelines/7.15.0_space" -new_archive="x-pack/test/functional/fixtures/kbn_archiver/security_solution/timelines/7.15.0_space" +orig_archive="test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects" +new_archive="x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects" +testFiles=("test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts") -testFiles=("x-pack/test/api_integration/apis/security_solution/timeline_migrations.ts") - -test_config="x-pack/test/api_integration/config.ts" +test_config="test/plugin_functional/config.ts" list_stragglers() { @@ -387,13 +386,27 @@ load_kbn() { local space=${1:-default} local archive=${2:-${new_archive}} + set -x + node scripts/kbn_archiver.js --config "$test_config" load "$archive" --space "$space" + set +x +} + +load_kbn_list() { + local space=${1:-default} + local archive=${2:-${new_archive}} + local newArchives=("${:-${archive}}") + for x in "${newArchives[@]}"; do - set -x - node scripts/kbn_archiver.js --config "$test_config" load "$x" --space "$space" - set +x + load_kbn default "${x}" done } +print_so_types() { + set -x + node scripts/saved_objs_info.js --esUrl http://elastic:changeme@localhost:9220 + set +x +} + load_created_kbn_archive() { set -x node scripts/kbn_archiver.js --config "$test_config" load "$new_archive" diff --git a/test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects/data.json b/test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects/data.json index 4996c050adbf0..cc38a9affdda5 100644 --- a/test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects/data.json +++ b/test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects/data.json @@ -1,22 +1,3 @@ -{ - "type": "doc", - "value": { - "id": "test-hidden-importable-exportable:ff3733a0-9fty-11e7-ahb3-3dcb94193fab", - "index": ".kibana", - "source": { - "coreMigrationVersion": "7.14.0", - "references": [ - ], - "test-hidden-importable-exportable": { - "title": "Hidden Saved object type that is importable/exportable." - }, - "type": "test-hidden-importable-exportable", - "updated_at": "2021-02-11T18:51:23.794Z" - }, - "type": "_doc" - } -} - { "type": "doc", "value": { @@ -34,4 +15,4 @@ }, "type": "_doc" } -} \ No newline at end of file +} diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts index 04fcc29efe612..f05edc6164d7b 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts @@ -12,18 +12,25 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('delete', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); it('should return generic 404 when trying to delete a doc with importableAndExportable types', async () => await supertest diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts index 9d1f370dc73e7..3baa15daa0cf8 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts @@ -16,19 +16,25 @@ function ndjsonToObject(input: string): string[] { export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('export', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); it('exports objects with importableAndExportable types', async () => await supertest .post('/api/saved_objects/_export') diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts index c73edfc106668..084d823deb401 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts @@ -12,18 +12,25 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('find', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); it('returns empty response for importableAndExportable types', async () => await supertest diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts index 26688ddd20046..82e67f4022132 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts @@ -12,18 +12,25 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('export', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); it('resolves objects with importableAndExportable types', async () => { const fileBuffer = Buffer.from( diff --git a/test/plugin_functional/test_suites/saved_objects_management/bulk_get.ts b/test/plugin_functional/test_suites/saved_objects_management/bulk_get.ts index b792df4244e60..ba690a8f11a9b 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/bulk_get.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/bulk_get.ts @@ -13,19 +13,26 @@ import type { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('_bulk_get', () => { describe('saved objects with hidden type', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); const URL = '/api/kibana/management/saved_objects/_bulk_get'; const hiddenTypeExportableImportable = { type: 'test-hidden-importable-exportable', diff --git a/test/plugin_functional/test_suites/saved_objects_management/find.ts b/test/plugin_functional/test_suites/saved_objects_management/find.ts index 6492f7439079b..aabed1ce26e7d 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/find.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/find.ts @@ -12,19 +12,26 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('find', () => { describe('saved objects with hidden type', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); it('returns saved objects with importableAndExportable types', async () => await supertest .get('/api/kibana/management/saved_objects/_find?type=test-hidden-importable-exportable') diff --git a/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts b/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts index 0041344733f0d..af2ad06b48c0d 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts @@ -12,20 +12,27 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const apiUrl = '/api/kibana/management/saved_objects/scroll/counts'; describe('scroll_count', () => { describe('saved objects with hidden type', () => { - before(() => - esArchiver.load( + before(async () => { + await esArchiver.load( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); - after(() => - esArchiver.unload( + ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects' + ); + }); + after(async () => { + await esArchiver.unload( 'test/functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) - ); + ); + await kibanaServer.savedObjects.clean({ + types: ['test-hidden-importable-exportable'], + }); + }); it('only counts hidden types that are importableAndExportable', async () => { const res = await supertest diff --git a/x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects.json b/x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects.json new file mode 100644 index 0000000000000..2755e145b2566 --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_saved_objects.json @@ -0,0 +1,11 @@ +{ + "attributes": { + "title": "Hidden Saved object type that is importable/exportable." + }, + "coreMigrationVersion": "7.14.0", + "id": "ff3733a0-9fty-11e7-ahb3-3dcb94193fab", + "references": [], + "type": "test-hidden-importable-exportable", + "updated_at": "2021-02-11T18:51:23.794Z", + "version": "WzIsMV0=" +}