Closed karlfloersch closed 3 years ago
Because we do not currently have infrastructure set up for easily testing verifier
s or replica
s, we may want to de-prioritize: Check integrity of the verifier & replica:
It seems that while all of these tests & metrics could be added into a big load test, we can get a lot of benefit from breaking this up into smaller tasks. Specifically:
integration-tests
which:
Notes:
Notes:
Notes:
docker-compose
controller library to restart Geth (we already import this into the monorepo)I like the split a lot, while it's all testing, they serve different purposes. Instead of kitchen sink I would classify those as smoke tests, things that are expected to work in normal circumstances. We should be able to run smoke tests against production systems, excluding any side effects.
The performance tests should definitely target new infrastructure and running the smoke tests at the same time verifies those tests under load.
For the monotonicity checks we could carefully construct the scenarios detailed using tasks defined in something like Tekton and/or run a "chaos monkey" in the deployment that attempts random, forced failures and watch how the system reacts.
Awesome @optimisticben I updated my comment to call them "Smoke Tests" & definitely makes sense re. tekton / chaos monkey.
I'm going to close this issue and say that https://github.com/ethereum-optimism/optimism/issues/963#issuecomment-849253240 qualifies as "determining our load testing strategy". Otherwise I feel like this issue is going to stay open too long because it's so open ended 😁
Any updates on this?
Is your feature request related to a problem? Please describe. In order to detect some common failures that we have in Geth, we often need to spam many transactions, and transactions of different types. This means that we will need to design a simple framework for submitting specific types of transactions, different frequencies of transactions, etc. Once we have this framework it can be hooked up to our CI and deployments to ensure that we do not suffer regressions.
Describe the solution you'd like The load tester should spin up a sequencer, a verifier, and a replica.
This framework should make it easy to...
Spam the following types of transactions:
Define transaction sequences that are to be spammed, for example:
Define transaction submission frequency distributions, or in other words:
Configure the load test duration, such as:
Collect important metrics, such as:
Detect failures in our various services, eg:
Check integrity of the sequencer:
Check integrity of the verifier & replica:
This framework should be designed with the eventual goal of tracking all of these metrics and being maximally configurable. However, it should also be implemented incrementally & should suggest steps which can be taken in the near term to cover the most important features.