- ability to extract a tipset range into individual vectors.
- ability to extract a tipset range and squash into a single multi-tipset vector.
- mark statediff output deterministically, so it can be extracted by tooling.
- ability to execute callbacks between tipsets in the driver.
- implement save-balances callback.
This PR introduces support for running multiple variants of a vector,
each of which targets a unique protocol version.
tvx tooling has been adapted to produce and parse the new version
of the schema.
Motivation:
* Run lotus with the race detector enabled (primary motivation).
* Allow multiple lotus nodes in a process (not a high priority).
Previously, the journal was shared between all lotus instances, but it was
initialized for every new node. This caused safety problems in tests (at a
minimum).
This patch explicitly passes the journal to all services that need it.
We're probably going to want to change some of these design decisions down the
road, but this is a good starting point.
* We may want to use a more general test for "is actor valid at epoch". Maybe
just a function?
* I'd like to push some of the actor metadata down into the actor types
themselves. Ideally, we'd be able to register actors with a simple
`Register(validation, manyActors...)` call.
This commit introduces a new package `conformance` containing:
1. the test driver to exercise Lotus against interoperable
test vectors, and
2. the test runner, which integrates go test with the test vector
corpus hosted at https://github.com/filecoin-project/conformance-vectors.
The corpus is mounted via a git submodule.
Right now, only message-class test vectors are supported. In the
next week, this support will be extended to tipset-class, chain-class,
and block sequence-class vectors.