Closed y0sher closed 6 months ago
I'm raising here some concerns I have with testground, I'll edit this comment later and add more details
Not very mature
(π = fully supported // π = planned)
Experimental/iterative development π (The team at Protocol Labs has used Testground extensively to evaluate protocol changes in large networks, simulate attacks, measure algorithmic improvements across network boundaries, etc.)
you can write tests that can scale pretty easily and test locally with not much instances - huge plus Debugging π - if you write metrics from the test plan code they are saved, there's no log aggregator or metrics collected outside the ones written manually. (these might be easy to solve though no idea whats testground planning to do in the future on that side)
Comparative testing π Backwards/forward-compatibility testing π testground has some nice features for running tests with different versions of code and checking backward compatibility and such.
Interoperability testing π Continuous integration π CI integration needed from scratch probably. //todo check with the testground team their plans for that.
Stakeholder/acceptance testing π
Motivation
Our current CI
Utilizes K8S and pythonβs
pytest
, it runs ELK withfluentbit
, collecting logs that are used for testing and for later for debugging. .It also runs aPyroscope
instance for viewing profiles. Same code also manages the deployment of bootstrap, poets, miners and wiring them together. The test setups the the configurations and interacts with the entities using the API. It then queriesElasticsearch
or the API for data to run assertions otheron the test state.Pros:
Cons:
Testground
Pros
Cons
Running
Prerequisites: Go 1.16+, Docker daemon running.
TODO: (@y0sher): Add docs about reading logs and using node API and metrics. The test currently runs 1 PoET, 1 bootstrap ,3 miners and publishes the addresses of PoET and bootstrap.
(TODO: create issues and link)
Changes
testground
(what should it be? should we start with basic p2p communication or go all in on mining test.go-spacemesh
usingtestground
and collect results