kibana/x-pack/test/functional/config.base.js
Ahmad Bamieh b8841bcbfc
[Upgrade Assistant] Fix functional test for shards check (#163438)
## Summary
Create a new functional config file that sets up elasticsearch configs
to have a low disk threshold and a low number of shards per node to test
for health checks and deprecations.

Previously this test failed because it seems that ES takes some time to
calculate the health checks hence the indicator critical issues are not
showing during the testing period (now we don't have flakiness since we
started the server with the indicators already in place) it also means
less `before` and `after` work inside the test cases.

Closes https://github.com/elastic/kibana/issues/160833

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2023-08-08 23:05:27 +03:00

691 lines
17 KiB
JavaScript

/*
* 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 { resolve } from 'path';
import { services } from './services';
import { pageObjects } from './page_objects';
// Docker image to use for Fleet API integration tests.
// This hash comes from the latest successful build of the Production Distribution of the Package Registry, for
// example: https://internal-ci.elastic.co/blue/organizations/jenkins/package_storage%2Findexing-job/detail/main/1884/pipeline/147.
// It should be updated any time there is a new package published.
export const dockerImage = 'docker.elastic.co/package-registry/distribution:lite';
// the default export of config files must be a config provider
// that returns an object with the projects config values
export default async function ({ readConfigFile }) {
const kibanaCommonConfig = await readConfigFile(
require.resolve('../../../test/common/config.js')
);
const kibanaFunctionalConfig = await readConfigFile(
require.resolve('../../../test/functional/config.base.js')
);
return {
services,
pageObjects,
servers: kibanaFunctionalConfig.get('servers'),
esTestCluster: {
license: 'trial',
from: 'snapshot',
serverArgs: ['path.repo=/tmp/', 'xpack.security.authc.api_key.enabled=true'],
},
kbnTestServer: {
...kibanaCommonConfig.get('kbnTestServer'),
serverArgs: [
...kibanaCommonConfig.get('kbnTestServer.serverArgs'),
'--status.allowAnonymous=true',
'--server.uuid=5b2de169-2785-441b-ae8c-186a1936b17d',
'--xpack.maps.showMapsInspectorAdapter=true',
'--xpack.maps.preserveDrawingBuffer=true',
'--xpack.security.encryptionKey="wuGNaIhoMpk5sO4UBxgr3NyW1sFcLgIf"', // server restarts should not invalidate active sessions
'--xpack.encryptedSavedObjects.encryptionKey="DkdXazszSCYexXqz4YktBGHCRkV6hyNK"',
'--xpack.discoverEnhanced.actions.exploreDataInContextMenu.enabled=true',
'--savedObjects.maxImportPayloadBytes=10485760', // for OSS test management/_import_objects,
'--savedObjects.allowHttpApiAccess=false', // override default to not allow hiddenFromHttpApis saved objects access to the http APIs see https://github.com/elastic/dev/issues/2200
],
},
uiSettings: {
defaults: {
'accessibility:disableAnimations': true,
'dateFormat:tz': 'UTC',
},
},
// the apps section defines the urls that
// `PageObjects.common.navigateTo(appKey)` will use.
// Merge urls for your plugin with the urls defined in
// Kibana's config in order to use this helper
apps: {
...kibanaFunctionalConfig.get('apps'),
lens: {
pathname: '/app/lens',
},
login: {
pathname: '/login',
},
monitoring: {
pathname: '/app/monitoring',
},
logstashPipelines: {
pathname: '/app/management/ingest/pipelines',
},
cases: {
pathname: '/app/management/insightsAndAlerting/cases/',
},
maps: {
pathname: '/app/maps',
},
graph: {
pathname: '/app/graph',
},
grokDebugger: {
pathname: '/app/dev_tools',
hash: '/grokdebugger',
},
searchProfiler: {
pathname: '/app/dev_tools',
hash: '/searchprofiler',
},
painlessLab: {
pathname: '/app/dev_tools',
hash: '/painless_lab',
},
spaceSelector: {
pathname: '/',
},
infraOps: {
pathname: '/app/metrics',
},
infraLogs: {
pathname: '/app/logs',
},
canvas: {
pathname: '/app/canvas',
hash: '/',
},
uptime: {
pathname: '/app/uptime',
},
fleet: {
pathname: '/app/fleet',
},
ml: {
pathname: '/app/ml',
},
roleMappings: {
pathname: '/app/management/security/role_mappings',
},
rollupJob: {
pathname: '/app/management/data/rollup_jobs',
},
apiKeys: {
pathname: '/app/management/security/api_keys',
},
licenseManagement: {
pathname: '/app/management/stack/license_management',
},
indexManagement: {
pathname: '/app/management/data/index_management',
},
indexLifecycleManagement: {
pathname: '/app/management/data/index_lifecycle_management',
},
ingestPipelines: {
pathname: '/app/management/ingest/ingest_pipelines',
},
snapshotRestore: {
pathname: '/app/management/data/snapshot_restore',
},
remoteClusters: {
pathname: '/app/management/data/remote_clusters',
},
crossClusterReplication: {
pathname: '/app/management/data/cross_cluster_replication',
},
apm: {
pathname: '/app/apm',
},
watcher: {
pathname: '/app/management/insightsAndAlerting/watcher/watches',
},
transform: {
pathname: '/app/management/data/transform',
},
reporting: {
pathname: '/app/management/insightsAndAlerting/reporting',
},
securitySolution: {
pathname: '/app/security',
},
observability: {
pathname: '/app/observability',
},
connectors: {
pathname: '/app/management/insightsAndAlerting/triggersActionsConnectors/',
},
triggersActions: {
pathname: '/app/management/insightsAndAlerting/triggersActions',
},
maintenanceWindows: {
pathname: '/app/management/insightsAndAlerting/maintenanceWindows',
},
},
suiteTags: {
...kibanaCommonConfig.get('suiteTags'),
exclude: [...kibanaCommonConfig.get('suiteTags').exclude, 'upgradeAssistant'],
},
// choose where screenshots should be saved
screenshots: {
directory: resolve(__dirname, 'screenshots'),
},
junit: {
reportName: 'Chrome X-Pack UI Functional Tests',
},
security: {
roles: {
test_monitoring: {
elasticsearch: {
cluster: ['monitor'],
},
},
test_logstash_reader: {
elasticsearch: {
cluster: [],
indices: [
{
names: ['logstash*'],
privileges: ['read', 'view_index_metadata'],
field_security: { grant: ['*'], except: [] },
},
],
run_as: [],
},
kibana: [],
},
global_canvas_all: {
kibana: [
{
feature: {
canvas: ['all'],
visualize: ['all'],
},
spaces: ['*'],
},
],
},
global_discover_all: {
kibana: [
{
feature: {
discover: ['all'],
},
spaces: ['*'],
},
],
},
global_dashboard_read: {
kibana: [
{
feature: {
dashboard: ['read'],
},
spaces: ['*'],
},
],
},
global_discover_read: {
kibana: [
{
feature: {
discover: ['read'],
},
spaces: ['*'],
},
],
},
global_visualize_read: {
kibana: [
{
feature: {
visualize: ['read'],
},
spaces: ['*'],
},
],
},
global_visualize_all: {
kibana: [
{
feature: {
visualize: ['all'],
},
spaces: ['*'],
},
],
},
global_dashboard_all: {
kibana: [
{
feature: {
dashboard: ['all'],
},
spaces: ['*'],
},
],
},
global_maps_all: {
kibana: [
{
feature: {
maps: ['all'],
},
spaces: ['*'],
},
],
},
global_maps_read: {
kibana: [
{
feature: {
maps: ['read'],
},
spaces: ['*'],
},
],
},
geoshape_data_reader: {
elasticsearch: {
indices: [
{
names: ['geo_shapes*'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
antimeridian_points_reader: {
elasticsearch: {
indices: [
{
names: ['antimeridian_points*'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
antimeridian_shapes_reader: {
elasticsearch: {
indices: [
{
names: ['antimeridian_shapes*'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
meta_for_geoshape_data_reader: {
elasticsearch: {
indices: [
{
names: ['meta_for_geo_shapes*'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
geoconnections_data_reader: {
elasticsearch: {
indices: [
{
names: ['connections*'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
test_logs_data_reader: {
elasticsearch: {
indices: [
{
names: ['test_data_stream'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
geoall_data_writer: {
elasticsearch: {
indices: [
{
names: ['*'],
privileges: ['create', 'read', 'view_index_metadata', 'monitor', 'create_index'],
},
],
},
},
global_index_pattern_management_all: {
kibana: [
{
feature: {
indexPatterns: ['all'],
},
spaces: ['*'],
},
],
},
global_devtools_read: {
elasticsearch: {
indices: [
{
names: ['*'],
privileges: ['read', 'all'],
},
],
},
kibana: [
{
feature: {
dev_tools: ['read'],
},
spaces: ['*'],
},
],
},
global_upgrade_assistant_role: {
elasticsearch: {
cluster: ['manage'],
},
kibana: [
{
feature: {
discover: ['read'],
},
spaces: ['*'],
},
],
},
// using this role even for remote clusters
global_ccr_role: {
elasticsearch: {
cluster: ['manage', 'manage_ccr'],
},
kibana: [
{
base: ['all'],
spaces: ['*'],
},
],
},
manage_rollups_role: {
elasticsearch: {
cluster: ['manage', 'manage_rollup'],
indices: [
{
names: ['*'],
privileges: ['read', 'delete', 'create_index', 'view_index_metadata'],
},
],
},
kibana: [
{
feature: {
discover: ['read'],
},
spaces: ['*'],
},
],
},
test_rollup_reader: {
elasticsearch: {
indices: [
{
names: ['rollup-*', 'regular-index*'],
privileges: ['read', 'view_index_metadata'],
},
],
},
},
// Kibana feature privilege isn't specific to advancedSetting. It can be anything. https://github.com/elastic/kibana/issues/35965
test_api_keys: {
elasticsearch: {
cluster: ['manage_security', 'manage_api_key'],
},
kibana: [
{
feature: {
advancedSettings: ['read'],
},
spaces: ['default'],
},
],
},
manage_security: {
elasticsearch: {
cluster: ['manage_security'],
},
},
cluster_security_manager: {
elasticsearch: {
cluster: ['manage_security'],
},
kibana: [
{
feature: {
advancedSettings: ['read'],
},
spaces: ['*'],
},
],
},
ccr_user: {
elasticsearch: {
cluster: ['manage', 'manage_ccr'],
},
},
// There is an issue open for follower_index_user permissions not working correctly
// in kibana.
// https://github.com/elastic/kibana/issues/143720
// follower_index_user: {
// elasticsearch: {
// cluster: ['monitor', 'manage', 'manage_ccr', 'transport_client', 'read_ccr', 'all'],
// indices: [
// {
// names: ['*'],
// privileges: [
// 'write',
// 'monitor',
// 'manage_follow_index',
// 'manage_leader_index',
// 'read',
// 'view_index_metadata',
// ],
// },
// ],
// },
// kibana: [
// {
// base: ['all'],
// spaces: ['*'],
// },
// ],
// },
manage_ilm: {
elasticsearch: {
cluster: ['manage_ilm'],
},
kibana: [
{
feature: {
advancedSettings: ['read'],
},
spaces: ['default'],
},
],
},
index_management_user: {
elasticsearch: {
cluster: ['monitor', 'manage_index_templates'],
indices: [
{
names: ['*'],
privileges: ['all'],
},
],
},
kibana: [
{
feature: {
advancedSettings: ['read'],
},
spaces: ['*'],
},
],
},
// https://www.elastic.co/guide/en/elasticsearch/reference/master/snapshots-register-repository.html#snapshot-repo-prereqs
snapshot_restore_user: {
elasticsearch: {
cluster: [
'monitor',
'manage_slm',
'cluster:admin/snapshot',
'cluster:admin/repository',
],
},
kibana: [
{
feature: {
advancedSettings: ['read'],
},
spaces: ['*'],
},
],
},
ingest_pipelines_user: {
elasticsearch: {
cluster: ['manage_pipeline', 'cluster:monitor/nodes/info'],
},
kibana: [
{
feature: {
advancedSettings: ['read'],
},
spaces: ['*'],
},
],
},
license_management_user: {
elasticsearch: {
cluster: ['manage'],
},
},
logstash_read_user: {
elasticsearch: {
cluster: ['manage_logstash_pipelines'],
},
},
remote_clusters_user: {
elasticsearch: {
cluster: ['manage'],
},
},
global_alerts_logs_all_else_read: {
kibana: [
{
feature: {
apm: ['read'],
logs: ['all'],
infrastructure: ['read'],
},
spaces: ['*'],
},
],
elasticsearch: {
indices: [
{
names: ['*'],
privileges: ['all'],
},
],
},
},
slo_all: {
kibana: [
{
feature: {
slo: ['all'],
},
spaces: ['*'],
},
],
elasticsearch: {
cluster: ['all'],
indices: [
{
names: ['*'],
privileges: ['all'],
},
],
},
},
slo_read_only: {
kibana: [
{
feature: {
slo: ['read'],
},
spaces: ['*'],
},
],
elasticsearch: {
cluster: ['all'],
indices: [
{
names: ['*'],
privileges: ['all'],
},
],
},
},
},
defaultRoles: ['superuser'],
},
};
}