[9.0] [kbn-test] check config duplicate entries (#219089) (#219136)

# Backport

This will backport the following commits from `main` to `9.0`:
- [[kbn-test] check config duplicate entries
(#219089)](https://github.com/elastic/kibana/pull/219089)

<!--- Backport version: 9.6.6 -->

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

<!--BACKPORT [{"author":{"name":"Dzmitry
Lemechko","email":"dzmitry.lemechko@elastic.co"},"sourceCommit":{"committedDate":"2025-04-24T17:22:36Z","message":"[kbn-test]
check config duplicate entries (#219089)\n\n## Summary\n\n@gsoldevila
noticed that we have the same FTR configs listed in\ndifferent manifest
file. It means that we are running the same configs\nmultiple time and
this PR fixes it.\n\nPR update `scripts/check_ftr_configs.js` to check
for duplicate entries\nin manifests in advance and throw an error asking
developer to
remove\nduplicates:\n\n```\n[kbn-test/check-config-duplicate-entries][~/github/kibana]$
node scripts/check_ftr_configs.js\nERROR Duplicate FTR config entries
detected. Please remove the duplicates:\n\n Config path:
x-pack/test/api_integration/apis/logs_ui/config.ts\n Found in
manifests:\n .buildkite/ftr_platform_stateful_configs.yml\n
.buildkite/ftr_oblt_stateful_configs.yml\n\n Config path:
x-pack/test/api_integration/apis/metrics_ui/config.ts\n Found in
manifests:\n .buildkite/ftr_platform_stateful_configs.yml\n
.buildkite/ftr_oblt_stateful_configs.yml\n \n ...\n```\n\nCheck verified
in\n[CI](https://buildkite.com/elastic/kibana-pull-request/builds/295779#019667cf-bff5-4ea0-b0f2-7044125fe08e)","sha":"91b0988c2c1093a0c23c59e53eba43c236d840a8","branchLabelMapping":{"^v9.1.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","backport:version","v9.1.0","v8.19.0","v9.0.1"],"title":"[kbn-test]
check config duplicate
entries","number":219089,"url":"https://github.com/elastic/kibana/pull/219089","mergeCommit":{"message":"[kbn-test]
check config duplicate entries (#219089)\n\n## Summary\n\n@gsoldevila
noticed that we have the same FTR configs listed in\ndifferent manifest
file. It means that we are running the same configs\nmultiple time and
this PR fixes it.\n\nPR update `scripts/check_ftr_configs.js` to check
for duplicate entries\nin manifests in advance and throw an error asking
developer to
remove\nduplicates:\n\n```\n[kbn-test/check-config-duplicate-entries][~/github/kibana]$
node scripts/check_ftr_configs.js\nERROR Duplicate FTR config entries
detected. Please remove the duplicates:\n\n Config path:
x-pack/test/api_integration/apis/logs_ui/config.ts\n Found in
manifests:\n .buildkite/ftr_platform_stateful_configs.yml\n
.buildkite/ftr_oblt_stateful_configs.yml\n\n Config path:
x-pack/test/api_integration/apis/metrics_ui/config.ts\n Found in
manifests:\n .buildkite/ftr_platform_stateful_configs.yml\n
.buildkite/ftr_oblt_stateful_configs.yml\n \n ...\n```\n\nCheck verified
in\n[CI](https://buildkite.com/elastic/kibana-pull-request/builds/295779#019667cf-bff5-4ea0-b0f2-7044125fe08e)","sha":"91b0988c2c1093a0c23c59e53eba43c236d840a8"}},"sourceBranch":"main","suggestedTargetBranches":["8.19","9.0"],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/219089","number":219089,"mergeCommit":{"message":"[kbn-test]
check config duplicate entries (#219089)\n\n## Summary\n\n@gsoldevila
noticed that we have the same FTR configs listed in\ndifferent manifest
file. It means that we are running the same configs\nmultiple time and
this PR fixes it.\n\nPR update `scripts/check_ftr_configs.js` to check
for duplicate entries\nin manifests in advance and throw an error asking
developer to
remove\nduplicates:\n\n```\n[kbn-test/check-config-duplicate-entries][~/github/kibana]$
node scripts/check_ftr_configs.js\nERROR Duplicate FTR config entries
detected. Please remove the duplicates:\n\n Config path:
x-pack/test/api_integration/apis/logs_ui/config.ts\n Found in
manifests:\n .buildkite/ftr_platform_stateful_configs.yml\n
.buildkite/ftr_oblt_stateful_configs.yml\n\n Config path:
x-pack/test/api_integration/apis/metrics_ui/config.ts\n Found in
manifests:\n .buildkite/ftr_platform_stateful_configs.yml\n
.buildkite/ftr_oblt_stateful_configs.yml\n \n ...\n```\n\nCheck verified
in\n[CI](https://buildkite.com/elastic/kibana-pull-request/builds/295779#019667cf-bff5-4ea0-b0f2-7044125fe08e)","sha":"91b0988c2c1093a0c23c59e53eba43c236d840a8"}},{"branch":"8.19","label":"v8.19.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.0","label":"v9.0.1","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Dzmitry Lemechko <dzmitry.lemechko@elastic.co>
This commit is contained in:
Kibana Machine 2025-04-24 20:48:52 +02:00 committed by GitHub
parent ed0968df75
commit e7b8b3fb42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 33 additions and 18 deletions

View file

@ -24,7 +24,6 @@ enabled:
- x-pack/test/api_integration/apis/logs_ui/config.ts
- x-pack/test/api_integration/apis/logs_shared/config.ts
- x-pack/test/api_integration/apis/metrics_ui/config.ts
- x-pack/test/api_integration/apis/osquery/config.ts
- x-pack/test/api_integration/apis/synthetics/config.ts
- x-pack/test/api_integration/apis/uptime/config.ts
- x-pack/test/api_integration/apis/entity_manager/config.ts

View file

@ -155,23 +155,19 @@ enabled:
- x-pack/test/api_integration/apis/grok_debugger/config.ts
- x-pack/test/api_integration/apis/kibana/config.ts
- x-pack/test/api_integration/apis/lists/config.ts
- x-pack/test/api_integration/apis/logs_ui/config.ts
- x-pack/test/api_integration/apis/logstash/config.ts
- x-pack/test/api_integration/apis/management/config.ts
- x-pack/test/api_integration/apis/management/index_management/disabled_data_enrichers/config.ts
- x-pack/test/api_integration/apis/maps/config.ts
- x-pack/test/api_integration/apis/metrics_ui/config.ts
- x-pack/test/api_integration/apis/ml/config.ts
- x-pack/test/api_integration/apis/monitoring/config.ts
- x-pack/test/api_integration/apis/monitoring_collection/config.ts
- x-pack/test/api_integration/apis/osquery/config.ts
- x-pack/test/api_integration/apis/search/config.ts
- x-pack/test/api_integration/apis/searchprofiler/config.ts
- x-pack/test/api_integration/apis/security/config.ts
- x-pack/test/api_integration/apis/spaces/config.ts
- x-pack/test/api_integration/apis/stats/config.ts
- x-pack/test/api_integration/apis/status/config.ts
- x-pack/test/api_integration/apis/synthetics/config.ts
- x-pack/test/api_integration/apis/telemetry/config.ts
- x-pack/test/api_integration/apis/transform/config.ts
- x-pack/test/api_integration/apis/upgrade_assistant/config.ts

View file

@ -14,11 +14,6 @@ disabled:
# Playwright
- x-pack/test/security_solution_playwright/serverless_config.ts
# Serverless base config files
- x-pack/test_serverless/api_integration/config.base.ts
- x-pack/test_serverless/functional/config.base.ts
- x-pack/test_serverless/shared/config.base.ts
# MKI only configs files
- x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts

View file

@ -4,7 +4,6 @@ disabled:
- x-pack/test/security_solution_api_integration/config/ess/config.base.basic.ts
- x-pack/test/security_solution_api_integration/config/ess/config.base.edr_workflows.trial.ts
- x-pack/test/security_solution_api_integration/config/ess/config.base.edr_workflows.ts
- x-pack/test/security_solution_api_integration/config/ess/config.base.basic.ts
- x-pack/test/security_solution_api_integration/config/ess/config.base.trial.ts
- x-pack/test/security_solution_endpoint/configs/config.base.ts
- x-pack/test/security_solution_endpoint/config.base.ts
@ -105,6 +104,7 @@ enabled:
- x-pack/test/security_solution_endpoint/configs/endpoint.config.ts
- x-pack/test/security_solution_endpoint/configs/integrations.config.ts
- x-pack/test/api_integration/apis/cloud_security_posture/config.ts
- x-pack/test/api_integration/apis/osquery/config.ts
- x-pack/test/cloud_security_posture_api/config.ts
- x-pack/test/cloud_security_posture_functional/config.ts
- x-pack/test/cloud_security_posture_functional/config.agentless.ts

View file

@ -61,7 +61,8 @@ async function getConfigModule({
throw error;
}
const { allFtrConfigs, manifestPaths } = getAllFtrConfigsAndManifests();
const { ftrConfigEntries, manifestPaths } = getAllFtrConfigsAndManifests();
const allFtrConfigs = Array.from(ftrConfigEntries.keys());
if (
primary &&

View file

@ -42,7 +42,7 @@ const getAllFtrConfigsManifests = () => {
export const getAllFtrConfigsAndManifests = () => {
const manifestPaths = getAllFtrConfigsManifests();
const allFtrConfigs: string[] = [];
const ftrConfigEntries = new Map<string, string[]>();
for (const manifestRelPath of manifestPaths.all) {
const manifest = JsYaml.load(
@ -59,8 +59,13 @@ export const getAllFtrConfigsAndManifests = () => {
return Path.resolve(REPO_ROOT, rel);
});
allFtrConfigs.push(...ftrConfigsInManifest);
for (const config of ftrConfigsInManifest) {
if (!ftrConfigEntries.has(config)) {
ftrConfigEntries.set(config, []);
}
ftrConfigEntries.get(config)!.push(manifestRelPath);
}
}
return { allFtrConfigs, manifestPaths };
return { ftrConfigEntries, manifestPaths };
};

View file

@ -29,6 +29,25 @@ const IGNORED_PATHS = [
export async function runCheckFtrConfigsCli() {
run(
async ({ log }) => {
const { ftrConfigEntries, manifestPaths } = getAllFtrConfigsAndManifests();
const duplicateEntries = Array.from(ftrConfigEntries.entries()).filter(
([, paths]) => paths.length > 1
);
if (duplicateEntries.length > 0) {
const errorMessage = duplicateEntries
.map(
([config, paths]) =>
`Config path: ${Path.relative(REPO_ROOT, config)}\nFound in manifests:\n${paths.join(
'\n'
)}`
)
.join('\n\n');
throw createFailError(
`Duplicate FTR config entries detected. Please remove the duplicates:\n\n${errorMessage}`
);
}
const { stdout } = await execa('git', [
'ls-tree',
'--full-tree',
@ -133,8 +152,7 @@ export async function runCheckFtrConfigsCli() {
log.info(`${loadingConfigs.length} files were loaded as FTR configs for validation`);
}
const { allFtrConfigs, manifestPaths } = getAllFtrConfigsAndManifests();
const allFtrConfigs = Array.from(ftrConfigEntries.keys());
const invalid = possibleConfigs.filter((path) => !allFtrConfigs.includes(path));
if (invalid.length) {
const invalidList =
@ -152,7 +170,8 @@ Serverless tests:\n${(manifestPaths.serverless as string[]).join('\n')}
}
},
{
description: 'Check that all FTR configs are listed in manifest files',
description:
'Check that all FTR configs are listed in manifest files and there are no duplicates',
}
);
}