|
|
@ -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) |
|
|
|
} |
|
|
|
} |
|
|
|