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
merged 1 commit into from Jan 29, 2019

Conversation

Projects
None yet
3 participants
@davecgh
Copy link
Member

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.

@dajohi

dajohi approved these changes Jan 28, 2019

Copy link
Member

dajohi left a comment

ok

Show resolved Hide resolved blockchain/common_test.go Outdated
blockchain: Introduce chaingen test harness.
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 davecgh:blockchain_introduce_chaingen_harness branch from 053c06a to dc79823 Jan 29, 2019

@davecgh davecgh merged commit dc79823 into decred:master Jan 29, 2019

1 of 2 checks passed

continuous-integration/travis-ci/push The Travis CI build is in progress
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details

@davecgh davecgh deleted the davecgh:blockchain_introduce_chaingen_harness branch Jan 29, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment