diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-03-06 02:00:01 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-03-09 22:50:14 +0800 |
commit | 567d41d9363706b4b13ce0903804e8acf214af49 (patch) | |
tree | 8c091f0385589074573df3f7964c99417c5950ee /core/chain_pow_test.go | |
parent | 3b00a77de57ab2737a7887521c192ce004c721e3 (diff) | |
download | go-tangerine-567d41d9363706b4b13ce0903804e8acf214af49.tar.gz go-tangerine-567d41d9363706b4b13ce0903804e8acf214af49.tar.zst go-tangerine-567d41d9363706b4b13ce0903804e8acf214af49.zip |
all: swap out the C++ ethash to the pure Go one (mining todo)
Diffstat (limited to 'core/chain_pow_test.go')
-rw-r--r-- | core/chain_pow_test.go | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/core/chain_pow_test.go b/core/chain_pow_test.go index 1400b166f..311ca128e 100644 --- a/core/chain_pow_test.go +++ b/core/chain_pow_test.go @@ -17,6 +17,7 @@ package core import ( + "errors" "math/big" "runtime" "testing" @@ -35,12 +36,16 @@ type failPow struct { failing uint64 } -func (pow failPow) Search(pow.Block, <-chan struct{}, int) (uint64, []byte) { +func (pow failPow) Search(pow.Block, <-chan struct{}) (uint64, []byte) { return 0, nil } -func (pow failPow) Verify(block pow.Block) bool { return block.NumberU64() != pow.failing } -func (pow failPow) GetHashrate() int64 { return 0 } -func (pow failPow) Turbo(bool) {} +func (pow failPow) Verify(block pow.Block) error { + if block.NumberU64() == pow.failing { + return errors.New("failed") + } + return nil +} +func (pow failPow) Hashrate() float64 { return 0 } // delayedPow is a non-validating proof of work implementation, that returns true // from Verify for all blocks, but delays them the configured amount of time. @@ -48,12 +53,11 @@ type delayedPow struct { delay time.Duration } -func (pow delayedPow) Search(pow.Block, <-chan struct{}, int) (uint64, []byte) { +func (pow delayedPow) Search(pow.Block, <-chan struct{}) (uint64, []byte) { return 0, nil } -func (pow delayedPow) Verify(block pow.Block) bool { time.Sleep(pow.delay); return true } -func (pow delayedPow) GetHashrate() int64 { return 0 } -func (pow delayedPow) Turbo(bool) {} +func (pow delayedPow) Verify(block pow.Block) error { time.Sleep(pow.delay); return nil } +func (pow delayedPow) Hashrate() float64 { return 0 } // Tests that simple POW verification works, for both good and bad blocks. func TestPowVerification(t *testing.T) { @@ -75,11 +79,11 @@ func TestPowVerification(t *testing.T) { switch { case full && valid: - _, results = verifyNoncesFromBlocks(FakePow{}, []*types.Block{blocks[i]}) + _, results = verifyNoncesFromBlocks(pow.FakePow{}, []*types.Block{blocks[i]}) case full && !valid: _, results = verifyNoncesFromBlocks(failPow{blocks[i].NumberU64()}, []*types.Block{blocks[i]}) case !full && valid: - _, results = verifyNoncesFromHeaders(FakePow{}, []*types.Header{headers[i]}) + _, results = verifyNoncesFromHeaders(pow.FakePow{}, []*types.Header{headers[i]}) case !full && !valid: _, results = verifyNoncesFromHeaders(failPow{headers[i].Number.Uint64()}, []*types.Header{headers[i]}) } @@ -134,11 +138,11 @@ func testPowConcurrentVerification(t *testing.T, threads int) { switch { case full && valid: - _, results = verifyNoncesFromBlocks(FakePow{}, blocks) + _, results = verifyNoncesFromBlocks(pow.FakePow{}, blocks) case full && !valid: _, results = verifyNoncesFromBlocks(failPow{uint64(len(blocks) - 1)}, blocks) case !full && valid: - _, results = verifyNoncesFromHeaders(FakePow{}, headers) + _, results = verifyNoncesFromHeaders(pow.FakePow{}, headers) case !full && !valid: _, results = verifyNoncesFromHeaders(failPow{uint64(len(headers) - 1)}, headers) } |