-
Notifications
You must be signed in to change notification settings - Fork 24.9k
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
[Rollup] Replace RollupIT with a ESRestTestCase version #31977
[Rollup] Replace RollupIT with a ESRestTestCase version #31977
Conversation
The old RollupIT was a node IT, an flaky for a number of reasons. This new version is an ESRestTestCase and should be a little more robust. This was added to the multi-node QA tests as that seemed like the most appropriate location. It didn't seem necessary to create a whole new QA module. Note: The only test that was ported was the "Big" test for validating a larger dataset. The rest of the tests are represented in existing yaml tests. Closes elastic#31258 Closes elastic#30232 Related to elastic#30290
Pinging @elastic/es-search-aggs |
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.
Thanks @polyfractal ! I left some comments
Map<String, Object> getRollupJobResponse = toMap(client().performRequest(getRollupJobRequest)); | ||
Map<String, Object> job = getJob(getRollupJobResponse, rollupJob); | ||
if (job != null) { | ||
assertThat(ObjectPath.eval("status.job_state", job), expectedStates); |
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 fails the test compilation, should it be:
assertThat(ObjectPath.eval("status.job_state", job), equalTo(expectedStates));
?
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.
It fails compilation for you? Looks ok on my side... I pilfered this from FullClusterRestartIT
tests that Tanguy added recently. expectedStates
is defined above a few lines:
final Matcher<?> expectedStates = anyOf(equalTo("indexing"), equalTo("started"));
Map<String, Object> taskResponseNode = (Map<String, Object>) taskResponseNodes.values().iterator().next(); | ||
Map<String, Object> taskResponseTasks = (Map<String, Object>) taskResponseNode.get("tasks"); | ||
Map<String, Object> taskResponseStatus = (Map<String, Object>) taskResponseTasks.values().iterator().next(); | ||
assertThat(ObjectPath.eval("status.job_state", taskResponseStatus), expectedStates); |
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.
Same here
hasRollupTask = true; | ||
|
||
final String jobStateField = "task.xpack/rollup/job.state.job_state"; | ||
assertThat("Expected field [" + jobStateField + "] to be started or indexing in " + task.get("id"), |
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.
and here ;)
|
||
Map<String, Object> job = getJob(getRollupJobResponse, rollupJob); | ||
if (job != null) { | ||
assertThat(ObjectPath.eval("status.job_state", job), expectedStates); |
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.
here as well ?
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.
here expectedStates
is passed in as a final Matcher<?> expectedStates
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.
It fails the compilation:
method Assert.<T#1>assertThat(T#1,Matcher<? super T#1>) is not applicable
Can you check the states differently ? With an array of strings and anyOf
?
+ "\"index_pattern\":\"rollup-*\"," | ||
+ "\"rollup_index\":\"results-rollup\"," | ||
+ "\"cron\":\"*/1 * * * * ?\"," // fast cron and big page size so test runs quickly | ||
+ "\"page_size\":200," |
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.
We should test multiple pages, how slow is it if you set the page_size
to 20 for instance ?
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.
++ I dont think multiple pages will be bad. The major slowdown is waiting for the cron to tick over (e.g. if it's 30s and you get unlucky you may be waiting the full time).
Jenkins, run gradle build tests |
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.
CI still fails due to a compilation error with assertThat
. I left a comment where it happens but no need for another review, we just need a green CI.
|
||
Map<String, Object> job = getJob(getRollupJobResponse, rollupJob); | ||
if (job != null) { | ||
assertThat(ObjectPath.eval("status.job_state", job), expectedStates); |
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.
It fails the compilation:
method Assert.<T#1>assertThat(T#1,Matcher<? super T#1>) is not applicable
Can you check the states differently ? With an array of strings and anyOf
?
Just pushed a new derivation using |
No longer needed since the Rollup tests are all unit
The old RollupIT was a node IT, an flaky for a number of reasons. This new version is an ESRestTestCase and should be a little more robust. This was added to the multi-node QA tests as that seemed like the most appropriate location. It didn't seem necessary to create a whole new QA module. Note: The only test that was ported was the "Big" test for validating a larger dataset. The rest of the tests are represented in existing yaml tests. Closes #31258 Closes #30232 Related to #30290
* es/master: (21 commits) Tweaked Elasticsearch Service links for SEO Watcher: Store username on watch execution (#31873) Use correct formatting for links (#29460) Painless: Separate PainlessLookup into PainlessLookup and PainlessLookupBuilder (#32054) Scripting: Remove dead code from painless module (#32064) [Rollup] Replace RollupIT with a ESRestTestCase version (#31977) [TEST] Consistent algorithm usage (#32077) [Rollup] Fix duplicate field names in test (#32075) Ensure only parent breaker trips in unit test Unmute field collapsing rest tests Fix BWC check after backport [Tests] Fix failure due to changes exception message (#32036) Remove unused params from SSource and Walker (#31935) [Test] Mute MlJobIT#testDeleteJobAfterMissingAliases Turn off real-mem breaker in REST tests Turn off real-mem breaker in single node tests Fix broken OpenLDAP Vagrant QA test Cleanup Duplication in `PainlessScriptEngine` (#31991) SCRIPTING: Remove unused MultiSearchTemplateRequestBuilder (#32049) Fix compile issues introduced by merge (#32058) ...
* es/6.x: Use correct formatting for links (#29460) Revert "Adds a new auto-interval date histogram (#28993)" Revert "fix typo" fix typo Adds a new auto-interval date histogram (#28993) [Rollup] Replace RollupIT with a ESRestTestCase version (#31977) [Rollup] Fix duplicate field names in test (#32075) [Tests] Fix failure due to changes exception message (#32036) [Test] Mute MlJobIT#testDeleteJobAfterMissingAliases Replace Ingest ScriptContext with Custom Interface (#32003) (#32060) Cleanup Duplication in `PainlessScriptEngine` (#31991) (#32061) HLRC: Add xpack usage api (#31975) Clean Up Snapshot Create Rest API (#31779)
The old RollupIT was a node IT, and flaky for a number of reasons. This new version is an ESRestTestCase and should be a little more robust. It shoould also be easier to add more varied tests in the future with this setup.
This was added to the multi-node QA tests as that seemed like the most appropriate location. It didn't seem necessary to create a whole new QA module.
Note: The only test that was ported was the "Big" test for validating a larger dataset. The rest of the tests are represented in existing yaml tests.
Closes #31258
Closes #30232
Related to #30290