From 90f0ae2966016e0a010caedc9c83d02947d4f4f0 Mon Sep 17 00:00:00 2001 From: Kevin Lacabane Date: Thu, 17 Nov 2022 11:25:24 +0100 Subject: [PATCH] [Stack Monitoring] api tests for kibana (#145230) ## Summary Part of https://github.com/elastic/kibana/issues/119658 Add api integration tests for kibana routes to validate behavior when reading data ingested by elastic-agent. We currently have a testing suite for legacy and another one for metricbeat. Since metricbeat and agent documents only differ in their metadata, for example agent will populate a `data_stream.*` property to identify the document types while metricbeat uses `metricset.*`, the tests assertion validating _business_ data should pass regardless of the documents source. With this in mind the metricbeat tests were updated to run the tests twice, one time with metricbeat data and a second time with package data. To generate the archives the `metrics-*` mappings were extracted with esArchiver from an elasticsearch with the package installed, and the documents were transformed from the metricbeat documents with [this script](https://gist.github.com/klacabane/654497ff86053c60af6df15fa6f6f657). Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../apis/monitoring/kibana/instance_mb.js | 51 +- .../apis/monitoring/kibana/listing_mb.js | 63 +- .../apis/monitoring/kibana/overview_mb.js | 47 +- .../kibana/rules_and_actions/instance.js | 46 +- .../kibana/rules_and_actions/overview.js | 42 +- .../rules_and_actions_package/data.json.gz | Bin 0 -> 23361 bytes .../rules_and_actions_package/mappings.json | 7138 +++++++++++++++++ .../data.json.gz | Bin 0 -> 26642 bytes .../mappings.json | 7138 +++++++++++++++++ 9 files changed, 14409 insertions(+), 116 deletions(-) create mode 100644 x-pack/test/functional/es_archives/monitoring/kibana/rules_and_actions_package/data.json.gz create mode 100644 x-pack/test/functional/es_archives/monitoring/kibana/rules_and_actions_package/mappings.json create mode 100644 x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_package/data.json.gz create mode 100644 x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_package/mappings.json diff --git a/x-pack/test/api_integration/apis/monitoring/kibana/instance_mb.js b/x-pack/test/api_integration/apis/monitoring/kibana/instance_mb.js index 4aaa71101f43c3..ca7281d9c1eb1b 100644 --- a/x-pack/test/api_integration/apis/monitoring/kibana/instance_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/kibana/instance_mb.js @@ -15,34 +15,37 @@ export default function ({ getService }) { const supertest = getService('supertest'); const { setup, tearDown } = getLifecycleMethods(getService); - describe('instance detail mb', () => { - const archive = - 'x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_mb'; - const timeRange = { - min: '2017-08-29T17:24:17.000Z', - max: '2017-08-29T17:26:08.000Z', - }; + describe('instance detail - metricbeat and package', () => { + ['mb', 'package'].forEach((source) => { + describe(`instance detail ${source}`, () => { + const archive = `x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_${source}`; + const timeRange = { + min: '2017-08-29T17:24:17.000Z', + max: '2017-08-29T17:26:08.000Z', + }; - before('load archive', () => { - return setup(archive); - }); + before('load archive', () => { + return setup(archive); + }); - after('unload archive', () => { - return tearDown(); - }); + after('unload archive', () => { + return tearDown(archive); + }); - it('should summarize single kibana instance with metrics', async () => { - const { body } = await supertest - .post( - '/api/monitoring/v1/clusters/DFDDUmKHR0Ge0mkdYW2bew/kibana/de3b8f2a-7bb9-4931-9bf3-997ba7824cf9' - ) - .set('kbn-xsrf', 'xxx') - .send({ timeRange }) - .expect(200); + it('should summarize single kibana instance with metrics', async () => { + const { body } = await supertest + .post( + '/api/monitoring/v1/clusters/DFDDUmKHR0Ge0mkdYW2bew/kibana/de3b8f2a-7bb9-4931-9bf3-997ba7824cf9' + ) + .set('kbn-xsrf', 'xxx') + .send({ timeRange }) + .expect(200); - body.metrics = normalizeDataTypeDifferences(body.metrics, instanceFixture); - instanceFixture.metrics = setIndicesFound(instanceFixture.metrics, true); - expect(body).to.eql(instanceFixture); + body.metrics = normalizeDataTypeDifferences(body.metrics, instanceFixture); + instanceFixture.metrics = setIndicesFound(instanceFixture.metrics, true); + expect(body).to.eql(instanceFixture); + }); + }); }); }); } diff --git a/x-pack/test/api_integration/apis/monitoring/kibana/listing_mb.js b/x-pack/test/api_integration/apis/monitoring/kibana/listing_mb.js index 90ea1d40ca9170..1068109a15b165 100644 --- a/x-pack/test/api_integration/apis/monitoring/kibana/listing_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/kibana/listing_mb.js @@ -13,36 +13,39 @@ export default function ({ getService }) { const supertest = getService('supertest'); const { setup, tearDown } = getLifecycleMethods(getService); - describe('listing mb', () => { - const archive = - 'x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_mb'; - const timeRange = { - min: '2017-08-29T17:24:17.000Z', - max: '2017-08-29T17:26:08.000Z', - }; - - before('load archive', () => { - return setup(archive); - }); - - after('unload archive', () => { - return tearDown(); - }); - - it('should summarize list of kibana instances with stats', async () => { - const { body } = await supertest - .post('/api/monitoring/v1/clusters/DFDDUmKHR0Ge0mkdYW2bew/kibana/instances') - .set('kbn-xsrf', 'xxx') - .send({ timeRange }) - .expect(200); - - // Fixture is shared between internal and Metricbeat collection tests - // But timestamps of documents differ by a few miliseconds - const lastSeenTimestamp = body.kibanas[0].lastSeenTimestamp; - delete body.kibanas[0].lastSeenTimestamp; - - expect(body).to.eql(listingFixture); - expect(lastSeenTimestamp).to.eql('2017-08-29T17:25:43.192Z'); + describe('listing - metricbeat and package', () => { + ['mb', 'package'].forEach((source) => { + describe(`listing ${source}`, () => { + const archive = `x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_${source}`; + const timeRange = { + min: '2017-08-29T17:24:17.000Z', + max: '2017-08-29T17:26:08.000Z', + }; + + before('load archive', () => { + return setup(archive); + }); + + after('unload archive', () => { + return tearDown(archive); + }); + + it('should summarize list of kibana instances with stats', async () => { + const { body } = await supertest + .post('/api/monitoring/v1/clusters/DFDDUmKHR0Ge0mkdYW2bew/kibana/instances') + .set('kbn-xsrf', 'xxx') + .send({ timeRange }) + .expect(200); + + // Fixture is shared between internal and Metricbeat collection tests + // But timestamps of documents differ by a few miliseconds + const lastSeenTimestamp = body.kibanas[0].lastSeenTimestamp; + delete body.kibanas[0].lastSeenTimestamp; + + expect(body).to.eql(listingFixture); + expect(lastSeenTimestamp).to.eql('2017-08-29T17:25:43.192Z'); + }); + }); }); }); } diff --git a/x-pack/test/api_integration/apis/monitoring/kibana/overview_mb.js b/x-pack/test/api_integration/apis/monitoring/kibana/overview_mb.js index 46edaa0d1ff13d..e4923f4940c270 100644 --- a/x-pack/test/api_integration/apis/monitoring/kibana/overview_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/kibana/overview_mb.js @@ -15,32 +15,35 @@ export default function ({ getService }) { const supertest = getService('supertest'); const { setup, tearDown } = getLifecycleMethods(getService); - describe('overview mb', () => { - const archive = - 'x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_mb'; - const timeRange = { - min: '2017-08-29T17:24:17.000Z', - max: '2017-08-29T17:26:08.000Z', - }; + describe('overview - metricbeat and package', () => { + ['mb', 'package'].forEach((source) => { + describe(`overview ${source}`, () => { + const archive = `x-pack/test/functional/es_archives/monitoring/singlecluster_yellow_platinum_${source}`; + const timeRange = { + min: '2017-08-29T17:24:17.000Z', + max: '2017-08-29T17:26:08.000Z', + }; - before('load archive', () => { - return setup(archive); - }); + before('load archive', () => { + return setup(archive); + }); - after('unload archive', () => { - return tearDown(); - }); + after('unload archive', () => { + return tearDown(archive); + }); - it('should summarize kibana instances with stats', async () => { - const { body } = await supertest - .post('/api/monitoring/v1/clusters/DFDDUmKHR0Ge0mkdYW2bew/kibana') - .set('kbn-xsrf', 'xxx') - .send({ timeRange }) - .expect(200); + it('should summarize kibana instances with stats', async () => { + const { body } = await supertest + .post('/api/monitoring/v1/clusters/DFDDUmKHR0Ge0mkdYW2bew/kibana') + .set('kbn-xsrf', 'xxx') + .send({ timeRange }) + .expect(200); - body.metrics = normalizeDataTypeDifferences(body.metrics, overviewFixture); - overviewFixture.metrics = setIndicesFound(overviewFixture.metrics, true); - expect(body).to.eql(overviewFixture); + body.metrics = normalizeDataTypeDifferences(body.metrics, overviewFixture); + overviewFixture.metrics = setIndicesFound(overviewFixture.metrics, true); + expect(body).to.eql(overviewFixture); + }); + }); }); }); } diff --git a/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/instance.js b/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/instance.js index a16a053dde3a15..76bd34ece039b6 100644 --- a/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/instance.js +++ b/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/instance.js @@ -13,30 +13,34 @@ export default function ({ getService }) { const supertest = getService('supertest'); const { setup, tearDown } = getLifecycleMethods(getService); - describe('instance detail', () => { - const archive = 'x-pack/test/functional/es_archives/monitoring/kibana/rules_and_actions'; - const timeRange = { - min: '2022-05-31T18:44:19.267Z', - max: '2022-05-31T19:59:19.267Z', - }; + describe('instance detail - metricbeat and package', () => { + ['rules_and_actions', 'rules_and_actions_package'].forEach((source) => { + describe(`instance detail ${source}`, () => { + const archive = `x-pack/test/functional/es_archives/monitoring/kibana/${source}`; + const timeRange = { + min: '2022-05-31T18:44:19.267Z', + max: '2022-05-31T19:59:19.267Z', + }; - before('load archive', () => { - return setup(archive); - }); + before('load archive', () => { + return setup(archive); + }); - after('unload archive', () => { - return tearDown(); - }); + after('unload archive', () => { + return tearDown(archive); + }); - it('should get data for the kibana instance view', async () => { - const { body } = await supertest - .post( - '/api/monitoring/v1/clusters/SvjwrFv6Rvuqjm9-cSSVEg/kibana/5b2de169-2785-441b-ae8c-186a1936b17d' - ) - .set('kbn-xsrf', 'xxx') - .send({ timeRange }) - .expect(200); - expect(body).to.eql(fixture); + it('should get data for the kibana instance view', async () => { + const { body } = await supertest + .post( + '/api/monitoring/v1/clusters/SvjwrFv6Rvuqjm9-cSSVEg/kibana/5b2de169-2785-441b-ae8c-186a1936b17d' + ) + .set('kbn-xsrf', 'xxx') + .send({ timeRange }) + .expect(200); + expect(body).to.eql(fixture); + }); + }); }); }); } diff --git a/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/overview.js b/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/overview.js index 720e9425875120..c7861a803ef913 100644 --- a/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/overview.js +++ b/x-pack/test/api_integration/apis/monitoring/kibana/rules_and_actions/overview.js @@ -13,29 +13,33 @@ export default function ({ getService }) { const supertest = getService('supertest'); const { setup, tearDown } = getLifecycleMethods(getService); - describe('overview', () => { - const archive = 'x-pack/test/functional/es_archives/monitoring/kibana/rules_and_actions'; - const timeRange = { - min: '2022-05-31T18:44:19.267Z', - max: '2022-05-31T19:59:19.267Z', - }; + describe('overview - metricbeat and package', () => { + ['rules_and_actions', 'rules_and_actions_package'].forEach((source) => { + describe(`overview ${source}`, () => { + const archive = `x-pack/test/functional/es_archives/monitoring/kibana/${source}`; + const timeRange = { + min: '2022-05-31T18:44:19.267Z', + max: '2022-05-31T19:59:19.267Z', + }; - before('load archive', () => { - return setup(archive); - }); + before('load archive', () => { + return setup(archive); + }); - after('unload archive', () => { - return tearDown(); - }); + after('unload archive', () => { + return tearDown(archive); + }); - it('should get kibana rules at cluster level', async () => { - const { body } = await supertest - .post('/api/monitoring/v1/clusters/SvjwrFv6Rvuqjm9-cSSVEg') - .set('kbn-xsrf', 'xxx') - .send({ timeRange, codePaths: ['all'] }) - .expect(200); + it('should get kibana rules at cluster level', async () => { + const { body } = await supertest + .post('/api/monitoring/v1/clusters/SvjwrFv6Rvuqjm9-cSSVEg') + .set('kbn-xsrf', 'xxx') + .send({ timeRange, codePaths: ['all'] }) + .expect(200); - expect(body[0].kibana.rules).to.eql(fixture[0].kibana.rules); + expect(body[0].kibana.rules).to.eql(fixture[0].kibana.rules); + }); + }); }); }); } diff --git a/x-pack/test/functional/es_archives/monitoring/kibana/rules_and_actions_package/data.json.gz b/x-pack/test/functional/es_archives/monitoring/kibana/rules_and_actions_package/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..dd9f54a477ec02dfda05bbf94d295907de36cd99 GIT binary patch literal 23361 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