-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Attempt to address some of the consistently flaky integration tests #3440
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
Conversation
99a169b to
cadf7f8
Compare
748a686 to
687d91c
Compare
687d91c to
28e3715
Compare
- Introduce ``RequestTimedOut`` and raise this for requests with timeout messaging. - This allows us to be more specific on flaky tests that fail with node timeout errors. Specify ``RequestTimedOut`` as the expected exception in relevant tests marked with ``@pytest.mark.xfail``.
28e3715 to
8965da1
Compare
d631301 to
71af107
Compare
71af107 to
6d80681
Compare
a3ce6dc to
5c581e4
Compare
|
Ok @kclowes, @pacrob, @reedsa this should be ready for review. Let me know if you have any questions. This commit fixes a wrong check in some tests that the |
pacrob
left a comment
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.
🐑
reedsa
left a comment
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.
lgtm
What was wrong?
Some of our integration tests dealing with the way
geth --devmines within an interval window flaky and still not passing with a flaky decorator in some cases. I'm going to try to run this branch many times and try to address them here.How was it fixed?
xfail+strict=False(899a909)gasPriceon dynamic fee transactions was equal to themaxFeePerGas. Really, it's the minimum between themaxFeePerGasandmaxPriorityFeePerGas+baseFeePerGas(block), which is the "effective gas price". Use<=in that comparison.Feature:
Introduce a
RequestTimedOutexception for when requests to the node time out.Use this exception in
xfailtests that fail specifically with a client-side timeout to distinguish the fail case. It isn't possible to usexfailandflakyon the same test out-of-the-box and have them work well enough. This PR adds a decorator that:max_runsandmin_passesand retries the test according to flaky rules.flakyretry, if this particular exception is raised, itxfailsthe test with a givenreasonstring argument, as is also accepted byxfail.What this means is that we can retry a test up to
max_runstimes, but if by the end of it we have some flaky exception case that is sometimes expected, wexfailthe test and it silently fails for that test run.Todo:
Cute Animal Picture