Skip to content

Commit

Permalink
remove duplicates and improve index pattern function readability
Browse files Browse the repository at this point in the history
  • Loading branch information
crespocarlos committed Sep 5, 2022
1 parent f06de09 commit 15f1925
Show file tree
Hide file tree
Showing 2 changed files with 209 additions and 162 deletions.
345 changes: 187 additions & 158 deletions x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@

import { DS_INDEX_PATTERN_TYPES } from '../../../common/constants';
import { MonitoringConfig } from '../..';
import { getNewIndexPatterns } from './get_index_patterns';
import {
getElasticsearchDataset,
getKibanaDataset,
getLogstashDataset,
getNewIndexPatterns,
} from './get_index_patterns';

const getConfigWithCcs = (ccsEnabled: boolean) => {
return {
Expand All @@ -23,174 +28,198 @@ const getConfigWithCcs = (ccsEnabled: boolean) => {
};

type TestTuple = [DS_INDEX_PATTERN_TYPES | undefined, string];
describe('getNewIndexPatterns', () => {
beforeEach(() => {
jest.resetModules();
});
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns local elasticsearch index patterns when ccs is enabled (default true) and no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-es-8-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-8-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns ecs only elasticsearch index patterns when specifying ecsLegacyOnly: true and type %s',
(type, expected) => {

describe('getIndexPattern', () => {
describe('getNewIndexPatterns', () => {
beforeEach(() => {
jest.resetModules();
});
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns local elasticsearch index patterns when ccs is enabled (default true) and no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-es-8-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-8-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns ecs only elasticsearch index patterns when specifying ecsLegacyOnly: true and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'elasticsearch',
ecsLegacyOnly: true,
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-kibana-*,metrics-kibana.stack_monitoring.*-*'],
['metrics', '.monitoring-kibana-*,metrics-kibana.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-kibana.*-*'],
])(
'returns local kibana index patterns when ccs is enabled with no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'kibana',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-logstash-*,metrics-logstash.stack_monitoring.*-*'],
['metrics', '.monitoring-logstash-*,metrics-logstash.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-logstash.*-*'],
])(
'returns logstash index patterns when ccs is enabled and no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'logstash',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-beats-*,metrics-beats.stack_monitoring.*-*'],
['metrics', '.monitoring-beats-*,metrics-beats.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-beats.*-*'],
])(
'returns beats index patterns when ccs is enabled and no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'beats',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.cluster_stats-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.cluster_stats-*'],
['logs', 'filebeat-*,logs-elasticsearch.cluster_stats-*'],
])('returns elasticsearch index patterns with dataset and type %s', (type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'elasticsearch',
ecsLegacyOnly: true,
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-kibana-*,metrics-kibana.stack_monitoring.*-*'],
['metrics', '.monitoring-kibana-*,metrics-kibana.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-kibana.*-*'],
])(
'returns local kibana index patterns when ccs is enabled with no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'kibana',
dataset: 'cluster_stats',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-logstash-*,metrics-logstash.stack_monitoring.*-*'],
['metrics', '.monitoring-logstash-*,metrics-logstash.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-logstash.*-*'],
])(
'returns logstash index patterns when ccs is enabled and no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'logstash',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-beats-*,metrics-beats.stack_monitoring.*-*'],
['metrics', '.monitoring-beats-*,metrics-beats.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-beats.*-*'],
])(
'returns beats index patterns when ccs is enabled and no ccs payload and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'beats',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.cluster_stats-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.cluster_stats-*'],
['logs', 'filebeat-*,logs-elasticsearch.cluster_stats-*'],
])('returns elasticsearch index patterns with dataset and type %s', (type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
moduleType: 'elasticsearch',
dataset: 'cluster_stats',
});
expect(indexPatterns).toBe(expected);
});
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns without ccs prefixes when ccs is disabled and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(false),
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns without ccs prefixes when ccs is disabled but ccs request payload has a value and type %s',
(type, expected) => {
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns without ccs prefixes when ccs is disabled and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(false),
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', '.monitoring-es-*,metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'filebeat-*,logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns without ccs prefixes when ccs is disabled but ccs request payload has a value and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(false),
ccs: 'myccs',
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, 'myccs:.monitoring-es-*,myccs:metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', 'myccs:.monitoring-es-*,myccs:metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'myccs:filebeat-*,myccs:logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns with custom ccs prefixes when ccs is enabled and ccs request payload has a value and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
ccs: 'myccs',
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[
undefined,
'*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.stack_monitoring.*-*,metrics-elasticsearch.stack_monitoring.*-*',
],
[
'metrics',
'*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.stack_monitoring.*-*,metrics-elasticsearch.stack_monitoring.*-*',
],
['logs', '*:filebeat-*,filebeat-*,*:logs-elasticsearch.*-*,logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns with ccs prefixes and local index patterns when ccs is enabled and ccs request payload value is * and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
ccs: '*',
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);

it('returns logs-* index patterns without dataset and namespace', () => {
const indexPatterns = getNewIndexPatterns({
type,
type: 'logs',
config: getConfigWithCcs(false),
ccs: 'myccs',
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[undefined, 'myccs:.monitoring-es-*,myccs:metrics-elasticsearch.stack_monitoring.*-*'],
['metrics', 'myccs:.monitoring-es-*,myccs:metrics-elasticsearch.stack_monitoring.*-*'],
['logs', 'myccs:filebeat-*,myccs:logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns with custom ccs prefixes when ccs is enabled and ccs request payload has a value and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
ccs: 'myccs',
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
it.each<TestTuple>([
[
undefined,
'*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.stack_monitoring.*-*,metrics-elasticsearch.stack_monitoring.*-*',
],
[
'metrics',
'*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.stack_monitoring.*-*,metrics-elasticsearch.stack_monitoring.*-*',
],
['logs', '*:filebeat-*,filebeat-*,*:logs-elasticsearch.*-*,logs-elasticsearch.*-*'],
])(
'returns elasticsearch index patterns with ccs prefixes and local index patterns when ccs is enabled and ccs request payload value is * and type %s',
(type, expected) => {
const indexPatterns = getNewIndexPatterns({
type,
config: getConfigWithCcs(true),
ccs: '*',
moduleType: 'elasticsearch',
});
expect(indexPatterns).toBe(expected);
}
);
expect(indexPatterns).toBe('filebeat-*,logs-*.*-*');
});
});

describe('getElasticsearchDataset', () => {
it('returns elasticsearch metrics dataset', () => {
const indexPatterns = getElasticsearchDataset('cluster_stats');
expect(indexPatterns).toBe('elasticsearch.stack_monitoring.cluster_stats');
});
});

describe('getKibanaDataset', () => {
it('returns kibana metrics dataset', () => {
const indexPatterns = getKibanaDataset('stats');
expect(indexPatterns).toBe('kibana.stack_monitoring.stats');
});
});

it('returns logs-* index patterns without dataset and namespace', () => {
const indexPatterns = getNewIndexPatterns({
type: 'logs',
config: getConfigWithCcs(false),
describe('getLogstashDataset', () => {
it('returns logstash metrics dataset', () => {
const indexPatterns = getLogstashDataset('node_stats');
expect(indexPatterns).toBe('logstash.stack_monitoring.node_stats');
});
expect(indexPatterns).toBe('filebeat-*,logs-*.*-*');
});
});
Loading

0 comments on commit 15f1925

Please sign in to comment.