* e2e: Extract Docker-specific functionality
Extract Docker-specific functionality and put it behind an interface
that should hopefully, without too much modification, allow us to
implement a Digital Ocean-based infrastructure provider.
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Thread contexts through all potentially long-running functions
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Drop the "API" from interface/struct/var naming
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Simplify function returns
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Rename GenerateConfig to Setup to make it more generic
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Consolidate all infra functions into a single interface
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Localize linter directives
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Look up and use complete node in ShowNodeLogs and TailNodeLogs calls
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Restructure infra provider API into a separate package
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Rename interface again
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Rename exec functions for readability
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Relocate staticcheck lint directive
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Remove staticcheck lint directive
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Make testnet infra struct private
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Only pass testnetDir to Cleanup function
Signed-off-by: Thane Thomson <connect@thanethomson.com>
A few notes:
- this is not all the deletion that we can do, but this is the most
"simple" case: it leaves in shims, and there's some trivial
additional cleanup to the transport that can happen but that
requires writing more code, and I wanted this to be easy to review
above all else.
- This should land *after* we cut the branch for 0.35, but I'm
anticipating that to happen soon, and I wanted to run this through
CI.
I observed a couple of problems with the generator in some recent tests:
- there were a couple of hybrid test cases which did not have any
legacy nodes (randomness and all.) I change the probability to
produce more reliable results.
- added options to the generation to be able to add a max (to
compliment the earlier min) number of nodes for local testing.
- added an option to support reversing the sort order so "more
complex" networks were first, as well as tweaked some of the point
values.
- this refactored the generators cli parsing to be a bit more clear.
Closes#5291. Adds a randomized testnet generator. Nightly CI job will be submitted separately. A few of the testnets can be a bit flaky, even after disabling known-faulty behavior and making minor tweaks, and the larger networks may be too resource-intensive to run in CI - this will be optimized separately.