Skip to content

Commit b7f57a0

Browse files
authored
[Stack Monitoring] install packages before test suite runs (#165881)
## Summary Closes #165043 Updates the approach to load packages in test suites by sending http request before suite starts instead of using `xpack.fleet.developer.bundledPackageLocation` [Flaky test runner](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3075)
1 parent 64e41be commit b7f57a0

8 files changed

Lines changed: 52 additions & 13 deletions

File tree

x-pack/test/monitoring_api_integration/apis/apm/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77

88
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
9+
import { installPackage } from '../../packages';
910

10-
export default function ({ loadTestFile }: FtrProviderContext) {
11+
export default function ({ loadTestFile, getService }: FtrProviderContext) {
1112
describe('APM', () => {
13+
before(() => installPackage(getService('supertest'), 'beat'));
14+
1215
loadTestFile(require.resolve('./overview'));
1316
loadTestFile(require.resolve('./instances'));
1417
});

x-pack/test/monitoring_api_integration/apis/beats/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77

88
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
9+
import { installPackage } from '../../packages';
910

10-
export default function ({ loadTestFile }: FtrProviderContext) {
11+
export default function ({ loadTestFile, getService }: FtrProviderContext) {
1112
describe('Beats', () => {
13+
before(() => installPackage(getService('supertest'), 'beat'));
14+
1215
loadTestFile(require.resolve('./overview'));
1316
loadTestFile(require.resolve('./beats'));
1417
loadTestFile(require.resolve('./beat'));

x-pack/test/monitoring_api_integration/apis/elasticsearch/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77

88
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
9+
import { installPackage } from '../../packages';
910

10-
export default function ({ loadTestFile }: FtrProviderContext) {
11+
export default function ({ loadTestFile, getService }: FtrProviderContext) {
1112
describe('Elasticsearch', () => {
13+
before(() => installPackage(getService('supertest'), 'elasticsearch'));
14+
1215
loadTestFile(require.resolve('./ccr'));
1316
loadTestFile(require.resolve('./indices'));
1417
loadTestFile(require.resolve('./ml_jobs'));

x-pack/test/monitoring_api_integration/apis/enterprisesearch/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77

88
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
9+
import { installPackage } from '../../packages';
910

10-
export default function ({ loadTestFile }: FtrProviderContext) {
11+
export default function ({ loadTestFile, getService }: FtrProviderContext) {
1112
describe('Enterprisesearch', () => {
13+
before(() => installPackage(getService('supertest'), 'enterprisesearch'));
14+
1215
loadTestFile(require.resolve('./overview'));
1316
});
1417
}

x-pack/test/monitoring_api_integration/apis/kibana/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77

88
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
9+
import { installPackage } from '../../packages';
910

10-
export default function ({ loadTestFile }: FtrProviderContext) {
11+
export default function ({ loadTestFile, getService }: FtrProviderContext) {
1112
describe('Kibana', () => {
13+
before(() => installPackage(getService('supertest'), 'kibana'));
14+
1215
loadTestFile(require.resolve('./overview'));
1316
loadTestFile(require.resolve('./instances'));
1417
});

x-pack/test/monitoring_api_integration/apis/logstash/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77

88
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
9+
import { installPackage } from '../../packages';
910

10-
export default function ({ loadTestFile }: FtrProviderContext) {
11+
export default function ({ loadTestFile, getService }: FtrProviderContext) {
1112
describe('Logstash', () => {
13+
before(() => installPackage(getService('supertest'), 'logstash'));
14+
1215
loadTestFile(require.resolve('./overview'));
1316
loadTestFile(require.resolve('./nodes'));
1417
loadTestFile(require.resolve('./pipelines'));

x-pack/test/monitoring_api_integration/config.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
import { FtrConfigProviderContext } from '@kbn/test';
99

10-
import { bundledPackagesLocation, getPackagesArgs } from './packages';
11-
1210
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
1311
const xPackAPITestsConfig = await readConfigFile(require.resolve('../api_integration/config.ts'));
1412

@@ -22,11 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
2220
esTestCluster: xPackAPITestsConfig.get('esTestCluster'),
2321
kbnTestServer: {
2422
...xPackAPITestsConfig.get('kbnTestServer'),
25-
serverArgs: [
26-
...xPackAPITestsConfig.get('kbnTestServer.serverArgs'),
27-
`--xpack.fleet.developer.bundledPackageLocation=${bundledPackagesLocation}`,
28-
...getPackagesArgs(),
29-
],
23+
serverArgs: [...xPackAPITestsConfig.get('kbnTestServer.serverArgs')],
3024
},
3125
};
3226
}

x-pack/test/monitoring_api_integration/packages.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
*/
77

88
import path from 'path';
9+
import { createReadStream } from 'fs';
10+
import type SuperTest from 'supertest';
11+
12+
type SupportedPackage = 'beat' | 'elasticsearch' | 'enterprisesearch' | 'logstash' | 'kibana';
913

1014
const PACKAGES = [
1115
{ name: 'beat', version: '0.1.3' },
@@ -25,3 +29,26 @@ export const getPackagesArgs = (): string[] => {
2529
};
2630

2731
export const bundledPackagesLocation = path.join(path.dirname(__filename), '/fixtures/packages');
32+
33+
export function installPackage(
34+
supertest: SuperTest.SuperTest<SuperTest.Test>,
35+
packageName: SupportedPackage
36+
) {
37+
const pkg = PACKAGES.find(({ name }) => name === packageName);
38+
const request = supertest
39+
.post('/api/fleet/epm/packages')
40+
.set('kbn-xsrf', 'xxx')
41+
.set('content-type', 'application/zip');
42+
43+
return new Promise<void>((resolve, reject) => {
44+
createReadStream(path.join(bundledPackagesLocation, `${pkg!.name}-${pkg!.version}.zip`))
45+
.on('data', (chunk) => request.write(chunk))
46+
.on('end', () => {
47+
request
48+
.send()
49+
.expect(200)
50+
.then(() => resolve())
51+
.catch(reject);
52+
});
53+
});
54+
}

0 commit comments

Comments
 (0)