mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
[Data Streams] Fix forward-compatibility api test failures (#224795)
Fixes https://github.com/elastic/kibana/issues/223990 ## Summary This PR fixes the forward-compatibility test for index mode, which failed because the index mode was added to Get Data Streams API in 8.19 and 9.1 (see https://github.com/elastic/elasticsearch/pull/122486), so if Kibana 8.19 is run with Es 9.0, the index mode is always displayed as "Standard" because Es doesn't return an index mode field. In this PR, we separate all index mode-related tests into a separate file, and only run it for Es versions 8.19 or 9.1+. This was also fixed for functional tests in https://github.com/elastic/kibana/pull/223129 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
b82ab8acb8
commit
493ca9f106
3 changed files with 92 additions and 69 deletions
|
@ -14,7 +14,6 @@ import { datastreamsHelpers } from './lib/datastreams.helpers';
|
|||
|
||||
export default function ({ getService }: FtrProviderContext) {
|
||||
const supertest = getService('supertest');
|
||||
const es = getService('es');
|
||||
|
||||
const {
|
||||
createDataStream,
|
||||
|
@ -170,74 +169,6 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
indexMode: 'standard',
|
||||
});
|
||||
});
|
||||
|
||||
describe('index mode', () => {
|
||||
it('correctly returns index mode property based on index settings', async () => {
|
||||
const logsdbDataStreamName = 'logsdb-test-data-stream';
|
||||
const indexMode = 'logsdb';
|
||||
|
||||
await createDataStream(logsdbDataStreamName, indexMode);
|
||||
|
||||
const { body: dataStream } = await supertest
|
||||
.get(`${API_BASE_PATH}/data_streams/${logsdbDataStreamName}`)
|
||||
.set('kbn-xsrf', 'xxx')
|
||||
.expect(200);
|
||||
|
||||
expect(dataStream.indexMode).to.eql(indexMode);
|
||||
|
||||
await deleteDataStream(logsdbDataStreamName);
|
||||
});
|
||||
|
||||
describe('index mode of logs-*-* data streams', () => {
|
||||
const logsdbDataStreamName = 'logs-test-ds';
|
||||
|
||||
before(async () => {
|
||||
await createDataStream(logsdbDataStreamName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await deleteDataStream(logsdbDataStreamName);
|
||||
});
|
||||
|
||||
const logsdbSettings: Array<{
|
||||
enabled: boolean | null;
|
||||
prior_logs_usage: boolean;
|
||||
indexMode: string;
|
||||
}> = [
|
||||
{ enabled: true, prior_logs_usage: true, indexMode: 'logsdb' },
|
||||
{ enabled: false, prior_logs_usage: true, indexMode: 'standard' },
|
||||
// In stateful Kibana, if prior_logs_usage is set to true, the cluster.logsdb.enabled setting is false by default, so standard index mode
|
||||
{ enabled: null, prior_logs_usage: true, indexMode: 'standard' },
|
||||
// In stateful Kibana, if prior_logs_usage is set to false, the cluster.logsdb.enabled setting is true by default, so logsdb index mode
|
||||
{ enabled: null, prior_logs_usage: false, indexMode: 'logsdb' },
|
||||
];
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
logsdbSettings.forEach(({ enabled, prior_logs_usage, indexMode }) => {
|
||||
it(`returns ${indexMode} index mode if logsdb.enabled setting is ${enabled} and logs.prior_logs_usage is ${prior_logs_usage}`, async () => {
|
||||
await es.cluster.putSettings({
|
||||
persistent: {
|
||||
cluster: {
|
||||
logsdb: {
|
||||
enabled,
|
||||
},
|
||||
},
|
||||
logsdb: {
|
||||
prior_logs_usage,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const { body: dataStream } = await supertest
|
||||
.get(`${API_BASE_PATH}/data_streams/${logsdbDataStreamName}`)
|
||||
.set('kbn-xsrf', 'xxx')
|
||||
.expect(200);
|
||||
|
||||
expect(dataStream.indexMode).to.eql(indexMode);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Update', () => {
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* 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 expect from '@kbn/expect';
|
||||
|
||||
import { FtrProviderContext } from '../../../ftr_provider_context';
|
||||
import { API_BASE_PATH } from './constants';
|
||||
import { datastreamsHelpers } from './lib/datastreams.helpers';
|
||||
|
||||
export default function ({ getService }: FtrProviderContext) {
|
||||
const supertest = getService('supertest');
|
||||
const es = getService('es');
|
||||
|
||||
const { createDataStream, deleteDataStream } = datastreamsHelpers(getService);
|
||||
|
||||
describe('Data streams index mode', function () {
|
||||
// This mutes the forward-compatibility test with Elasticsearch, 8.19 kibana and 9.0 ES.
|
||||
// They are not expected to work together since the index mode field was added to
|
||||
// the Get Data Streams API in 8.19 and 9.1, but not in 9.0.
|
||||
this.onlyEsVersion('8.19 || >=9.1');
|
||||
it('correctly returns index mode property based on index settings', async () => {
|
||||
const logsdbDataStreamName = 'logsdb-test-data-stream';
|
||||
const indexMode = 'logsdb';
|
||||
|
||||
await createDataStream(logsdbDataStreamName, indexMode);
|
||||
|
||||
const { body: dataStream } = await supertest
|
||||
.get(`${API_BASE_PATH}/data_streams/${logsdbDataStreamName}`)
|
||||
.set('kbn-xsrf', 'xxx')
|
||||
.expect(200);
|
||||
|
||||
expect(dataStream.indexMode).to.eql(indexMode);
|
||||
|
||||
await deleteDataStream(logsdbDataStreamName);
|
||||
});
|
||||
|
||||
describe('index mode of logs-*-* data streams', () => {
|
||||
const logsdbDataStreamName = 'logs-test-ds';
|
||||
|
||||
before(async () => {
|
||||
await createDataStream(logsdbDataStreamName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await deleteDataStream(logsdbDataStreamName);
|
||||
});
|
||||
|
||||
const logsdbSettings: Array<{
|
||||
enabled: boolean | null;
|
||||
prior_logs_usage: boolean;
|
||||
indexMode: string;
|
||||
}> = [
|
||||
{ enabled: true, prior_logs_usage: true, indexMode: 'logsdb' },
|
||||
{ enabled: false, prior_logs_usage: true, indexMode: 'standard' },
|
||||
// In stateful Kibana, if prior_logs_usage is set to true, the cluster.logsdb.enabled setting is false by default, so standard index mode
|
||||
{ enabled: null, prior_logs_usage: true, indexMode: 'standard' },
|
||||
// In stateful Kibana, if prior_logs_usage is set to false, the cluster.logsdb.enabled setting is true by default, so logsdb index mode
|
||||
{ enabled: null, prior_logs_usage: false, indexMode: 'logsdb' },
|
||||
];
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
logsdbSettings.forEach(({ enabled, prior_logs_usage, indexMode }) => {
|
||||
it(`returns ${indexMode} index mode if logsdb.enabled setting is ${enabled} and logs.prior_logs_usage is ${prior_logs_usage}`, async () => {
|
||||
await es.cluster.putSettings({
|
||||
persistent: {
|
||||
cluster: {
|
||||
logsdb: {
|
||||
enabled,
|
||||
},
|
||||
},
|
||||
logsdb: {
|
||||
prior_logs_usage,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const { body: dataStream } = await supertest
|
||||
.get(`${API_BASE_PATH}/data_streams/${logsdbDataStreamName}`)
|
||||
.set('kbn-xsrf', 'xxx')
|
||||
.expect(200);
|
||||
|
||||
expect(dataStream.indexMode).to.eql(indexMode);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
|
@ -14,6 +14,7 @@ export default function ({ loadTestFile }: FtrProviderContext) {
|
|||
loadTestFile(require.resolve('./settings'));
|
||||
loadTestFile(require.resolve('./stats'));
|
||||
loadTestFile(require.resolve('./data_streams'));
|
||||
loadTestFile(require.resolve('./data_streams_index_mode'));
|
||||
loadTestFile(require.resolve('./templates'));
|
||||
loadTestFile(require.resolve('./component_templates'));
|
||||
loadTestFile(require.resolve('./cluster_nodes'));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue