-
Notifications
You must be signed in to change notification settings - Fork 25.1k
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
Make docker tests more reliable #68512
Make docker tests more reliable #68512
Conversation
Closes elastic#66656. Current, `Docker#verifyOssInstallation(...)` checks the permissions of `elasticsearch.keystore`, however this often causes problems when a test forgets to wait for ES and the keystore doesn't exist yet. Instead, add a test specifically to check `elasticsearch.keystore` and remove the check from `verifyOssInstallation()`.
Pinging @elastic/es-delivery (Team:Delivery) |
buildSrc/src/main/java/org/elasticsearch/gradle/docker/DockerSupportService.java
Show resolved
Hide resolved
* Check that when the keystore is created on startup, it is created with the correct permissions. | ||
*/ | ||
public void test042KeystorePermissionsAreCorrect() throws Exception { | ||
waitForElasticsearch(installation); |
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.
The failures seem to indicate that waitForElasticseach()
doesn't seem to be robust enough. Do we have theories on why that method would return, but the keystore file would not be there? Wouldn't we expect this test to occasionally fail still?
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'm not sure that waitForElasticseach()
is the problem. The original problem in #66656 was due to to the test running a CLI tool without waiting for ES to start up and create the keystore, which in this case the tool needed.
I removed the keystore from the verifyOssInstallation()
because most tests don't care about it, and have a test fail because it didn't wait for a file to be created that the test doesn't care about is just...silly.
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.
Sure, I guess my point being that the new test you added is still susceptible to the same underlying cause of those other failures, unless I'm missing something. Indeed I agree we don't need superfluous assertions in those other tests, so if nothing else this should fail less often. We'll keep an eye on it.
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.
Basically this - if the new test is failing often, at least I have somewhere more specific to start investigating.
Closes #66656. Current, `Docker#verifyOssInstallation(...)` checks the permissions of `elasticsearch.keystore`, however this often causes problems when a test forgets to wait for ES and the keystore doesn't exist yet. Instead, add a test specifically to check `elasticsearch.keystore` and remove the check from `verifyOssInstallation()`.
Backported to |
Closes #66656. Current, `Docker#verifyOssInstallation(...)` checks the permissions of `elasticsearch.keystore`, however this often causes problems when a test forgets to wait for ES and the keystore doesn't exist yet. Instead, add a test specifically to check `elasticsearch.keystore` and remove the check from `verifyOssInstallation()`.
Closes #66656.
Current,
Docker#verifyOssInstallation(...)
checks the permissions ofelasticsearch.keystore
, however this often causes problems when a testforgets to wait for ES and the keystore doesn't exist yet.
Instead, add a test specifically to check
elasticsearch.keystore
andremove the check from
verifyOssInstallation()
.