Skip to content

Commit

Permalink
[8.x] [Discover] Fix loading data views in ES|QL mode (#199099) (#199207
Browse files Browse the repository at this point in the history
)

# Backport

This will backport the following commits from `main` to `8.x`:
- [[Discover] Fix loading data views in ES|QL mode
(#199099)](#199099)

<!--- Backport version: 9.4.3 -->

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

<!--BACKPORT [{"author":{"name":"Matthias
Wilhelm","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-11-06T18:13:33Z","message":"[Discover]
Fix loading data views in ES|QL mode (#199099)\n\n- Closes
https://github.com/elastic/kibana/issues/199065\r\n\r\n##
Summary\r\n\r\nThis PR makes sure that data views are loaded so user can
view them\r\nafter switching from ES|QL mode to data view
mode.\r\n\r\nLooks like it was introduced
in\r\nhttps://github.com//pull/195670\r\n\r\n###
Testing\r\n\r\nOn your local instance having `kibana_sample_data_logs`
installed\r\n\r\n* Open a link to an ES|QL
query\r\n[link](http://localhost:5601/xot/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),dataSource:(dataViewId:e3465e67bdeced2befff9f9dca7ecf9c48504cad68a10efd881f4c7dd5ade28a,type:dataView),filters:!(),interval:auto,query:(language:kuery,query:''),sort:!(!(timestamp,desc))))\r\n*
Switch to classic\r\n* Open the DataView Picker, to see a list of
DataViews, before this fix\r\nthere were none\r\n\r\n###
Checklist\r\n\r\n- [x] [Unit or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common
scenarios\r\n\r\n---------\r\n\r\nCo-authored-by: Julia Rechkunova
<[email protected]>\r\nCo-authored-by: Julia Rechkunova
<[email protected]>","sha":"08b83c55f64bc250a4b6d5909cfc2e46003e9751","branchLabelMapping":{"^v9.0.0$":"main","^v8.17.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Feature:Discover","release_note:skip","v9.0.0","Team:DataDiscovery","v8.16.0","backport:version","v8.17.0"],"title":"[Discover]
Fix loading data views in ES|QL
mode","number":199099,"url":"https://github.com/elastic/kibana/pull/199099","mergeCommit":{"message":"[Discover]
Fix loading data views in ES|QL mode (#199099)\n\n- Closes
https://github.com/elastic/kibana/issues/199065\r\n\r\n##
Summary\r\n\r\nThis PR makes sure that data views are loaded so user can
view them\r\nafter switching from ES|QL mode to data view
mode.\r\n\r\nLooks like it was introduced
in\r\nhttps://github.com//pull/195670\r\n\r\n###
Testing\r\n\r\nOn your local instance having `kibana_sample_data_logs`
installed\r\n\r\n* Open a link to an ES|QL
query\r\n[link](http://localhost:5601/xot/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),dataSource:(dataViewId:e3465e67bdeced2befff9f9dca7ecf9c48504cad68a10efd881f4c7dd5ade28a,type:dataView),filters:!(),interval:auto,query:(language:kuery,query:''),sort:!(!(timestamp,desc))))\r\n*
Switch to classic\r\n* Open the DataView Picker, to see a list of
DataViews, before this fix\r\nthere were none\r\n\r\n###
Checklist\r\n\r\n- [x] [Unit or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common
scenarios\r\n\r\n---------\r\n\r\nCo-authored-by: Julia Rechkunova
<[email protected]>\r\nCo-authored-by: Julia Rechkunova
<[email protected]>","sha":"08b83c55f64bc250a4b6d5909cfc2e46003e9751"}},"sourceBranch":"main","suggestedTargetBranches":["8.16","8.x"],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/199099","number":199099,"mergeCommit":{"message":"[Discover]
Fix loading data views in ES|QL mode (#199099)\n\n- Closes
https://github.com/elastic/kibana/issues/199065\r\n\r\n##
Summary\r\n\r\nThis PR makes sure that data views are loaded so user can
view them\r\nafter switching from ES|QL mode to data view
mode.\r\n\r\nLooks like it was introduced
in\r\nhttps://github.com//pull/195670\r\n\r\n###
Testing\r\n\r\nOn your local instance having `kibana_sample_data_logs`
installed\r\n\r\n* Open a link to an ES|QL
query\r\n[link](http://localhost:5601/xot/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),dataSource:(dataViewId:e3465e67bdeced2befff9f9dca7ecf9c48504cad68a10efd881f4c7dd5ade28a,type:dataView),filters:!(),interval:auto,query:(language:kuery,query:''),sort:!(!(timestamp,desc))))\r\n*
Switch to classic\r\n* Open the DataView Picker, to see a list of
DataViews, before this fix\r\nthere were none\r\n\r\n###
Checklist\r\n\r\n- [x] [Unit or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common
scenarios\r\n\r\n---------\r\n\r\nCo-authored-by: Julia Rechkunova
<[email protected]>\r\nCo-authored-by: Julia Rechkunova
<[email protected]>","sha":"08b83c55f64bc250a4b6d5909cfc2e46003e9751"}},{"branch":"8.16","label":"v8.16.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.x","label":"v8.17.0","branchLabelMappingKey":"^v8.17.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Matthias Wilhelm <[email protected]>
  • Loading branch information
kibanamachine and kertal authored Nov 6, 2024
1 parent b71b0b3 commit 4234be1
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,10 @@ export function DiscoverMainRoute({
const { dataSource } = stateContainer.appState.getState();
const isEsqlQuery = isDataSourceType(dataSource, DataSourceType.Esql);

// ES|QL should work without data views
// Given we have a saved search id, we can skip the data/data view check, too
// A given nextDataView is provided by the user, and therefore we can skip the data/data view check

if (savedSearchId || isEsqlQuery || nextDataView) {
if (!isEsqlQuery) {
await stateContainer.actions.loadDataViewList();
}
// Although ES|QL doesn't need a data view, we still need to load the data view list to
// ensure the data view is available for the user to switch to classic mode
await stateContainer.actions.loadDataViewList();
return true;
}

Expand Down
37 changes: 29 additions & 8 deletions test/functional/apps/discover/esql/_esql_view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const find = getService('find');
const esql = getService('esql');
const dashboardAddPanel = getService('dashboardAddPanel');
const { common, discover, dashboard, header, timePicker, unifiedFieldList } = getPageObjects([
'common',
'discover',
'dashboard',
'header',
'timePicker',
'unifiedFieldList',
]);
const dataViews = getService('dataViews');
const { common, discover, dashboard, header, timePicker, unifiedFieldList, unifiedSearch } =
getPageObjects([
'common',
'discover',
'dashboard',
'header',
'timePicker',
'unifiedFieldList',
'unifiedSearch',
]);

const defaultSettings = {
defaultIndex: 'logstash-*',
Expand Down Expand Up @@ -305,6 +308,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await testSubjects.existOrFail('discover-esql-to-dataview-modal');
});
});

it('should show available data views after switching to classic mode', async () => {
await discover.selectTextBaseLang();
await header.waitUntilLoadingHasFinished();
await discover.waitUntilSearchingHasFinished();

await browser.refresh();
await header.waitUntilLoadingHasFinished();
await discover.waitUntilSearchingHasFinished();
await unifiedSearch.switchToDataViewMode();
await header.waitUntilLoadingHasFinished();
await discover.waitUntilSearchingHasFinished();
const availableDataViews = await unifiedSearch.getDataViewList(
'discover-dataView-switch-link'
);
expect(availableDataViews).to.eql(['kibana_sample_data_flights', 'logstash-*']);
await dataViews.switchToAndValidate('kibana_sample_data_flights');
});
});

describe('inspector', () => {
Expand Down
28 changes: 28 additions & 0 deletions test/functional/page_objects/unified_search_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,28 @@ export class UnifiedSearchPageObject extends FtrService {
);
}

public async getDataViewList(switchButtonSelector: string) {
await this.testSubjects.click(switchButtonSelector);

await this.retry.waitFor(
'wait for popover',
async () => await this.testSubjects.exists('indexPattern-switcher')
);

const indexPatternSwitcher = await this.testSubjects.find('indexPattern-switcher', 500);
const availableDataViews = await Promise.all(
(
await indexPatternSwitcher.findAllByCssSelector('.euiSelectableListItem')
).map(async (item) => {
return await item.getAttribute('title');
})
);

await this.testSubjects.click(switchButtonSelector);

return availableDataViews;
}

public async getSelectedDataView(switchButtonSelector: string) {
let visibleText = '';

Expand All @@ -46,6 +68,12 @@ export class UnifiedSearchPageObject extends FtrService {

public async switchToDataViewMode() {
await this.testSubjects.click('switch-to-dataviews');
await this.retry.waitFor('the modal to open', async () => {
return await this.testSubjects.exists('discover-esql-to-dataview-modal');
});
await this.testSubjects.click('discover-esql-to-dataview-no-save-btn');
await this.retry.waitFor('the modal to close', async () => {
return !(await this.testSubjects.exists('discover-esql-to-dataview-modal'));
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const find = getService('find');
const esql = getService('esql');
const dashboardAddPanel = getService('dashboardAddPanel');
const dataViews = getService('dataViews');
const PageObjects = getPageObjects([
'svlCommonPage',
'common',
Expand All @@ -29,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
'header',
'timePicker',
'unifiedFieldList',
'unifiedSearch',
]);

const defaultSettings = {
Expand Down Expand Up @@ -311,6 +313,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await testSubjects.existOrFail('discover-esql-to-dataview-modal');
});
});

it('should show available data views after switching to classic mode', async () => {
await PageObjects.discover.selectTextBaseLang();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.discover.waitUntilSearchingHasFinished();

await browser.refresh();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.discover.waitUntilSearchingHasFinished();
await PageObjects.unifiedSearch.switchToDataViewMode();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.discover.waitUntilSearchingHasFinished();
const availableDataViews = await PageObjects.unifiedSearch.getDataViewList(
'discover-dataView-switch-link'
);
expect(availableDataViews).to.eql(['kibana_sample_data_flights', 'logstash-*']);
await dataViews.switchToAndValidate('kibana_sample_data_flights');
});
});

describe('inspector', () => {
Expand Down

0 comments on commit 4234be1

Please sign in to comment.