Skip to content

Commit 01c0226

Browse files
authored
Merge pull request #7973 from onflow/peter/fix-flaky-access-tests
[Access] Fix noisy and flaky unittests
2 parents bf9c3df + 1e4bed0 commit 01c0226

File tree

14 files changed

+44
-30
lines changed

14 files changed

+44
-30
lines changed

engine/access/access_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package access_test
33
import (
44
"context"
55
"encoding/json"
6-
"os"
76
"testing"
87

98
"github.com/cockroachdb/pebble/v2"
@@ -93,7 +92,7 @@ func TestAccess(t *testing.T) {
9392

9493
func (suite *Suite) SetupTest() {
9594
suite.lockManager = storage.NewTestingLockManager()
96-
suite.log = zerolog.New(os.Stderr)
95+
suite.log = unittest.Logger()
9796
suite.net = new(mocknetwork.EngineRegistry)
9897
suite.state = new(protocol.State)
9998
suite.finalSnapshot = new(protocol.Snapshot)
@@ -774,6 +773,10 @@ func (suite *Suite) TestGetSealedTransaction() {
774773
ctx := irrecoverable.NewMockSignalerContext(suite.T(), background)
775774
ingestEng.Start(ctx)
776775
<-ingestEng.Ready()
776+
defer func() {
777+
cancel()
778+
<-ingestEng.Done()
779+
}()
777780

778781
// 2. Ingest engine was notified by the follower engine about a new block.
779782
// Follower engine --> Ingest engine

engine/access/handle_irrecoverable_state_test.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"fmt"
66
"io"
7-
"os"
87
"testing"
98
"time"
109

@@ -45,10 +44,12 @@ import (
4544
// IrrecoverableStateTestSuite tests that Access node indicate an inconsistent or corrupted node state
4645
type IrrecoverableStateTestSuite struct {
4746
suite.Suite
47+
log zerolog.Logger
48+
cancel context.CancelFunc
49+
4850
state *protocol.State
4951
snapshot *protocol.Snapshot
5052
epochQuery *protocol.EpochQuery
51-
log zerolog.Logger
5253
net *mocknetwork.EngineRegistry
5354
request *module.Requester
5455
collClient *accessmock.AccessAPIClient
@@ -72,7 +73,7 @@ type IrrecoverableStateTestSuite struct {
7273
}
7374

7475
func (suite *IrrecoverableStateTestSuite) SetupTest() {
75-
suite.log = zerolog.New(os.Stdout)
76+
suite.log = unittest.Logger()
7677
suite.net = mocknetwork.NewEngineRegistry(suite.T())
7778
suite.state = protocol.NewState(suite.T())
7879
suite.snapshot = protocol.NewSnapshot(suite.T())
@@ -186,13 +187,17 @@ func (suite *IrrecoverableStateTestSuite) SetupTest() {
186187
assert.NoError(suite.T(), err)
187188

188189
err = fmt.Errorf("inconsistent node's state")
190+
191+
ctx, cancel := context.WithCancel(context.Background())
192+
suite.cancel = cancel
193+
189194
signCtxErr := irrecoverable.NewExceptionf("failed to lookup sealed header: %w", err)
190-
ctx := irrecoverable.NewMockSignalerContextExpectError(suite.T(), context.Background(), signCtxErr)
195+
signalCtx := irrecoverable.NewMockSignalerContextExpectError(suite.T(), ctx, signCtxErr)
191196

192-
suite.rpcEng.Start(ctx)
197+
suite.rpcEng.Start(signalCtx)
193198

194-
suite.secureGrpcServer.Start(ctx)
195-
suite.unsecureGrpcServer.Start(ctx)
199+
suite.secureGrpcServer.Start(signalCtx)
200+
suite.unsecureGrpcServer.Start(signalCtx)
196201

197202
// wait for the servers to startup
198203
unittest.AssertClosesBefore(suite.T(), suite.secureGrpcServer.Ready(), 2*time.Second)
@@ -202,6 +207,13 @@ func (suite *IrrecoverableStateTestSuite) SetupTest() {
202207
unittest.AssertClosesBefore(suite.T(), suite.rpcEng.Ready(), 2*time.Second)
203208
}
204209

210+
func (suite *IrrecoverableStateTestSuite) TearDownTest() {
211+
suite.cancel()
212+
unittest.AssertClosesBefore(suite.T(), suite.secureGrpcServer.Done(), 2*time.Second)
213+
unittest.AssertClosesBefore(suite.T(), suite.unsecureGrpcServer.Done(), 2*time.Second)
214+
unittest.AssertClosesBefore(suite.T(), suite.rpcEng.Done(), 2*time.Second)
215+
}
216+
205217
func TestIrrecoverableState(t *testing.T) {
206218
suite.Run(t, new(IrrecoverableStateTestSuite))
207219
}

engine/access/ingestion/engine_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (s *Suite) TearDownTest() {
9292
}
9393

9494
func (s *Suite) SetupTest() {
95-
s.log = zerolog.New(os.Stderr)
95+
s.log = unittest.Logger()
9696
s.ctx, s.cancel = context.WithCancel(context.Background())
9797
db, dbDir := unittest.TempPebbleDB(s.T())
9898
s.db = pebbleimpl.ToDB(db)

engine/access/ingestion/tx_error_messages/tx_error_messages_core_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package tx_error_messages
33
import (
44
"context"
55
"fmt"
6-
"os"
76
"testing"
87

98
execproto "github.com/onflow/flow/protobuf/go/flow/execution"
@@ -72,7 +71,7 @@ type mockCloser struct{}
7271
func (mc *mockCloser) Close() error { return nil }
7372

7473
func (s *TxErrorMessagesCoreSuite) SetupTest() {
75-
s.log = zerolog.New(os.Stderr)
74+
s.log = unittest.Logger()
7675
s.ctx, s.cancel = context.WithCancel(context.Background())
7776
// mock out protocol state
7877
s.proto.state = protocol.NewFollowerState(s.T())

engine/access/ingestion/tx_error_messages/tx_error_messages_engine_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (s *TxErrorMessagesEngineSuite) TearDownTest() {
8282
}
8383

8484
func (s *TxErrorMessagesEngineSuite) SetupTest() {
85-
s.log = zerolog.New(os.Stderr)
85+
s.log = unittest.Logger()
8686
s.ctx, s.cancel = context.WithCancel(context.Background())
8787
pdb, dbDir := unittest.TempPebbleDB(s.T())
8888
s.db = pebbleimpl.ToDB(pdb)

engine/access/integration_unsecure_grpc_server_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package access
33
import (
44
"context"
55
"io"
6-
"os"
76
"testing"
87
"time"
98

@@ -96,7 +95,7 @@ type SameGRPCPortTestSuite struct {
9695
}
9796

9897
func (suite *SameGRPCPortTestSuite) SetupTest() {
99-
suite.log = zerolog.New(os.Stdout)
98+
suite.log = unittest.Logger()
10099
suite.net = new(network.EngineRegistry)
101100
suite.state = new(protocol.State)
102101
suite.snapshot = new(protocol.Snapshot)
@@ -317,6 +316,14 @@ func (suite *SameGRPCPortTestSuite) SetupTest() {
317316
unittest.AssertClosesBefore(suite.T(), suite.stateStreamEng.Ready(), 2*time.Second)
318317
}
319318

319+
func (suite *SameGRPCPortTestSuite) TearDownTest() {
320+
suite.cancel()
321+
unittest.AssertClosesBefore(suite.T(), suite.secureGrpcServer.Done(), 2*time.Second)
322+
unittest.AssertClosesBefore(suite.T(), suite.unsecureGrpcServer.Done(), 2*time.Second)
323+
unittest.AssertClosesBefore(suite.T(), suite.rpcEng.Done(), 2*time.Second)
324+
unittest.AssertClosesBefore(suite.T(), suite.stateStreamEng.Done(), 2*time.Second)
325+
}
326+
320327
// TestEnginesOnTheSameGrpcPort verifies if both AccessAPI and ExecutionDataAPI client successfully connect and continue
321328
// to work when configured on the same port
322329
func (suite *SameGRPCPortTestSuite) TestEnginesOnTheSameGrpcPort() {

engine/access/rest_api_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"math/rand"
77
"net/http"
8-
"os"
98
"strings"
109
"testing"
1110
"time"
@@ -80,7 +79,7 @@ type RestAPITestSuite struct {
8079
}
8180

8281
func (suite *RestAPITestSuite) SetupTest() {
83-
suite.log = zerolog.New(os.Stdout)
82+
suite.log = unittest.Logger()
8483
suite.net = new(network.EngineRegistry)
8584
suite.state = new(protocol.State)
8685
suite.sealedSnaphost = new(protocol.Snapshot)

engine/access/rpc/backend/scripts/executor/compare.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func NewComparingScriptExecutor(
3131
execNodeExecutor ScriptExecutor,
3232
) *ComparingScriptExecutor {
3333
return &ComparingScriptExecutor{
34-
log: zerolog.New(log).With().Str("script_executor", "comparing").Logger(),
34+
log: log.With().Str("script_executor", "comparing").Logger(),
3535
metrics: metrics,
3636
scriptCache: scriptCache,
3737
localExecutor: localExecutor,

engine/access/rpc/backend/scripts/executor/execution_node.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func NewENScriptExecutor(
4040
scriptCache *LoggedScriptCache,
4141
) *ENScriptExecutor {
4242
return &ENScriptExecutor{
43-
log: zerolog.New(log).With().Str("script_executor", "execution_node").Logger(),
43+
log: log.With().Str("script_executor", "execution_node").Logger(),
4444
metrics: metrics,
4545
nodeProvider: nodeProvider,
4646
nodeCommunicator: nodeCommunicator,

engine/access/rpc/backend/scripts/executor/local.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func NewLocalScriptExecutor(
3232
scriptCache *LoggedScriptCache,
3333
) *LocalScriptExecutor {
3434
return &LocalScriptExecutor{
35-
log: zerolog.New(log).With().Str("script_executor", "local").Logger(),
35+
log: log.With().Str("script_executor", "local").Logger(),
3636
metrics: metrics,
3737
scriptCache: scriptCache,
3838
scriptExecutor: executor,

0 commit comments

Comments
 (0)