consensus/ethash: fix flaky test by reading seal results (#21085)
This commit is contained in:
parent
e868adde30
commit
befecc9fdf
@ -97,16 +97,22 @@ func TestRemoteMultiNotify(t *testing.T) {
|
|||||||
ethash.config.Log = testlog.Logger(t, log.LvlWarn)
|
ethash.config.Log = testlog.Logger(t, log.LvlWarn)
|
||||||
defer ethash.Close()
|
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.
|
// Stream a lot of work task and ensure all the notifications bubble out.
|
||||||
for i := 0; i < cap(sink); i++ {
|
for i := 0; i < cap(sink); i++ {
|
||||||
header := &types.Header{Number: big.NewInt(int64(i)), Difficulty: big.NewInt(100)}
|
header := &types.Header{Number: big.NewInt(int64(i)), Difficulty: big.NewInt(100)}
|
||||||
block := types.NewBlockWithHeader(header)
|
block := types.NewBlockWithHeader(header)
|
||||||
ethash.Seal(nil, block, nil, nil)
|
ethash.Seal(nil, block, results, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < cap(sink); i++ {
|
for i := 0; i < cap(sink); i++ {
|
||||||
select {
|
select {
|
||||||
case <-sink:
|
case <-sink:
|
||||||
|
<-results
|
||||||
case <-time.After(10 * time.Second):
|
case <-time.After(10 * time.Second):
|
||||||
t.Fatalf("notification %d timed out", i)
|
t.Fatalf("notification %d timed out", i)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user