## Description
Create a simulation test to test overload monitor. Particularly, it
tests 5 scenarios
- No overload
- Slightly overload
- Heavy overload
- Single spike
- Consistent spikes
The tests use a simple load generator and executor. Both use a
AuthorityState.overload_info to keep track of requests. The overload
monitor inside the same AuthorityState can be used as an overload
monitor for the load generator.
This test discovered several improvements from the previous load
generator. Some notable ones are:
- When we are already in shedding mode, say 50%, and decide to shed 10%,
previously the new shedding percentage will be 10% but it really should
be 50% + 50% * 10% = 55%.
- When txn ready rate < execution rate, it doesn't mean that the
overload is over. We need to protect against future spikes by only
gradually reduce shedding percentage.
## Test Plan
Simulation tests
---
If your changes are not user-facing and do not break anything, you can
skip the following section. Otherwise, please briefly describe what has
changed under the Release Notes section.
### Type of Change (Check all that apply)
- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration
### Release notes