Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blockchain: Introduce chaingen test harness. #1583

Merged

Conversation

davecgh
Copy link
Member

@davecgh davecgh commented Jan 27, 2019

This requires #1581.

This introduces a new chaingen test harness in the blockchain test code that is intended to be used to refactor out some of the common code used in the tests that make use of chaingen 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 a blockchain 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.

Copy link
Member

@dajohi dajohi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

blockchain/common_test.go Outdated Show resolved Hide resolved
This introduces a new chaingen test harness in the blockchain test code
that is intended to be used to refactor out some of the common code used
in the tests that make use of chaingen 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 a
block chain 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.
@davecgh davecgh force-pushed the blockchain_introduce_chaingen_harness branch from 053c06a to dc79823 Compare January 29, 2019 19:04
@davecgh davecgh merged commit dc79823 into decred:master Jan 29, 2019
@davecgh davecgh deleted the blockchain_introduce_chaingen_harness branch January 29, 2019 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants