-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[APM] Optimize API test order #88654
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very excited to see this exploration, I've tried to do something similar many times but get caught up in the details and fear of defining a new interface around Mocha (and the inevitable cries about custom interfaces) but I hope this exploration will lead to some info we can apply to a solution provided by the FTR in the future.
PS: I wouldn't complain if you split the FTR changes out into a separate PR, but they look good to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great. Works as advertised.
Looks like the jest failures are related to your changes so ok to merge once we're green.
Thanks for doing this.
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata'; | ||
import { FtrProviderContext } from '../../../../common/ftr_provider_context'; | ||
import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; | ||
import { FtrProviderContext } from '../../common/ftr_provider_context'; | ||
|
||
export default function ApiTest({ getService }: FtrProviderContext) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: Some of these are ApiTest
, some are apiTest
, and some are somethingApiTest
. I prefer lowercase, but it doesn't actually make a difference. Looks like you mostly are preserving what is previously there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great!
@elasticmachine merge upstream |
@spalger I had to make some changes unfortunately to make it work:
Probably good if you have another look at the changes? |
@elasticmachine merge upstream |
💚 Build SucceededMetrics [docs]
History
To update your PR or re-run it, just comment with: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code looks good, double checked that all tests are running and I'm seeing everything where it should be, but it looks like we might be executing a lot more tests than expected.
Based on the numbers at https://kibana-ci.elastic.co/job/elastic+kibana+pipeline-pull-request/101001/testReport/ and compared to the test results from the master build of f5e869189b0bbf242637a2fb8f06c1e5e74633b7 (which was merged into this PR most recently) There are now 68 new tests in "APM API integration tests (basic)", and 158 new tests in "X-Pack APM API integration tests (trial)". If these numbers look right to you then LGTM!
@spalger I think that's correct, we're registering all tests now but skipping those that are not applicable. The new (skipped) tests in basic are the trial tests, and vice versa. |
Ah, that makes sense. Would be ideal to skip registering them all together but I get the approach. |
Co-authored-by: Kibana Machine <[email protected]>
Co-authored-by: Kibana Machine <[email protected]> Co-authored-by: Kibana Machine <[email protected]>
…y-tests * 'master' of github.com:elastic/kibana: (276 commits) [Telemetry] Settings Collector: redact sensitive reported values (elastic#88675) [CI] Combines Jest test jobs (elastic#85850) [Upgrade Assistant] Migrate server to new es-js client (elastic#89207) Migrate maps_legacy, maps_oss, region_map, and tile_map plugions to TS projects (elastic#89351) [Vega Docs] Add experimental flag on the vega maps title (elastic#89402) Increase the time needed to locate the save viz toast (elastic#89301) [Enterprise Search] Add links to doc links service (elastic#89260) Fixed regex bug in Safari (elastic#89399) [Lens] Fix indexpattern checks for missing references (elastic#88840) [Lens] Clean up usage collector (elastic#89109) update apm index pattern (elastic#89395) [APM] Upgrade ES client (elastic#86594) Enable v2 so migrations, disable in FTR tests (elastic#89297) [Search Sessions] Make search session indicator UI opt-in, refactor per-app capabilities (elastic#88699) Cleanup OSS code from visualizations wizard (elastic#89092) [APM] Optimize API test order (elastic#88654) Rename conversion function, extract to module scope and add tests. (elastic#89018) [core.logging] Add ops logs to the KP logging system (elastic#88070) chore(NA): improve ts build refs performance on kbn bootstrap (elastic#89333) skip flaky suite (elastic#89379) ... # Conflicts: # x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx # x-pack/test/accessibility/config.ts
…ana into task-manager/shift-on-trend * 'task-manager/shift-on-trend' of github.com:gmmorris/kibana: (74 commits) [Metrics UI] Fix Host Overview boxes in Host Detail page (elastic#89299) [Telemetry] Settings Collector: redact sensitive reported values (elastic#88675) [CI] Combines Jest test jobs (elastic#85850) [Upgrade Assistant] Migrate server to new es-js client (elastic#89207) Migrate maps_legacy, maps_oss, region_map, and tile_map plugions to TS projects (elastic#89351) [Vega Docs] Add experimental flag on the vega maps title (elastic#89402) Increase the time needed to locate the save viz toast (elastic#89301) [Enterprise Search] Add links to doc links service (elastic#89260) Fixed regex bug in Safari (elastic#89399) [Lens] Fix indexpattern checks for missing references (elastic#88840) [Lens] Clean up usage collector (elastic#89109) update apm index pattern (elastic#89395) [APM] Upgrade ES client (elastic#86594) Enable v2 so migrations, disable in FTR tests (elastic#89297) [Search Sessions] Make search session indicator UI opt-in, refactor per-app capabilities (elastic#88699) Cleanup OSS code from visualizations wizard (elastic#89092) [APM] Optimize API test order (elastic#88654) Rename conversion function, extract to module scope and add tests. (elastic#89018) [core.logging] Add ops logs to the KP logging system (elastic#88070) chore(NA): improve ts build refs performance on kbn bootstrap (elastic#89333) ...
Conditionally run API tests (depending on which configuration is active), and run them in the most efficient order to minimize time spent loading/unloading archives.
For the trial tests, total time goes from 8m to 2m.
Might yield even better returns for basic tests (as there are more).Basic suite goes down to 2m (from 13m).Obviously somewhat gross but might be worth it.
Here's the general outline:
runner
service (needs a better name) to register tests (usingrunner.when()
)runner.when()
accepts a title (for the suite), a condition or more conditions, and the body of the suite (ie,it()
anddescribe()
)runner.run()
which will select tests that should run and group tests that need the same archivesI also need to change the way decorate_snapshot_ui gets the file from the test, as Mocha incorrectly assumes its in the same file as the root suite.Done, using the stack trace now.