From feecb37e6b808b867a71d67fe9a22b5f15f2d023 Mon Sep 17 00:00:00 2001 From: meows Date: Thu, 14 May 2020 10:12:56 -0500 Subject: [PATCH] ethash: fix flaky test by reading results from ethash Sealer Fixes https://github.com/etclabscore/core-geth/issues/97 Signed-off-by: meows --- consensus/ethash/sealer_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/consensus/ethash/sealer_test.go b/consensus/ethash/sealer_test.go index 7f83def072..20ed2a4184 100644 --- a/consensus/ethash/sealer_test.go +++ b/consensus/ethash/sealer_test.go @@ -97,16 +97,22 @@ func TestRemoteMultiNotify(t *testing.T) { ethash.config.Log = testlog.Logger(t, log.LvlWarn) defer ethash.Close() + // Provide a results reader. + // Otherwise the unread results will be logged asynchronously + // and this can happen after the test is finished, causing a panic. + results := make(chan *types.Block, cap(sink)) + // Stream a lot of work task and ensure all the notifications bubble out. for i := 0; i < cap(sink); i++ { header := &types.Header{Number: big.NewInt(int64(i)), Difficulty: big.NewInt(100)} block := types.NewBlockWithHeader(header) - ethash.Seal(nil, block, nil, nil) + ethash.Seal(nil, block, results, nil) } for i := 0; i < cap(sink); i++ { select { case <-sink: + <-results case <-time.After(10 * time.Second): t.Fatalf("notification %d timed out", i) }