blockchain: Introduce chaingen test harness. #1583
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This requires #1581.
This introduces a new
chaingen
test harness in theblockchain
test code that is intended to be used to refactor out some of the common code used in the tests that make use ofchaingen
and have a lot of repeated and cumbersome code as well as to simplify creation of future tests which require the ability to create fully valid test chains.It encapsulates a test instance, a
chaingen
generator instance, and ablockchain
instance to provide all of their functionality as well as several convenience functions such as tested block acceptance and rejection, expected tip checking, and threshold state checking.The harness will certainly need to have additional functionality added as the various tests are updated, however this initial implementation should cover most of the basic functionality.
Also, it makes judicious use of the new test helper functionality introduced in Go 1.9 which allows any test failures to report the line that invoked the helper funcs as opposed to the line inside the func itself which greatly improves its usability in shared code.
This only includes the new infrastructure code and does not update any of the tests. That will be done in separate commits.