[8.8] [functional tests] split fleet_api_integration config into smaller ones (#156407) (#156559)

# Backport

This will backport the following commits from `main` to `8.8`:
- [[functional tests] split fleet_api_integration config into smaller
ones (#156407)](https://github.com/elastic/kibana/pull/156407)

<!--- Backport version: 8.9.7 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Dzmitry
Lemechko","email":"dzmitry.lemechko@elastic.co"},"sourceCommit":{"committedDate":"2023-05-03T14:26:58Z","message":"[functional
tests] split fleet_api_integration config into smaller ones
(#156407)\n\n## Summary\r\n\r\nRuntime for
`fleet_api_integration/config` crossed the 38 min limit.\r\nIdeally
config runtime should be <10 min so that pipeline can quickly\r\nretry
failed configs (we do 1 retry on CI)\r\n\r\n<img width=\"1600\"
alt=\"image\"\r\nsrc=\"https://user-images.githubusercontent.com/10977896/235707744-3120e1e9-4882-493f-9ee0-86016a765401.png\">\r\n\r\n\r\nThis
PR splits the existing config into few smaller
ones:\r\n\r\n```\r\nx-pack/test/fleet_api_integration/config.agent.ts
15m 15s\r\nx-pack/test/fleet_api_integration/config.agent_policy.ts 4m
10s\r\nx-pack/test/fleet_api_integration/config.epm.ts 8m
12s\r\nx-pack/test/fleet_api_integration/config.package_policy.ts 10m
54s\r\n// combines multiple test
files\r\nx-pack/test/fleet_api_integration/config.fleet.ts 5m
2s\r\n```","sha":"1c777a2e702f7c5ae9c1b86063515c0a27368efb","branchLabelMapping":{"^v8.9.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Fleet","v8.8.0","v8.7.2","v8.9.0"],"number":156407,"url":"https://github.com/elastic/kibana/pull/156407","mergeCommit":{"message":"[functional
tests] split fleet_api_integration config into smaller ones
(#156407)\n\n## Summary\r\n\r\nRuntime for
`fleet_api_integration/config` crossed the 38 min limit.\r\nIdeally
config runtime should be <10 min so that pipeline can quickly\r\nretry
failed configs (we do 1 retry on CI)\r\n\r\n<img width=\"1600\"
alt=\"image\"\r\nsrc=\"https://user-images.githubusercontent.com/10977896/235707744-3120e1e9-4882-493f-9ee0-86016a765401.png\">\r\n\r\n\r\nThis
PR splits the existing config into few smaller
ones:\r\n\r\n```\r\nx-pack/test/fleet_api_integration/config.agent.ts
15m 15s\r\nx-pack/test/fleet_api_integration/config.agent_policy.ts 4m
10s\r\nx-pack/test/fleet_api_integration/config.epm.ts 8m
12s\r\nx-pack/test/fleet_api_integration/config.package_policy.ts 10m
54s\r\n// combines multiple test
files\r\nx-pack/test/fleet_api_integration/config.fleet.ts 5m
2s\r\n```","sha":"1c777a2e702f7c5ae9c1b86063515c0a27368efb"}},"sourceBranch":"main","suggestedTargetBranches":["8.8","8.7"],"targetPullRequestStates":[{"branch":"8.8","label":"v8.8.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.7","label":"v8.7.2","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.9.0","labelRegex":"^v8.9.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/156407","number":156407,"mergeCommit":{"message":"[functional
tests] split fleet_api_integration config into smaller ones
(#156407)\n\n## Summary\r\n\r\nRuntime for
`fleet_api_integration/config` crossed the 38 min limit.\r\nIdeally
config runtime should be <10 min so that pipeline can quickly\r\nretry
failed configs (we do 1 retry on CI)\r\n\r\n<img width=\"1600\"
alt=\"image\"\r\nsrc=\"https://user-images.githubusercontent.com/10977896/235707744-3120e1e9-4882-493f-9ee0-86016a765401.png\">\r\n\r\n\r\nThis
PR splits the existing config into few smaller
ones:\r\n\r\n```\r\nx-pack/test/fleet_api_integration/config.agent.ts
15m 15s\r\nx-pack/test/fleet_api_integration/config.agent_policy.ts 4m
10s\r\nx-pack/test/fleet_api_integration/config.epm.ts 8m
12s\r\nx-pack/test/fleet_api_integration/config.package_policy.ts 10m
54s\r\n// combines multiple test
files\r\nx-pack/test/fleet_api_integration/config.fleet.ts 5m
2s\r\n```","sha":"1c777a2e702f7c5ae9c1b86063515c0a27368efb"}}]}]
BACKPORT-->

Co-authored-by: Dzmitry Lemechko <dzmitry.lemechko@elastic.co>
This commit is contained in:
Kibana Machine 2023-05-03 11:33:03 -04:00 committed by GitHub
parent b12b81230d
commit d61043fdfa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 156 additions and 39 deletions

View file

@ -12,6 +12,7 @@ disabled:
- test/server_integration/config.base.js
- x-pack/test/functional_with_es_ssl/config.base.ts
- x-pack/test/api_integration/config.ts
- x-pack/test/fleet_api_integration/config.base.ts
# QA suites that are run out-of-band
- x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js
@ -210,7 +211,11 @@ enabled:
- x-pack/test/encrypted_saved_objects_api_integration/config.ts
- x-pack/test/endpoint_api_integration_no_ingest/config.ts
- x-pack/test/examples/config.ts
- x-pack/test/fleet_api_integration/config.ts
- x-pack/test/fleet_api_integration/config.agent.ts
- x-pack/test/fleet_api_integration/config.agent_policy.ts
- x-pack/test/fleet_api_integration/config.epm.ts
- x-pack/test/fleet_api_integration/config.fleet.ts
- x-pack/test/fleet_api_integration/config.package_policy.ts
- x-pack/test/fleet_functional/config.ts
- x-pack/test/ftr_apis/security_and_spaces/config.ts
- x-pack/test/functional_basic/apps/ml/permissions/config.ts

View file

@ -5,8 +5,13 @@
* 2.0.
*/
export default function loadTests({ loadTestFile }) {
describe('Fleet Endpoints', () => {
import { setupTestUsers } from '../test_users';
export default function loadTests({ loadTestFile, getService }) {
describe('Agents', () => {
before(async () => {
await setupTestUsers(getService('security'));
});
loadTestFile(require.resolve('./delete'));
loadTestFile(require.resolve('./list'));
loadTestFile(require.resolve('./unenroll'));

View file

@ -5,8 +5,13 @@
* 2.0.
*/
export default function loadTests({ loadTestFile }) {
import { setupTestUsers } from '../test_users';
export default function loadTests({ loadTestFile, getService }) {
describe('EPM Endpoints', () => {
before(async () => {
await setupTestUsers(getService('security'));
});
loadTestFile(require.resolve('./delete'));
loadTestFile(require.resolve('./list'));
loadTestFile(require.resolve('./setup'));

View file

@ -9,7 +9,7 @@ import expect from '@kbn/expect';
import fs from 'fs/promises';
import path from 'path';
import { BUNDLED_PACKAGE_DIR } from '../../config';
import { BUNDLED_PACKAGE_DIR } from '../../config.base';
import { FtrProviderContext } from '../../../api_integration/ftr_provider_context';
import { skipIfNoDockerRegistry } from '../../helpers';
import { setupFleetAndAgents } from '../agents/services';

View file

@ -8,60 +8,43 @@
import { setupTestUsers } from './test_users';
export default function ({ loadTestFile, getService }) {
// total runtime ~ 4m
describe('Fleet Endpoints', function () {
before(async () => {
await setupTestUsers(getService('security'));
});
// EPM
loadTestFile(require.resolve('./epm'));
// Fleet setup
loadTestFile(require.resolve('./fleet_setup'));
// Agents
loadTestFile(require.resolve('./agents'));
loadTestFile(require.resolve('./fleet_setup')); // ~ 6s
// Enrollment API keys
loadTestFile(require.resolve('./enrollment_api_keys/crud'));
// Package policies
loadTestFile(require.resolve('./package_policy/create'));
loadTestFile(require.resolve('./package_policy/update'));
loadTestFile(require.resolve('./package_policy/get'));
loadTestFile(require.resolve('./package_policy/delete'));
loadTestFile(require.resolve('./package_policy/upgrade'));
loadTestFile(require.resolve('./package_policy/input_package_create_upgrade'));
// Agent policies
loadTestFile(require.resolve('./agent_policy'));
loadTestFile(require.resolve('./enrollment_api_keys/crud')); // ~ 20s
// Data Streams
loadTestFile(require.resolve('./data_streams'));
loadTestFile(require.resolve('./data_streams')); // ~ 20s
// Settings
loadTestFile(require.resolve('./settings'));
loadTestFile(require.resolve('./settings')); // ~ 7s
// Service tokens
loadTestFile(require.resolve('./service_tokens'));
loadTestFile(require.resolve('./service_tokens')); // ~ 2s
// Outputs
loadTestFile(require.resolve('./outputs'));
loadTestFile(require.resolve('./outputs')); // ~ 1m 30s
// Download sources
loadTestFile(require.resolve('./download_sources'));
loadTestFile(require.resolve('./download_sources')); // ~ 15s
// Telemetry
loadTestFile(require.resolve('./fleet_telemetry'));
loadTestFile(require.resolve('./fleet_telemetry')); // ~ 30s
// Integrations
loadTestFile(require.resolve('./integrations'));
loadTestFile(require.resolve('./integrations')); // ~ 8s
// Fleet server hosts
loadTestFile(require.resolve('./fleet_server_hosts/crud'));
loadTestFile(require.resolve('./fleet_server_hosts/crud')); // ~ 9s
// Fleet proxies
loadTestFile(require.resolve('./fleet_proxies/crud'));
loadTestFile(require.resolve('./fleet_proxies/crud')); // ~ 20s
});
}

View file

@ -0,0 +1,23 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { setupTestUsers } from '../test_users';
export default function loadTests({ loadTestFile, getService }) {
describe('Package policies', () => {
before(async () => {
await setupTestUsers(getService('security'));
});
loadTestFile(require.resolve('./create'));
loadTestFile(require.resolve('./update'));
loadTestFile(require.resolve('./get'));
loadTestFile(require.resolve('./delete'));
loadTestFile(require.resolve('./upgrade'));
loadTestFile(require.resolve('./input_package_create_upgrade'));
});
}

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseFleetApiConfig = await readConfigFile(require.resolve('./config.base.ts'));
return {
...baseFleetApiConfig.getAll(),
testFiles: [require.resolve('./apis/agents')],
junit: {
reportName: 'X-Pack Fleet Agent API Integration Tests',
},
};
}

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseFleetApiConfig = await readConfigFile(require.resolve('./config.base.ts'));
return {
...baseFleetApiConfig.getAll(),
testFiles: [require.resolve('./apis/agent_policy')],
junit: {
reportName: 'X-Pack Fleet Agent Policy API Integration Tests',
},
};
}

View file

@ -41,7 +41,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
]);
return {
testFiles: [require.resolve('./apis')],
servers: xPackAPITestsConfig.get('servers'),
dockerServers: defineDockerServersConfig({
registry: {
@ -55,9 +54,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
},
}),
services: xPackAPITestsConfig.get('services'),
junit: {
reportName: 'X-Pack EPM API Integration Tests',
},
esTestCluster: xPackAPITestsConfig.get('esTestCluster'),
kbnTestServer: {
...xPackAPITestsConfig.get('kbnTestServer'),

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseFleetApiConfig = await readConfigFile(require.resolve('./config.base.ts'));
return {
...baseFleetApiConfig.getAll(),
testFiles: [require.resolve('./apis/epm')],
junit: {
reportName: 'X-Pack EPM API Integration Tests',
},
};
}

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseFleetApiConfig = await readConfigFile(require.resolve('./config.base.ts'));
return {
...baseFleetApiConfig.getAll(),
testFiles: [require.resolve('./apis')],
junit: {
reportName: 'X-Pack Fleet API Integration Tests',
},
};
}

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseFleetApiConfig = await readConfigFile(require.resolve('./config.base.ts'));
return {
...baseFleetApiConfig.getAll(),
testFiles: [require.resolve('./apis/package_policy')],
junit: {
reportName: 'X-Pack Fleet Package Policy API Integration Tests',
},
};
}

View file

@ -8,7 +8,7 @@
import path from 'path';
import { defineDockerServersConfig } from '@kbn/test';
import { dockerImage as ingestDockerImage } from '../fleet_api_integration/config';
import { dockerImage as ingestDockerImage } from '../fleet_api_integration/config.base';
/**
* This is used by CI to set the docker registry port