-
Notifications
You must be signed in to change notification settings - Fork 3
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
Additional testing for tracker and tx modules - mostly around serialization/deserialization #30
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…TransactionFaulted for unrecoverable/don't bother retrying errors, return updated params for an updated retry, or None if the strategy has no recommendation for updated params and the params should remain unchanged in which case wait for the existing tx a little while longer. There is no need to raise a Wait exception, since other strategies may feel differently.
…rn None if the machine should do nothing and wait based on this strategy. Remove Wait exception and its uses.
Ensure that even if some txs don't include both maxPriorityFeePerGas and maxFeePerGas the strategy still works. Handle legacy transaction speed up. Parameterize speed up factor and max tip. Questions remain about the default for max tip, but since parameterized, less of an issue - but something to revisit.
…ggested tip as a way to limit the speedup strategy getting out of control. Update maxFeePerGas depending on whether previously set or not - web3 py uses a default that doubles the base fee as part of maxFeePerGas so we probably don't want to further double that again. Clean up constructor params validation and update tests.
Use tx.id in addition to nonce for speed up logs.
…resent in transaction parameters (eip1559 allows one or both).
…re expontential because they build on previous updates.
…meout is too short and warn threshold becomes too low. Loosen warn factor from 5% to 15%.
…lling _cycle() on the machine - the latter could hide bugs so don't do it.
Don't have FutureTx store "from" separately from the the value in the params; it is redundant and complicates usage.
…ited to send raw transaction and returning the tx hash. Update machine and strategies use "from" value in the tx params. Make some functions void since unnecessary to return anything.
…eady been mined and needs replacing.
…. This allows for not needing extra logic for clearing out the dictionary used in the original tracking logic. Instead requeues and retries can be tracked on the tx object itself. Requeues for FutureTx can easily be incremented via the requeue() call on the tracker.It's a little trickier with PendingTx since we only deal with copies in the machine, but added a method to the tracker to make this easier. Updated tests.
…gies will be used by default. This way users totally control strategies used and their parameterized values instead of implicit defaults which have repercussions eg. cost for speed up strategy. Update tests accordingly.
…eout is provided in the constructor for the machine and is either the default timeout value from the TimeoutStrategy class or a user provided timeout. This is a guardrail to prevent misconfigured strategies from never timing out causing the machine to forever wait on a long running tx. Removed tests regarding no strategies since no longer applicable.
Also use inlineCallbacks now that reactor is used.
… tx types (FinalizedTx/FaultedTx) don't care typified by their serializations. Force subclasses of AsyncTx to implement their own __eq__ and __hash__ methods; added implementations to each subclass.
…sure consistency with equality check, use serialized versions for comparison. TxReceipt on FinalizedTx we only care about specific values; extra values get lost during serialization/deserialization. So to ensure consistency with equality check, use serialized versions for comparison.
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #30 +/- ##
=======================================
Coverage ? 97.92%
=======================================
Files ? 15
Lines ? 2022
Branches ? 0
=======================================
Hits ? 1980
Misses ? 42
Partials ? 0 ☔ View full report in Codecov by Sentry. |
…lly be needed since it isn't tracked by the tracker. In any case because we sub-class from AsyncTx we test it anyway since implemented.
Coverage as of 3245c0f: |
derekpierre
changed the title
[WIP] Additional testing for tracker and tx modules - mostly around serialization/deserialization
Additional testing for tracker and tx modules - mostly around serialization/deserialization
Mar 8, 2024
KPrasch
approved these changes
Mar 11, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Based over #27
Fixes #29
Fixes #15