فهرست منبع

consensus/ethash: fix flaky test by reading seal results (#21085)

meowsbits 5 سال پیش
والد
کامیت
befecc9fdf
1فایلهای تغییر یافته به همراه7 افزوده شده و 1 حذف شده
  1. 7 1
      consensus/ethash/sealer_test.go

+ 7 - 1
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)
 		}