Skip to content

Commit

Permalink
[8.x] [ML] Forecast api delete test: add retry to ensure forecast has…
Browse files Browse the repository at this point in the history
… time to complete before deletion (#197111) (#197257)

# Backport

This will backport the following commits from `main` to `8.x`:
- [[ML] Forecast api delete test: add retry to ensure forecast has time
to complete before deletion
(#197111)](#197111)

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

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

<!--BACKPORT [{"author":{"name":"Melissa
Alvarez","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-10-22T14:36:59Z","message":"[ML]
Forecast api delete test: add retry to ensure forecast has time to
complete before deletion (#197111)\n\n## Summary\r\n\r\nFixes
https://github.com/elastic/kibana/issues/195602\r\n\r\nThis PR adds a
retry for 10 seconds to the deleteForecast utility\r\nfunction to ensure
the forecast has completed before a deletion attempt\r\nis
made.\r\n\r\nFlaky
test:\r\nhttps://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7201\r\n\r\n\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [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- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)","sha":"0c95fa3f2a3fc68c091ca9ccfc753bdba7daddd5","branchLabelMapping":{"^v9.0.0$":"main","^v8.17.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":[":ml","release_note:skip","test-api-integration","v9.0.0","v8.16.0","backport:version","v8.17.0"],"title":"[ML]
Forecast api delete test: add retry to ensure forecast has time to
complete before
deletion","number":197111,"url":"https://github.com/elastic/kibana/pull/197111","mergeCommit":{"message":"[ML]
Forecast api delete test: add retry to ensure forecast has time to
complete before deletion (#197111)\n\n## Summary\r\n\r\nFixes
https://github.com/elastic/kibana/issues/195602\r\n\r\nThis PR adds a
retry for 10 seconds to the deleteForecast utility\r\nfunction to ensure
the forecast has completed before a deletion attempt\r\nis
made.\r\n\r\nFlaky
test:\r\nhttps://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7201\r\n\r\n\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [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- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)","sha":"0c95fa3f2a3fc68c091ca9ccfc753bdba7daddd5"}},"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/197111","number":197111,"mergeCommit":{"message":"[ML]
Forecast api delete test: add retry to ensure forecast has time to
complete before deletion (#197111)\n\n## Summary\r\n\r\nFixes
https://github.com/elastic/kibana/issues/195602\r\n\r\nThis PR adds a
retry for 10 seconds to the deleteForecast utility\r\nfunction to ensure
the forecast has completed before a deletion attempt\r\nis
made.\r\n\r\nFlaky
test:\r\nhttps://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7201\r\n\r\n\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [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- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)","sha":"0c95fa3f2a3fc68c091ca9ccfc753bdba7daddd5"}},{"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: Melissa Alvarez <[email protected]>
  • Loading branch information
kibanamachine and alvarezmelissa87 authored Oct 22, 2024
1 parent 5ececbb commit 236d800
Showing 1 changed file with 17 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export default ({ getService }: FtrProviderContext) => {
const supertest = getService('supertestWithoutAuth');
const ml = getService('ml');
const spacesService = getService('spaces');
const retry = getService('retry');

const forecastJobId = 'fq_single_forecast';
const forecastJobDatafeedId = `datafeed-${forecastJobId}`;
Expand Down Expand Up @@ -45,21 +46,22 @@ export default ({ getService }: FtrProviderContext) => {
user: USER,
expectedStatusCode: number
) {
const { body, status } = await supertest
.delete(
`${
space ? `/s/${space}` : ''
}/internal/ml/anomaly_detectors/${jobId}/_forecast/${forecastId}`
)
.auth(user, ml.securityCommon.getPasswordForUser(user))
.set(getCommonRequestHeader('1'));
ml.api.assertResponseStatusCode(expectedStatusCode, status, body);

return body;
await retry.tryForTime(10000, async () => {
const { body, status } = await supertest
.delete(
`${
space ? `/s/${space}` : ''
}/internal/ml/anomaly_detectors/${jobId}/_forecast/${forecastId}`
)
.auth(user, ml.securityCommon.getPasswordForUser(user))
.set(getCommonRequestHeader('1'));
ml.api.assertResponseStatusCode(expectedStatusCode, status, body);

return body;
});
}

// Failing see: https://github.com/elastic/kibana/issues/195602
describe.skip('POST anomaly_detectors _forecast with spaces', function () {
describe('POST anomaly_detectors _forecast with spaces', function () {
let forecastId: string;
before(async () => {
await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote');
Expand Down Expand Up @@ -110,11 +112,11 @@ export default ({ getService }: FtrProviderContext) => {
});

it('should not delete forecast for user without permissions', async () => {
await await deleteForecast(forecastJobId, forecastId, idSpace1, USER.ML_VIEWER, 403);
await deleteForecast(forecastJobId, forecastId, idSpace1, USER.ML_VIEWER, 403);
});

it('should delete forecast for user with permissions', async () => {
await await deleteForecast(forecastJobId, forecastId, idSpace1, USER.ML_POWERUSER, 200);
await deleteForecast(forecastJobId, forecastId, idSpace1, USER.ML_POWERUSER, 200);
});

it('should not run forecast for open job with invalid duration', async () => {
Expand Down

0 comments on commit 236d800

Please sign in to comment.