-
Notifications
You must be signed in to change notification settings - Fork 502
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
services/horizon/internal/integration: Add load test which generates ledgers loaded with soroban Tx Meta #5556
Conversation
Really cool. I wonder, though, if this could be factored out in some way so that it can be reused in Stellar-RPC tests. Or is the idea to simply compile the test and pass parameters to it? that isn't very flexible though. |
yeah, ideally this could be executed outside the context of a Go test. But, there is a lot of code in the integration testing framework we have which makes it easy to spin up and tear down the stand alone stellar network. It would require much more effort to decouple that framework code from
My intention was to use this test to generate a bunch of ledgers. Once we have the file with the generated ledgers we can replay them to rpc / horizon. The generated ledgers file is the only artifact we need to load test ingestion in horizon / rpc |
PR Checklist
PR Structure
otherwise).
services/friendbot
, orall
ordoc
if the changes are broad or impact manypackages.
Thoroughness
.md
files, etc... affected by this change). Take a look in the
docs
folder for a given service,like this one.
Release planning
CHANGELOG.md
within the component folder structure. For example, if I changed horizon, then I updated (services/horizon/CHANGELOG.md. I add a new line item describing the change and reference to this PR. If I don't update a CHANGELOG, I acknowledge this PR's change may not be mentioned in future release notes.semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.
What
Close stellar/stellar-rpc#330
This PR implements an integration load test to generate ledgers with soroban transactions. The test can be configured using the following parameters:
transactions-per-ledger
number of transactions per ledgertransfers-per-tx
number of asset transfers for each transactionledgers
number of ledgers to generateThe test will output
ledgers
number of ledgers each containingtransactions-per-ledger
transactions. Each transaction will havetransfers-per-tx
asset transfers. Half the asset transfers will result in movement among accounts and the other half of the transfers will result in movement between accounts and contracts.The test is implemented as follows:
The transactions are carefully designed to make the merging operation safe. In particular, we ensure that the source / fee account of each transaction is not used or modified more than once within the batch of ledgers which will be merged.
Why
Currently, the number of soroban transactions per ledger is limited but in the future we plan to raise that limit. But before doing so, we would like to use this tool to generate ledgers with a high volume of soroban activity so we can test the limits of horizon and rpc ingestion.
#5482
Known limitations
[N/A]