From 4c885be7445234ae9c00cda8fd2bd21bac4b1921 Mon Sep 17 00:00:00 2001 From: Matthias Fasching <5011972+fasmat@users.noreply.github.com> Date: Thu, 23 May 2024 16:34:48 +0000 Subject: [PATCH] Update tortoise package to use zap directly (#5976) ## Motivation In this PR the custom `log.Log` is replaced by `zap.Logger` in the `tortoise` package. --- activation/e2e/nipost_test.go | 2 +- activation/handler_test.go | 2 +- activation/handler_v1_test.go | 2 +- activation/handler_v2_test.go | 6 +- activation/post_test.go | 3 +- api/grpcserver/grpcserver_test.go | 15 +-- api/grpcserver/http_server_test.go | 3 +- api/grpcserver/mesh_service_test.go | 12 +- beacon/beacon_test.go | 34 +++--- checkpoint/recovery_test.go | 2 +- cmd/bootstrapper/generator_test.go | 7 +- cmd/bootstrapper/server_test.go | 3 +- cmd/trace/main.go | 14 ++- datastore/store.go | 14 +-- datastore/store_test.go | 8 +- fetch/fetch_test.go | 6 +- fetch/handler_test.go | 2 +- fetch/mesh_data_test.go | 4 +- fetch/p2p_test.go | 4 +- malfeasance/handler_test.go | 18 +-- mesh/mesh_test.go | 2 +- node/node.go | 4 +- syncer/syncer_test.go | 2 +- .../distributed_post_verification_test.go | 2 +- tortoise/algorithm.go | 4 +- tortoise/fixture_test.go | 4 +- tortoise/full_test.go | 8 +- tortoise/model/core.go | 9 +- tortoise/model/runner.go | 7 +- tortoise/model/runner_test.go | 5 +- tortoise/recover_test.go | 28 +++-- tortoise/replay/replay_test.go | 12 +- tortoise/rerun_test.go | 8 +- tortoise/sim/generator.go | 9 +- tortoise/sim/layer.go | 13 +- tortoise/sim/state.go | 19 +-- tortoise/sim/utils.go | 5 +- tortoise/state.go | 4 +- tortoise/tortoise.go | 12 +- tortoise/tortoise_test.go | 112 +++++++++--------- tortoise/tracer_test.go | 10 +- tortoise/verifying_test.go | 6 +- 42 files changed, 236 insertions(+), 210 deletions(-) diff --git a/activation/e2e/nipost_test.go b/activation/e2e/nipost_test.go index 2522daf673..5922303d16 100644 --- a/activation/e2e/nipost_test.go +++ b/activation/e2e/nipost_test.go @@ -136,7 +136,7 @@ func TestNIPostBuilderWithClients(t *testing.T) { goldenATX := types.ATXID{2, 3, 4} cfg := activation.DefaultPostConfig() db := sql.InMemory() - cdb := datastore.NewCachedDB(db, log.NewFromLog(logger)) + cdb := datastore.NewCachedDB(db, logger) localDb := localsql.InMemory() syncer := activation.NewMocksyncer(ctrl) diff --git a/activation/handler_test.go b/activation/handler_test.go index ee5190f544..df179db425 100644 --- a/activation/handler_test.go +++ b/activation/handler_test.go @@ -195,7 +195,7 @@ func newTestHandlerMocks(tb testing.TB, golden types.ATXID) handlerMocks { func newTestHandler(tb testing.TB, goldenATXID types.ATXID, opts ...HandlerOption) *testHandler { lg := logtest.New(tb) - cdb := datastore.NewCachedDB(sql.InMemory(), lg) + cdb := datastore.NewCachedDB(sql.InMemory(), lg.Zap()) edVerifier := signing.NewEdVerifier() mocks := newTestHandlerMocks(tb, goldenATXID) diff --git a/activation/handler_v1_test.go b/activation/handler_v1_test.go index 38658e2ca3..b7f12ffbfd 100644 --- a/activation/handler_v1_test.go +++ b/activation/handler_v1_test.go @@ -33,7 +33,7 @@ type v1TestHandler struct { func newV1TestHandler(tb testing.TB, goldenATXID types.ATXID) *v1TestHandler { lg := logtest.New(tb) - cdb := datastore.NewCachedDB(sql.InMemory(), lg) + cdb := datastore.NewCachedDB(sql.InMemory(), lg.Zap()) mocks := newTestHandlerMocks(tb, goldenATXID) return &v1TestHandler{ HandlerV1: &HandlerV1{ diff --git a/activation/handler_v2_test.go b/activation/handler_v2_test.go index a32f625a1a..4dc7207d52 100644 --- a/activation/handler_v2_test.go +++ b/activation/handler_v2_test.go @@ -10,13 +10,13 @@ import ( "github.com/spacemeshos/post/shared" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/activation/wire" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/codec" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/signing" "github.com/spacemeshos/go-spacemesh/sql" ) @@ -28,7 +28,7 @@ type v2TestHandler struct { } func newV2TestHandler(tb testing.TB, golden types.ATXID) *v2TestHandler { - lg := logtest.New(tb) + lg := zaptest.NewLogger(tb) cdb := datastore.NewCachedDB(sql.InMemory(), lg) mocks := newTestHandlerMocks(tb, golden) return &v2TestHandler{ @@ -41,7 +41,7 @@ func newV2TestHandler(tb testing.TB, golden types.ATXID) *v2TestHandler { tickSize: 1, goldenATXID: golden, nipostValidator: mocks.mValidatorV2, - log: lg.Zap(), + log: lg, fetcher: mocks.mockFetch, beacon: mocks.mbeacon, tortoise: mocks.mtortoise, diff --git a/activation/post_test.go b/activation/post_test.go index b3a8e7c233..c0273a6369 100644 --- a/activation/post_test.go +++ b/activation/post_test.go @@ -16,7 +16,6 @@ import ( "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/signing" "github.com/spacemeshos/go-spacemesh/sql" "github.com/spacemeshos/go-spacemesh/sql/atxs" @@ -365,8 +364,8 @@ func newTestPostManager(tb testing.TB) *testPostManager { close(synced) syncer.EXPECT().RegisterForATXSynced().AnyTimes().Return(synced) - cdb := datastore.NewCachedDB(sql.InMemory(), logtest.New(tb)) logger := zaptest.NewLogger(tb) + cdb := datastore.NewCachedDB(sql.InMemory(), logger) mgr, err := NewPostSetupManager(DefaultPostConfig(), logger, cdb, atxsdata.New(), goldenATXID, syncer, validator) require.NoError(tb, err) diff --git a/api/grpcserver/grpcserver_test.go b/api/grpcserver/grpcserver_test.go index 31fae406f4..dabf02e83d 100644 --- a/api/grpcserver/grpcserver_test.go +++ b/api/grpcserver/grpcserver_test.go @@ -718,7 +718,7 @@ func TestMeshService(t *testing.T) { genesis := time.Unix(genTimeUnix, 0) genTime.EXPECT().GenesisTime().Return(genesis) genTime.EXPECT().CurrentLayer().Return(layerCurrent).AnyTimes() - db := datastore.NewCachedDB(sql.InMemory(), logtest.New(t)) + db := datastore.NewCachedDB(sql.InMemory(), zaptest.NewLogger(t)) svc := NewMeshService( db, meshAPIMock, @@ -1676,7 +1676,7 @@ func TestAccountMeshDataStream_comprehensive(t *testing.T) { ctrl := gomock.NewController(t) genTime := NewMockgenesisTimeAPI(ctrl) grpcService := NewMeshService( - datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + datastore.NewCachedDB(sql.InMemory(), zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, @@ -1858,7 +1858,7 @@ func TestLayerStream_comprehensive(t *testing.T) { ctrl := gomock.NewController(t) genTime := NewMockgenesisTimeAPI(ctrl) - db := datastore.NewCachedDB(sql.InMemory(), logtest.New(t)) + db := datastore.NewCachedDB(sql.InMemory(), zaptest.NewLogger(t)) grpcService := NewMeshService( db, @@ -2004,7 +2004,7 @@ func TestMultiService(t *testing.T) { genTime.EXPECT().GenesisTime().Return(genesis) svc1 := NewNodeService(peerCounter, meshAPIMock, genTime, syncer, "v0.0.0", "cafebabe") svc2 := NewMeshService( - datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + datastore.NewCachedDB(sql.InMemory(), zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, @@ -2274,8 +2274,9 @@ func TestEventsReceived(t *testing.T) { // Give the server-side time to subscribe to events time.Sleep(time.Millisecond * 50) - svm := vm.New(sql.InMemory(), vm.WithLogger(logtest.New(t))) - conState := txs.NewConservativeState(svm, sql.InMemory(), txs.WithLogger(zaptest.NewLogger(t).Named("conState"))) + lg := logtest.New(t) + svm := vm.New(sql.InMemory(), vm.WithLogger(lg)) + conState := txs.NewConservativeState(svm, sql.InMemory(), txs.WithLogger(lg.Zap().Named("conState"))) conState.AddToCache(context.Background(), globalTx, time.Now()) weight := new(big.Rat).SetFloat64(18.7) @@ -2476,7 +2477,7 @@ func TestMeshService_EpochStream(t *testing.T) { genTime := NewMockgenesisTimeAPI(ctrl) db := sql.InMemory() srv := NewMeshService( - datastore.NewCachedDB(db, logtest.New(t)), + datastore.NewCachedDB(db, zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, diff --git a/api/grpcserver/http_server_test.go b/api/grpcserver/http_server_test.go index e1fdf3d7c1..06cb018b53 100644 --- a/api/grpcserver/http_server_test.go +++ b/api/grpcserver/http_server_test.go @@ -18,7 +18,6 @@ import ( "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/sql" ) @@ -66,7 +65,7 @@ func TestJsonApi(t *testing.T) { conStateAPI := NewMockconservativeState(ctrl) svc1 := NewNodeService(peerCounter, meshAPIMock, genTime, syncer, version, build) svc2 := NewMeshService( - datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + datastore.NewCachedDB(sql.InMemory(), zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, diff --git a/api/grpcserver/mesh_service_test.go b/api/grpcserver/mesh_service_test.go index 17d3a7d364..6acb9465aa 100644 --- a/api/grpcserver/mesh_service_test.go +++ b/api/grpcserver/mesh_service_test.go @@ -10,6 +10,7 @@ import ( pb "github.com/spacemeshos/api/release/go/spacemesh/v1" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" + "go.uber.org/zap/zaptest" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -17,7 +18,6 @@ import ( "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" "github.com/spacemeshos/go-spacemesh/events" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/malfeasance/wire" "github.com/spacemeshos/go-spacemesh/signing" "github.com/spacemeshos/go-spacemesh/sql" @@ -144,7 +144,7 @@ func TestMeshService_MalfeasanceQuery(t *testing.T) { genTime := NewMockgenesisTimeAPI(ctrl) db := sql.InMemory() srv := NewMeshService( - datastore.NewCachedDB(db, logtest.New(t)), + datastore.NewCachedDB(db, zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, @@ -197,7 +197,7 @@ func TestMeshService_MalfeasanceStream(t *testing.T) { genTime := NewMockgenesisTimeAPI(ctrl) db := sql.InMemory() srv := NewMeshService( - datastore.NewCachedDB(db, logtest.New(t)), + datastore.NewCachedDB(db, zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, @@ -303,7 +303,7 @@ func TestReadLayer(t *testing.T) { genTime := NewMockgenesisTimeAPI(ctrl) db := sql.InMemory() srv := NewMeshService( - datastore.NewCachedDB(db, logtest.New(t)), + datastore.NewCachedDB(db, zaptest.NewLogger(t)), &MeshAPIMockInstrumented{}, conStateAPI, genTime, @@ -325,7 +325,7 @@ func TestReadLayer(t *testing.T) { require.NoError(t, err) srv = NewMeshService( - datastore.NewCachedDB(db, logtest.New(t)), + datastore.NewCachedDB(db, zaptest.NewLogger(t)), meshAPIMock, conStateAPI, genTime, @@ -340,7 +340,7 @@ func TestReadLayer(t *testing.T) { // now instrument conStateAPI to return errors srv = NewMeshService( - datastore.NewCachedDB(db, logtest.New(t)), + datastore.NewCachedDB(db, zaptest.NewLogger(t)), meshAPIMock, &ConStateAPIMockInstrumented{*conStateAPI}, genTime, diff --git a/beacon/beacon_test.go b/beacon/beacon_test.go index 8766f5ca7c..e8a7b18280 100644 --- a/beacon/beacon_test.go +++ b/beacon/beacon_test.go @@ -91,7 +91,7 @@ func newTestDriver(tb testing.TB, cfg Config, p pubsub.Publisher, miners int, id tpd.mVerifier.EXPECT().Verify(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(true) - tpd.cdb = datastore.NewCachedDB(sql.InMemory(), lg) + tpd.cdb = datastore.NewCachedDB(sql.InMemory(), lg.Zap()) tpd.ProtocolDriver = New(p, signing.NewEdVerifier(), tpd.mVerifier, tpd.cdb, tpd.mClock, WithConfig(cfg), WithLogger(lg), @@ -490,14 +490,15 @@ func TestBeaconWithMetrics(t *testing.T) { func TestBeacon_NoRaceOnClose(t *testing.T) { mclock := NewMocklayerClock(gomock.NewController(t)) + lg := logtest.New(t) pd := &ProtocolDriver{ - logger: logtest.New(t).WithName("Beacon"), + logger: lg.WithName("Beacon"), beacons: make(map[types.EpochID]types.Beacon), - cdb: datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + cdb: datastore.NewCachedDB(sql.InMemory(), lg.Zap()), clock: mclock, closed: make(chan struct{}), results: make(chan result.Beacon, 100), - metricsCollector: metrics.NewBeaconMetricsCollector(nil, logtest.New(t).WithName("metrics")), + metricsCollector: metrics.NewBeaconMetricsCollector(nil, lg.WithName("metrics")), } // check for a race between onResult and Close var eg errgroup.Group @@ -523,11 +524,12 @@ func TestBeacon_NoRaceOnClose(t *testing.T) { func TestBeacon_BeaconsWithDatabase(t *testing.T) { t.Parallel() + lg := logtest.New(t) mclock := NewMocklayerClock(gomock.NewController(t)) pd := &ProtocolDriver{ - logger: logtest.New(t).WithName("Beacon"), + logger: lg.WithName("Beacon"), beacons: make(map[types.EpochID]types.Beacon), - cdb: datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + cdb: datastore.NewCachedDB(sql.InMemory(), lg.Zap()), clock: mclock, } epoch3 := types.EpochID(3) @@ -575,11 +577,12 @@ func TestBeacon_BeaconsWithDatabase(t *testing.T) { func TestBeacon_BeaconsWithDatabaseFailure(t *testing.T) { t.Parallel() + lg := logtest.New(t) mclock := NewMocklayerClock(gomock.NewController(t)) pd := &ProtocolDriver{ - logger: logtest.New(t).WithName("Beacon"), + logger: lg.WithName("Beacon"), beacons: make(map[types.EpochID]types.Beacon), - cdb: datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + cdb: datastore.NewCachedDB(sql.InMemory(), lg.Zap()), clock: mclock, } epoch := types.EpochID(3) @@ -593,10 +596,11 @@ func TestBeacon_BeaconsWithDatabaseFailure(t *testing.T) { func TestBeacon_BeaconsCleanupOldEpoch(t *testing.T) { t.Parallel() + lg := logtest.New(t) mclock := NewMocklayerClock(gomock.NewController(t)) pd := &ProtocolDriver{ - logger: logtest.New(t).WithName("Beacon"), - cdb: datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + logger: lg.WithName("Beacon"), + cdb: datastore.NewCachedDB(sql.InMemory(), lg.Zap()), beacons: make(map[types.EpochID]types.Beacon), ballotsBeacons: make(map[types.EpochID]map[types.Beacon]*beaconWeight), clock: mclock, @@ -696,11 +700,12 @@ func TestBeacon_ReportBeaconFromBallot(t *testing.T) { require.Greater(t, maxWeight.Float(), 0.0) } + lg := logtest.New(t) mclock := NewMocklayerClock(gomock.NewController(t)) pd := &ProtocolDriver{ - logger: logtest.New(t).WithName("Beacon"), + logger: lg.WithName("Beacon"), config: UnitTestConfig(), - cdb: datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + cdb: datastore.NewCachedDB(sql.InMemory(), lg.Zap()), beacons: make(map[types.EpochID]types.Beacon), ballotsBeacons: make(map[types.EpochID]map[types.Beacon]*beaconWeight), clock: mclock, @@ -731,11 +736,12 @@ func TestBeacon_ReportBeaconFromBallot(t *testing.T) { func TestBeacon_ReportBeaconFromBallot_SameBallot(t *testing.T) { t.Parallel() + lg := logtest.New(t) mclock := NewMocklayerClock(gomock.NewController(t)) pd := &ProtocolDriver{ - logger: logtest.New(t).WithName("Beacon"), + logger: lg.WithName("Beacon"), config: UnitTestConfig(), - cdb: datastore.NewCachedDB(sql.InMemory(), logtest.New(t)), + cdb: datastore.NewCachedDB(sql.InMemory(), lg.Zap()), beacons: make(map[types.EpochID]types.Beacon), ballotsBeacons: make(map[types.EpochID]map[types.Beacon]*beaconWeight), clock: mclock, diff --git a/checkpoint/recovery_test.go b/checkpoint/recovery_test.go index 3cdbd1e42b..14a9fa8ed1 100644 --- a/checkpoint/recovery_test.go +++ b/checkpoint/recovery_test.go @@ -236,7 +236,7 @@ func validateAndPreserveData( mvalidator := activation.NewMocknipostValidator(ctrl) mreceiver := activation.NewMockAtxReceiver(ctrl) mtrtl := smocks.NewMockTortoise(ctrl) - cdb := datastore.NewCachedDB(db, lg) + cdb := datastore.NewCachedDB(db, lg.Zap()) atxHandler := activation.NewHandler( "", cdb, diff --git a/cmd/bootstrapper/generator_test.go b/cmd/bootstrapper/generator_test.go index b96f387631..7b1d4153e7 100644 --- a/cmd/bootstrapper/generator_test.go +++ b/cmd/bootstrapper/generator_test.go @@ -103,7 +103,7 @@ func TestGenerator_Generate(t *testing.T) { targetEpoch := types.EpochID(3) db := sql.InMemory() createAtxs(t, db, targetEpoch-1, types.RandomActiveSet(activeSetSize)) - cfg, cleanup := launchServer(t, datastore.NewCachedDB(db, logtest.New(t))) + cfg, cleanup := launchServer(t, datastore.NewCachedDB(db, zaptest.NewLogger(t))) t.Cleanup(cleanup) for _, tc := range []struct { @@ -169,15 +169,16 @@ func TestGenerator_Generate(t *testing.T) { func TestGenerator_CheckAPI(t *testing.T) { targetEpoch := types.EpochID(3) db := sql.InMemory() + lg := logtest.New(t) createAtxs(t, db, targetEpoch-1, types.RandomActiveSet(activeSetSize)) - cfg, cleanup := launchServer(t, datastore.NewCachedDB(db, logtest.New(t))) + cfg, cleanup := launchServer(t, datastore.NewCachedDB(db, lg.Zap())) t.Cleanup(cleanup) fs := afero.NewMemMapFs() g := NewGenerator( "https://api.blockcypher.com/v1/btc/main", cfg.PublicListener, - WithLogger(logtest.New(t)), + WithLogger(lg), WithFilesystem(fs), WithHttpClient(http.DefaultClient), ) diff --git a/cmd/bootstrapper/server_test.go b/cmd/bootstrapper/server_test.go index 73c908b51b..910d448c79 100644 --- a/cmd/bootstrapper/server_test.go +++ b/cmd/bootstrapper/server_test.go @@ -14,6 +14,7 @@ import ( "github.com/spf13/afero" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/bootstrap" "github.com/spacemeshos/go-spacemesh/common/types" @@ -57,7 +58,7 @@ func updateCheckpoint(t *testing.T, ctx context.Context, data string) { func TestServer(t *testing.T) { db := sql.InMemory() - cfg, cleanup := launchServer(t, datastore.NewCachedDB(db, logtest.New(t))) + cfg, cleanup := launchServer(t, datastore.NewCachedDB(db, zaptest.NewLogger(t))) t.Cleanup(cleanup) fs := afero.NewMemMapFs() diff --git a/cmd/trace/main.go b/cmd/trace/main.go index 7f4aedc961..a126df42ed 100644 --- a/cmd/trace/main.go +++ b/cmd/trace/main.go @@ -2,12 +2,12 @@ package main import ( "flag" + "os" "runtime" "go.uber.org/zap" "go.uber.org/zap/zapcore" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/tortoise" ) @@ -18,14 +18,18 @@ var ( func main() { flag.Parse() - atom := zap.NewAtomicLevelAt(*level) - logger := log.NewWithLevel("trace", atom) - logger.With().Debug("using trace", log.String("path", flag.Arg(0))) + core := zapcore.NewCore( + zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig()), + os.Stdout, + zap.NewAtomicLevelAt(*level), + ) + logger := zap.New(core) + logger.Debug("using trace", zap.String("path", flag.Arg(0))) var breakpoint func() if *bpoint { breakpoint = runtime.Breakpoint } if err := tortoise.RunTrace(flag.Arg(0), breakpoint, tortoise.WithLogger(logger)); err != nil { - logger.With().Fatal("run trace failed", log.Err(err)) + logger.Fatal("run trace failed", zap.Error(err)) } } diff --git a/datastore/store.go b/datastore/store.go index c649cd69d6..1d5180bfc5 100644 --- a/datastore/store.go +++ b/datastore/store.go @@ -7,10 +7,10 @@ import ( "sync" lru "github.com/hashicorp/golang-lru/v2" + "go.uber.org/zap" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/malfeasance/wire" "github.com/spacemeshos/go-spacemesh/proposals/store" "github.com/spacemeshos/go-spacemesh/sql" @@ -42,7 +42,7 @@ type Executor interface { type CachedDB struct { Executor sql.QueryCache - logger log.Log + logger *zap.Logger // cache is optional in tests. It MUST be set for the 'App' // for properly checking malfeasance. @@ -91,26 +91,26 @@ func WithConsensusCache(c *atxsdata.Data) Opt { } // NewCachedDB create an instance of a CachedDB. -func NewCachedDB(db Executor, lg log.Log, opts ...Opt) *CachedDB { +func NewCachedDB(db Executor, lg *zap.Logger, opts ...Opt) *CachedDB { o := cacheOpts{cfg: DefaultConfig()} for _, opt := range opts { opt(&o) } - lg.With().Info("initialized datastore", log.Any("config", o.cfg)) + lg.Info("initialized datastore", zap.Any("config", o.cfg)) atxHdrCache, err := lru.New[types.ATXID, *types.ActivationTx](o.cfg.ATXSize) if err != nil { - lg.Fatal("failed to create atx cache", err) + lg.Fatal("failed to create atx cache", zap.Error(err)) } malfeasanceCache, err := lru.New[types.NodeID, *wire.MalfeasanceProof](o.cfg.MalfeasanceSize) if err != nil { - lg.Fatal("failed to create malfeasance cache", err) + lg.Fatal("failed to create malfeasance cache", zap.Error(err)) } vrfNonceCache, err := lru.New[VrfNonceKey, types.VRFPostIndex](o.cfg.ATXSize) if err != nil { - lg.Fatal("failed to create vrf nonce cache", err) + lg.Fatal("failed to create vrf nonce cache", zap.Error(err)) } return &CachedDB{ diff --git a/datastore/store_test.go b/datastore/store_test.go index d6ab5db639..cc52b1415e 100644 --- a/datastore/store_test.go +++ b/datastore/store_test.go @@ -8,6 +8,7 @@ import ( "time" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/activation/wire" "github.com/spacemeshos/go-spacemesh/atxsdata" @@ -15,7 +16,6 @@ import ( "github.com/spacemeshos/go-spacemesh/common/fixture" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log/logtest" mwire "github.com/spacemeshos/go-spacemesh/malfeasance/wire" "github.com/spacemeshos/go-spacemesh/proposals/store" "github.com/spacemeshos/go-spacemesh/signing" @@ -55,7 +55,7 @@ func getBytes( func TestMalfeasanceProof_Honest(t *testing.T) { db := sql.InMemory() - cdb := datastore.NewCachedDB(db, logtest.New(t)) + cdb := datastore.NewCachedDB(db, zaptest.NewLogger(t)) require.Equal(t, 0, cdb.MalfeasanceCacheSize()) nodeID1 := types.NodeID{1} @@ -116,7 +116,7 @@ func TestMalfeasanceProof_Honest(t *testing.T) { func TestMalfeasanceProof_Dishonest(t *testing.T) { db := sql.InMemory() - cdb := datastore.NewCachedDB(db, logtest.New(t)) + cdb := datastore.NewCachedDB(db, zaptest.NewLogger(t)) require.Equal(t, 0, cdb.MalfeasanceCacheSize()) // a bad guy @@ -412,7 +412,7 @@ func Test_MarkingMalicious(t *testing.T) { db := sql.InMemory() store := atxsdata.New() id := types.RandomNodeID() - cdb := datastore.NewCachedDB(db, logtest.New(t), datastore.WithConsensusCache(store)) + cdb := datastore.NewCachedDB(db, zaptest.NewLogger(t), datastore.WithConsensusCache(store)) cdb.CacheMalfeasanceProof(id, &mwire.MalfeasanceProof{}) m, err := cdb.IsMalicious(id) diff --git a/fetch/fetch_test.go b/fetch/fetch_test.go index 23f389bef6..dff1aa0cd4 100644 --- a/fetch/fetch_test.go +++ b/fetch/fetch_test.go @@ -80,7 +80,7 @@ func createFetch(tb testing.TB) *testFetch { } lg := logtest.New(tb) - tf.Fetch = NewFetch(datastore.NewCachedDB(sql.InMemory(), lg), store.New(), nil, + tf.Fetch = NewFetch(datastore.NewCachedDB(sql.InMemory(), lg.Zap()), store.New(), nil, WithContext(context.TODO()), WithConfig(cfg), WithLogger(lg), @@ -117,7 +117,7 @@ func badReceiver(context.Context, types.Hash32, p2p.Peer, []byte) error { func TestFetch_Start(t *testing.T) { lg := logtest.New(t) - f := NewFetch(datastore.NewCachedDB(sql.InMemory(), lg), store.New(), nil, + f := NewFetch(datastore.NewCachedDB(sql.InMemory(), lg.Zap()), store.New(), nil, WithContext(context.TODO()), WithConfig(DefaultConfig()), WithLogger(lg), @@ -384,7 +384,7 @@ func TestFetch_PeerDroppedWhenMessageResultsInValidationReject(t *testing.T) { }) defer eg.Wait() - fetcher := NewFetch(datastore.NewCachedDB(sql.InMemory(), lg), store.New(), h, + fetcher := NewFetch(datastore.NewCachedDB(sql.InMemory(), lg.Zap()), store.New(), h, WithContext(ctx), WithConfig(cfg), WithLogger(lg), diff --git a/fetch/handler_test.go b/fetch/handler_test.go index 023f5c4de9..87c48f89bc 100644 --- a/fetch/handler_test.go +++ b/fetch/handler_test.go @@ -35,7 +35,7 @@ type testHandler struct { func createTestHandler(t testing.TB, opts ...sql.Opt) *testHandler { lg := logtest.New(t) db := sql.InMemory(opts...) - cdb := datastore.NewCachedDB(db, lg) + cdb := datastore.NewCachedDB(db, lg.Zap()) return &testHandler{ handler: newHandler(cdb, datastore.NewBlobStore(cdb, store.New()), lg), db: db, diff --git a/fetch/mesh_data_test.go b/fetch/mesh_data_test.go index de091474ca..da6ef89ccf 100644 --- a/fetch/mesh_data_test.go +++ b/fetch/mesh_data_test.go @@ -11,6 +11,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" + "go.uber.org/zap/zaptest" "golang.org/x/sync/errgroup" "github.com/spacemeshos/go-spacemesh/codec" @@ -18,7 +19,6 @@ import ( "github.com/spacemeshos/go-spacemesh/datastore" "github.com/spacemeshos/go-spacemesh/fetch/mocks" "github.com/spacemeshos/go-spacemesh/genvm/sdk/wallet" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/p2p" "github.com/spacemeshos/go-spacemesh/p2p/pubsub" "github.com/spacemeshos/go-spacemesh/p2p/server" @@ -867,7 +867,7 @@ func Test_GetAtxsLimiting(t *testing.T) { cfg.QueueSize = 1000 cfg.GetAtxsConcurrency = getAtxConcurrency - cdb := datastore.NewCachedDB(sql.InMemory(), logtest.New(t)) + cdb := datastore.NewCachedDB(sql.InMemory(), zaptest.NewLogger(t)) client := server.New(mesh.Hosts()[0], hashProtocol, nil) host, err := p2p.Upgrade(mesh.Hosts()[0]) require.NoError(t, err) diff --git a/fetch/p2p_test.go b/fetch/p2p_test.go index 0667262b0c..5557bbcea1 100644 --- a/fetch/p2p_test.go +++ b/fetch/p2p_test.go @@ -110,11 +110,11 @@ func createP2PFetch( t: t, clientDB: clientDB, clientPDB: store.New(store.WithLogger(lg.Zap())), - clientCDB: datastore.NewCachedDB(clientDB, lg), + clientCDB: datastore.NewCachedDB(clientDB, lg.Zap()), serverID: serverHost.ID(), serverDB: serverDB, serverPDB: store.New(store.WithLogger(lg.Zap())), - serverCDB: datastore.NewCachedDB(serverDB, lg), + serverCDB: datastore.NewCachedDB(serverDB, lg.Zap()), receivedData: make(map[blobKey][]byte), } diff --git a/malfeasance/handler_test.go b/malfeasance/handler_test.go index f5dd2174cf..0218bc906d 100644 --- a/malfeasance/handler_test.go +++ b/malfeasance/handler_test.go @@ -57,7 +57,7 @@ func TestHandler_HandleMalfeasanceProof_multipleATXs(t *testing.T) { store := atxsdata.New() h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg, datastore.WithConsensusCache(store)), + datastore.NewCachedDB(db, lg.Zap(), datastore.WithConsensusCache(store)), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -277,7 +277,7 @@ func TestHandler_HandleMalfeasanceProof_multipleBallots(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -498,7 +498,7 @@ func TestHandler_HandleMalfeasanceProof_hareEquivocation(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -767,7 +767,7 @@ func TestHandler_CrossDomain(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -831,7 +831,7 @@ func TestHandler_HandleSyncedMalfeasanceProof_multipleATXs(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -894,7 +894,7 @@ func TestHandler_HandleSyncedMalfeasanceProof_multipleBallots(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -956,7 +956,7 @@ func TestHandler_HandleSyncedMalfeasanceProof_hareEquivocation(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -1021,7 +1021,7 @@ func TestHandler_HandleSyncedMalfeasanceProof_wrongHash(t *testing.T) { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, @@ -1100,7 +1100,7 @@ func newTestMalfeasanceHandler(t testing.TB) *testMalfeasanceHandler { postVerifier := malfeasance.NewMockpostVerifier(ctrl) h := malfeasance.NewHandler( - datastore.NewCachedDB(db, lg), + datastore.NewCachedDB(db, lg.Zap()), lg, "self", []types.NodeID{types.RandomNodeID()}, diff --git a/mesh/mesh_test.go b/mesh/mesh_test.go index 3c58f3fa76..30abe325d0 100644 --- a/mesh/mesh_test.go +++ b/mesh/mesh_test.go @@ -58,7 +58,7 @@ func createTestMesh(t *testing.T) *testMesh { ctrl := gomock.NewController(t) tm := &testMesh{ db: db, - cdb: datastore.NewCachedDB(db, lg), + cdb: datastore.NewCachedDB(db, lg.Zap()), atxsdata: atxsdata, mockClock: mocks.NewMocklayerClock(ctrl), mockVM: mocks.NewMockvmState(ctrl), diff --git a/node/node.go b/node/node.go index def147a569..b86a5e98cb 100644 --- a/node/node.go +++ b/node/node.go @@ -696,7 +696,7 @@ func (app *App) initServices(ctx context.Context) error { trtlCfg.BadBeaconVoteDelayLayers = app.Config.LayersPerEpoch } trtlopts := []tortoise.Opt{ - tortoise.WithLogger(app.addLogger(TrtlLogger, lg)), + tortoise.WithLogger(app.addLogger(TrtlLogger, lg).Zap()), tortoise.WithConfig(trtlCfg), } if trtlCfg.EnableTracer { @@ -1931,7 +1931,7 @@ func (app *App) setupDBs(ctx context.Context, lg log.Log) error { } app.atxsdata = data app.log.With().Info("cache warmup", log.Duration("duration", time.Since(start))) - app.cachedDB = datastore.NewCachedDB(sqlDB, app.addLogger(CachedDBLogger, lg), + app.cachedDB = datastore.NewCachedDB(sqlDB, app.addLogger(CachedDBLogger, lg).Zap(), datastore.WithConfig(app.Config.Cache), datastore.WithConsensusCache(data), ) diff --git a/syncer/syncer_test.go b/syncer/syncer_test.go index 3a19872d9a..efa7caf5ae 100644 --- a/syncer/syncer_test.go +++ b/syncer/syncer_test.go @@ -128,7 +128,7 @@ func newTestSyncer(t *testing.T, interval time.Duration) *testSyncer { mForkFinder: mocks.NewMockforkFinder(ctrl), } db := sql.InMemory() - ts.cdb = datastore.NewCachedDB(db, lg) + ts.cdb = datastore.NewCachedDB(db, lg.Zap()) var err error atxsdata := atxsdata.New() exec := mesh.NewExecutor(ts.cdb, atxsdata, ts.mVm, ts.mConState, lg) diff --git a/systest/tests/distributed_post_verification_test.go b/systest/tests/distributed_post_verification_test.go index 4ec6bd5cf8..9861efe390 100644 --- a/systest/tests/distributed_post_verification_test.go +++ b/systest/tests/distributed_post_verification_test.go @@ -113,7 +113,7 @@ func TestPostMalfeasanceProof(t *testing.T) { postSetupMgr, err := activation.NewPostSetupManager( cfg.POST, logger.Named("post"), - datastore.NewCachedDB(sql.InMemory(), log.NewNop()), + datastore.NewCachedDB(sql.InMemory(), zap.NewNop()), atxsdata.New(), cl.GoldenATX(), syncer, diff --git a/tortoise/algorithm.go b/tortoise/algorithm.go index 6fd92db33b..215051c438 100644 --- a/tortoise/algorithm.go +++ b/tortoise/algorithm.go @@ -88,9 +88,9 @@ type Tortoise struct { type Opt func(t *Tortoise) // WithLogger defines logger for tortoise. -func WithLogger(logger log.Log) Opt { +func WithLogger(logger *zap.Logger) Opt { return func(t *Tortoise) { - t.logger = logger.Zap() + t.logger = logger } } diff --git a/tortoise/fixture_test.go b/tortoise/fixture_test.go index f9c1f42c8f..cf6fd691de 100644 --- a/tortoise/fixture_test.go +++ b/tortoise/fixture_test.go @@ -9,12 +9,12 @@ import ( "testing" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/common/types/result" "github.com/spacemeshos/go-spacemesh/hash" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/tortoise/opinionhash" ) @@ -731,7 +731,7 @@ func (s *session) withDelay(val uint32) *session { func (s *session) tortoise() *Tortoise { s.ensureConfig() - trt, err := New(atxsdata.New(), WithLogger(logtest.New(s.tb)), WithConfig(*s.config)) + trt, err := New(atxsdata.New(), WithLogger(zaptest.NewLogger(s.tb)), WithConfig(*s.config)) require.NoError(s.tb, err) return trt } diff --git a/tortoise/full_test.go b/tortoise/full_test.go index 8613680585..a1a66f0069 100644 --- a/tortoise/full_test.go +++ b/tortoise/full_test.go @@ -6,10 +6,10 @@ import ( "github.com/spacemeshos/fixed" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/proposals/util" "github.com/spacemeshos/go-spacemesh/signing" ) @@ -62,7 +62,7 @@ func TestFullBallotFilter(t *testing.T) { config := Config{} config.BadBeaconVoteDelayLayers = tc.distance require.Equal(t, tc.expect, newFullTortoise(config, state).shouldBeDelayed( - logtest.Zap(t), &tc.ballot)) + zaptest.NewLogger(t), &tc.ballot)) }) } } @@ -321,7 +321,7 @@ func TestFullCountVotes(t *testing.T) { }, } { t.Run(tc.desc, func(t *testing.T) { - logger := logtest.Zap(t) + logger := zaptest.NewLogger(t) tortoise := defaultAlgorithm(t) var ( activeset []types.ATXID @@ -556,7 +556,7 @@ func TestFullVerify(t *testing.T) { } layer.blocks = append(layer.blocks, block) } - v, _ := full.verify(logtest.Zap(t), target) + v, _ := full.verify(zaptest.NewLogger(t), target) require.Equal(t, tc.validity != nil, v) if tc.validity != nil { for i, expect := range tc.validity { diff --git a/tortoise/model/core.go b/tortoise/model/core.go index 831d4c2b82..ce7022fa33 100644 --- a/tortoise/model/core.go +++ b/tortoise/model/core.go @@ -6,10 +6,11 @@ import ( "math/rand" "time" + "go.uber.org/zap" + "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/signing" "github.com/spacemeshos/go-spacemesh/sql" "github.com/spacemeshos/go-spacemesh/sql/atxs" @@ -26,7 +27,7 @@ const ( units = 10 ) -func newCore(rng *rand.Rand, id string, logger log.Log) *core { +func newCore(rng *rand.Rand, id string, logger *zap.Logger) *core { cdb := datastore.NewCachedDB(sql.InMemory(), logger) sig, err := signing.NewEdSigner(signing.WithKeyFromRand(rng)) if err != nil { @@ -57,7 +58,7 @@ func newCore(rng *rand.Rand, id string, logger log.Log) *core { // core state machine. type core struct { id string - logger log.Log + logger *zap.Logger rng *rand.Rand cdb *datastore.CachedDB @@ -175,7 +176,7 @@ func (c *core) OnMessage(m Messenger, event Message) { atxs.Add(c.cdb, ev.Atx) malicious, err := c.cdb.IsMalicious(ev.Atx.SmesherID) if err != nil { - c.logger.With().Fatal("failed is malicious lookup", log.Err(err)) + c.logger.Fatal("failed is malicious lookup", zap.Error(err)) } c.atxdata.AddFromAtx(ev.Atx, malicious) case MessageBeacon: diff --git a/tortoise/model/runner.go b/tortoise/model/runner.go index 6ae2e30086..36c08cdae6 100644 --- a/tortoise/model/runner.go +++ b/tortoise/model/runner.go @@ -5,21 +5,22 @@ import ( "reflect" "strconv" + "go.uber.org/zap" + "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log" ) type model interface { OnMessage(Messenger, Message) } -func newCluster(logger log.Log, rng *rand.Rand) *cluster { +func newCluster(logger *zap.Logger, rng *rand.Rand) *cluster { return &cluster{logger: logger, rng: rng} } type cluster struct { rng *rand.Rand - logger log.Log + logger *zap.Logger models []model } diff --git a/tortoise/model/runner_test.go b/tortoise/model/runner_test.go index 12417a5992..3bc3c18caf 100644 --- a/tortoise/model/runner_test.go +++ b/tortoise/model/runner_test.go @@ -4,8 +4,9 @@ import ( "math/rand" "testing" + "go.uber.org/zap/zaptest" + "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log/logtest" ) func TestBasicModel(t *testing.T) { @@ -16,7 +17,7 @@ func TestBasicModel(t *testing.T) { ) rng := rand.New(rand.NewSource(1001)) - c := newCluster(logtest.New(t), rng) + c := newCluster(zaptest.NewLogger(t), rng) for i := 0; i < numSmeshers; i++ { c.addCore() } diff --git a/tortoise/recover_test.go b/tortoise/recover_test.go index 8c21fc28ea..ecc4c6b51b 100644 --- a/tortoise/recover_test.go +++ b/tortoise/recover_test.go @@ -5,11 +5,11 @@ import ( "testing" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/common/types/result" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/sql" "github.com/spacemeshos/go-spacemesh/sql/atxs" "github.com/spacemeshos/go-spacemesh/sql/blocks" @@ -43,10 +43,11 @@ func TestRecoverState(t *testing.T) { s := sim.New(sim.WithLayerSize(size)) s.Setup() + lg := zaptest.NewLogger(t) cfg := defaultTestConfig() cfg.LayerSize = size simState := s.GetState(0) - tortoise := tortoiseFromSimState(t, simState, WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(t, simState, WithLogger(lg), WithConfig(cfg)) var last, verified types.LayerID for i := 0; i < 50; i++ { last = s.Next() @@ -60,13 +61,13 @@ func TestRecoverState(t *testing.T) { s.GetState(0).DB.Executor, simState.Atxdata, last, - WithLogger(logtest.New(t)), + WithLogger(lg), WithConfig(cfg), ) require.NoError(t, err) verified = tortoise2.LatestComplete() require.Equal(t, last.Sub(1), verified) - tortoiseFromSimState(t, s.GetState(0), WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoiseFromSimState(t, s.GetState(0), WithLogger(lg), WithConfig(cfg)) tortoise2.TallyVotes(ctx, last) verified = tortoise2.LatestComplete() require.Equal(t, last.Sub(1), verified) @@ -84,7 +85,7 @@ func TestRecoverEmpty(t *testing.T) { s.GetState(0).DB.Executor, atxsdata.New(), 100, - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), WithConfig(cfg), ) require.NoError(t, err) @@ -96,10 +97,11 @@ func TestRecoverWithOpinion(t *testing.T) { s := sim.New(sim.WithLayerSize(size)) s.Setup() + lg := zaptest.NewLogger(t) cfg := defaultTestConfig() cfg.LayerSize = size - trt := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + trt := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(lg)) for _, lid := range sim.GenLayers(s, sim.WithSequence(10)) { trt.TallyVotes(context.Background(), lid) } @@ -120,7 +122,7 @@ func TestRecoverWithOpinion(t *testing.T) { s.GetState(0).DB.Executor, atxsdata.New(), last.Layer, - WithLogger(logtest.New(t)), + WithLogger(lg), WithConfig(cfg), ) require.NoError(t, err) @@ -135,10 +137,11 @@ func TestResetPending(t *testing.T) { s := sim.New(sim.WithLayerSize(size)) s.Setup() + lg := zaptest.NewLogger(t) cfg := defaultTestConfig() cfg.LayerSize = size - trt := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + trt := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(lg)) const n = 10 var last types.LayerID for _, lid := range sim.GenLayers(s, sim.WithSequence(n)) { @@ -163,7 +166,7 @@ func TestResetPending(t *testing.T) { s.GetState(0).DB.Executor, atxsdata.New(), last, - WithLogger(logtest.New(t)), + WithLogger(lg), WithConfig(cfg), ) require.NoError(t, err) @@ -178,6 +181,7 @@ func TestWindowRecovery(t *testing.T) { s := sim.New(sim.WithLayerSize(size)) s.Setup() + lg := zaptest.NewLogger(t) const epochSize = 4 require.EqualValues(t, epochSize, types.GetLayersPerEpoch()) cfg := defaultTestConfig() @@ -185,7 +189,7 @@ func TestWindowRecovery(t *testing.T) { cfg.WindowSize = epochSize*2 + epochSize/2 // to test that window extends to full 3rd epoch const n = epochSize * 5 - trt := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + trt := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(lg)) var last types.LayerID for _, lid := range sim.GenLayers(s, sim.WithSequence(n)) { last = lid @@ -209,7 +213,7 @@ func TestWindowRecovery(t *testing.T) { s.GetState(0).DB.Executor, atxsdata.New(), last, - WithLogger(logtest.New(t)), + WithLogger(lg), WithConfig(cfg), ) require.NoError(t, err) @@ -236,7 +240,7 @@ func TestRecoverOnlyAtxs(t *testing.T) { } future := last + 1000 recovered, err := Recover(context.Background(), s.GetState(0).DB.Executor, s.GetState(0).Atxdata, future, - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), WithConfig(cfg), ) require.NoError(t, err) diff --git a/tortoise/replay/replay_test.go b/tortoise/replay/replay_test.go index 7ad411683a..77e71079ee 100644 --- a/tortoise/replay/replay_test.go +++ b/tortoise/replay/replay_test.go @@ -10,11 +10,11 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/config" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/sql" "github.com/spacemeshos/go-spacemesh/sql/layers" "github.com/spacemeshos/go-spacemesh/timesync" @@ -34,9 +34,7 @@ func TestReplayMainnet(t *testing.T) { cfg := config.MainnetConfig() types.SetLayersPerEpoch(cfg.LayersPerEpoch) - log.JSONLog(true) - logger := log.NewWithLevel("replay", zap.NewAtomicLevelAt(*level)) - zlog := logger.Zap() + logger := zaptest.NewLogger(t, zaptest.Level(*level)).Named("replay") opts := []tortoise.Opt{ tortoise.WithLogger(logger), tortoise.WithConfig(cfg.Tortoise), @@ -48,7 +46,7 @@ func TestReplayMainnet(t *testing.T) { timesync.WithLayerDuration(cfg.LayerDuration), timesync.WithTickInterval(1*time.Second), timesync.WithGenesisTime(genesis), - timesync.WithLogger(log.NewNop().Zap()), + timesync.WithLogger(zap.NewNop()), ) require.NoError(t, err) @@ -69,10 +67,10 @@ func TestReplayMainnet(t *testing.T) { ) require.NoError(t, err) updates := trtl.Updates() - zlog.Info( + logger.Info( "initialized", zap.Duration("duration", time.Since(start)), - zap.Array("updates", log.ArrayMarshalerFunc(func(encoder log.ArrayEncoder) error { + zap.Array("updates", zapcore.ArrayMarshalerFunc(func(encoder zapcore.ArrayEncoder) error { for _, rst := range updates { encoder.AppendObject(&rst) } diff --git a/tortoise/rerun_test.go b/tortoise/rerun_test.go index 30e973b408..ccf9ab9407 100644 --- a/tortoise/rerun_test.go +++ b/tortoise/rerun_test.go @@ -6,9 +6,9 @@ import ( "time" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/sql/blocks" "github.com/spacemeshos/go-spacemesh/tortoise/sim" ) @@ -26,7 +26,7 @@ func TestRerunRevertNonverifiedLayers(t *testing.T) { cfg.Hdist = good + 1 cfg.LayerSize = size - tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(zaptest.NewLogger(t)), WithConfig(cfg)) var last, verified types.LayerID for _, last = range sim.GenLayers(s, sim.WithSequence(good), @@ -58,7 +58,7 @@ func testWindowCounting(tb testing.TB, maliciousLayers, windowSize int, expected cfg.Zdist = 1 cfg.WindowSize = uint32(windowSize) - tortoise := tortoiseFromSimState(tb, s.GetState(0), WithLogger(logtest.New(tb)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(tb, s.GetState(0), WithLogger(zaptest.NewLogger(tb)), WithConfig(cfg)) const firstBatch = 2 misverified := genesis.Add(firstBatch) @@ -133,7 +133,7 @@ func benchmarkTallyVotes(b *testing.B, size int, windowsize uint32, opts ...sim. cfg.LayerSize = layerSize cfg.WindowSize = windowsize - tortoise := tortoiseFromSimState(b, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(b))) + tortoise := tortoiseFromSimState(b, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(b))) // generate info start := time.Now() diff --git a/tortoise/sim/generator.go b/tortoise/sim/generator.go index 4198aed90a..3ebc5a82c4 100644 --- a/tortoise/sim/generator.go +++ b/tortoise/sim/generator.go @@ -4,9 +4,10 @@ import ( "math/rand" "time" + "go.uber.org/zap" + "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/signing" ) @@ -28,7 +29,7 @@ func WithLayerSize(size uint32) GenOpt { } // WithLogger configures logger. -func WithLogger(logger log.Log) GenOpt { +func WithLogger(logger *zap.Logger) GenOpt { return func(g *Generator) { g.logger = logger } @@ -85,7 +86,7 @@ func New(opts ...GenOpt) *Generator { g := &Generator{ rng: rand.New(rand.NewSource(0)), conf: defaults(), - logger: log.NewNop(), + logger: zap.NewNop(), reordered: map[types.LayerID]types.LayerID{}, } for _, opt := range opts { @@ -101,7 +102,7 @@ func New(opts ...GenOpt) *Generator { // Generator for layers of blocks. type Generator struct { - logger log.Log + logger *zap.Logger rng *rand.Rand conf config diff --git a/tortoise/sim/layer.go b/tortoise/sim/layer.go index c6097471ed..5a1ba8a7d6 100644 --- a/tortoise/sim/layer.go +++ b/tortoise/sim/layer.go @@ -1,8 +1,9 @@ package sim import ( + "go.uber.org/zap" + "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/proposals/util" "github.com/spacemeshos/go-spacemesh/signing" "github.com/spacemeshos/go-spacemesh/sql/beacons" @@ -179,11 +180,11 @@ func (g *Generator) genLayer(cfg nextConf) types.LayerID { } beacon, err := beacons.Get(g.states[0].DB, g.nextLayer.GetEpoch()) if err != nil { - g.logger.With().Panic("failed to get a beacon", log.Err(err)) + g.logger.Panic("failed to get a beacon", zap.Error(err)) } n, err := util.GetNumEligibleSlots(atx.GetWeight(), 0, total, g.conf.LayerSize, g.conf.LayersPerEpoch) if err != nil { - g.logger.With().Panic("eligible slots", log.Err(err)) + g.logger.Panic("eligible slots", zap.Error(err)) } ballot := &types.Ballot{ InnerBallot: types.InnerBallot{ @@ -201,7 +202,7 @@ func (g *Generator) genLayer(cfg nextConf) types.LayerID { ballot.Signature = signer.Sign(signing.BALLOT, ballot.SignedBytes()) ballot.SmesherID = signer.NodeID() if err := ballot.Initialize(); err != nil { - g.logger.With().Panic("failed to init ballot", log.Err(err)) + g.logger.Panic("failed to init ballot", zap.Error(err)) } for _, state := range g.states { state.OnBallot(ballot) @@ -209,8 +210,8 @@ func (g *Generator) genLayer(cfg nextConf) types.LayerID { layer.AddBallot(ballot) } if len(cfg.BlockTickHeights) < cfg.NumBlocks { - g.logger.With().Panic("BlockTickHeights should be at least NumBlocks", - log.Int("num blocks", cfg.NumBlocks), + g.logger.Panic("BlockTickHeights should be at least NumBlocks", + zap.Int("num blocks", cfg.NumBlocks), ) } for i := 0; i < cfg.NumBlocks; i++ { diff --git a/tortoise/sim/state.go b/tortoise/sim/state.go index 4d850597d9..266997fec9 100644 --- a/tortoise/sim/state.go +++ b/tortoise/sim/state.go @@ -3,10 +3,11 @@ package sim import ( "errors" + "go.uber.org/zap" + "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/sql" "github.com/spacemeshos/go-spacemesh/sql/atxs" "github.com/spacemeshos/go-spacemesh/sql/ballots" @@ -16,7 +17,7 @@ import ( "github.com/spacemeshos/go-spacemesh/sql/layers" ) -func newState(logger log.Log, conf config, atxdata *atxsdata.Data) State { +func newState(logger *zap.Logger, conf config, atxdata *atxsdata.Data) State { return State{ logger: logger, DB: newCacheDB(logger, conf), @@ -26,7 +27,7 @@ func newState(logger log.Log, conf config, atxdata *atxsdata.Data) State { // State of the node. type State struct { - logger log.Log + logger *zap.Logger DB *datastore.CachedDB Atxdata *atxsdata.Data @@ -35,7 +36,7 @@ type State struct { // OnBeacon callback to store generated beacon. func (s *State) OnBeacon(eid types.EpochID, beacon types.Beacon) { if err := beacons.Add(s.DB, eid+1, beacon); err != nil { - s.logger.With().Panic("failed to add beacon", log.Err(err)) + s.logger.Panic("failed to add beacon", zap.Error(err)) } } @@ -44,7 +45,7 @@ func (s *State) OnActivationTx(atx *types.ActivationTx) { // TODO: consider using actual values for malicious if needed s.Atxdata.AddFromAtx(atx, false) if err := atxs.Add(s.DB, atx); err != nil { - s.logger.With().Panic("failed to add atx", log.Err(err)) + s.logger.Panic("failed to add atx", zap.Error(err)) } } @@ -55,7 +56,7 @@ func (s *State) OnBallot(ballot *types.Ballot) { return } if err := ballots.Add(s.DB, ballot); err != nil { - s.logger.With().Panic("failed to save ballot", log.Err(err)) + s.logger.Panic("failed to save ballot", zap.Error(err)) } } @@ -67,20 +68,20 @@ func (s *State) OnBlock(block *types.Block) { } if err := blocks.Add(s.DB, block); err != nil && !errors.Is(err, sql.ErrObjectExists) { - s.logger.With().Panic("failed to save block", log.Err(err)) + s.logger.Panic("failed to save block", zap.Error(err)) } } // OnHareOutput callback to store hare output. func (s *State) OnHareOutput(lid types.LayerID, bid types.BlockID) { if err := certificates.SetHareOutput(s.DB, lid, bid); err != nil { - s.logger.With().Panic("failed to save hare output", log.Err(err)) + s.logger.Panic("failed to save hare output", zap.Error(err)) } } // OnCoinflip callback to store coinflip. func (s *State) OnCoinflip(lid types.LayerID, coinflip bool) { if err := layers.SetWeakCoin(s.DB, lid, coinflip); err != nil { - s.logger.With().Panic("failed to save coin flip", log.Err(err)) + s.logger.Panic("failed to save coin flip", zap.Error(err)) } } diff --git a/tortoise/sim/utils.go b/tortoise/sim/utils.go index b6b6cbd62e..e7f66f0664 100644 --- a/tortoise/sim/utils.go +++ b/tortoise/sim/utils.go @@ -4,8 +4,9 @@ import ( "math/rand" "path/filepath" + "go.uber.org/zap" + "github.com/spacemeshos/go-spacemesh/datastore" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/sql" ) @@ -13,7 +14,7 @@ const ( atxpath = "atx" ) -func newCacheDB(logger log.Log, conf config) *datastore.CachedDB { +func newCacheDB(logger *zap.Logger, conf config) *datastore.CachedDB { var ( db *sql.Database err error diff --git a/tortoise/state.go b/tortoise/state.go index 2c8a2e8b3f..789dd70401 100644 --- a/tortoise/state.go +++ b/tortoise/state.go @@ -6,10 +6,10 @@ import ( "sort" "github.com/spacemeshos/fixed" + "go.uber.org/zap/zapcore" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log" "github.com/spacemeshos/go-spacemesh/tortoise/opinionhash" ) @@ -416,7 +416,7 @@ type blockInfo struct { data bool // set to true if block is available locally } -func (b *blockInfo) MarshalLogObject(encoder log.ObjectEncoder) error { +func (b *blockInfo) MarshalLogObject(encoder zapcore.ObjectEncoder) error { encoder.AddString("block", b.id.String()) encoder.AddUint32("layer", b.layer.Uint32()) encoder.AddUint64("height", b.height) diff --git a/tortoise/tortoise.go b/tortoise/tortoise.go index b464371e8e..0d6b60983b 100644 --- a/tortoise/tortoise.go +++ b/tortoise/tortoise.go @@ -251,14 +251,20 @@ func (t *turtle) encodeVotes( t.logger.Debug("support after base ballot", log.ZContext(ctx), zap.Inline(block), - zap.Stringer("reason", reason)) + zap.Stringer("reason", reason), + ) votes.Support = append(votes.Support, block.header()) case against: t.logger.Debug("implicit against after base ballot", - log.ZContext(ctx), zap.Inline(block), zap.Stringer("reason", reason)) + log.ZContext(ctx), + zap.Inline(block), + zap.Stringer("reason", reason), + ) case abstain: t.logger.Error("layers that are not terminated should have been encoded earlier", - log.ZContext(ctx), zap.Inline(block), zap.Stringer("reason", reason), + log.ZContext(ctx), + zap.Inline(block), + zap.Stringer("reason", reason), ) } } diff --git a/tortoise/tortoise_test.go b/tortoise/tortoise_test.go index 3295a11c4a..d8b2de1b9f 100644 --- a/tortoise/tortoise_test.go +++ b/tortoise/tortoise_test.go @@ -13,12 +13,12 @@ import ( "github.com/spacemeshos/fixed" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/codec" "github.com/spacemeshos/go-spacemesh/common/types" "github.com/spacemeshos/go-spacemesh/common/types/result" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/signing" "github.com/spacemeshos/go-spacemesh/sql" "github.com/spacemeshos/go-spacemesh/sql/atxs" @@ -64,7 +64,7 @@ func TestLayerPatterns(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var ( @@ -94,7 +94,7 @@ func TestLayerPatterns(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var ( @@ -130,7 +130,7 @@ func TestLayerPatterns(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var ( @@ -164,7 +164,7 @@ func TestAbstainsInMiddle(t *testing.T) { cfg.LayerSize = size cfg.Hdist = 10 cfg.Zdist = 3 - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var last, verified types.LayerID for i := 0; i < 5; i++ { @@ -206,7 +206,7 @@ func TestAbstainLateBlock(t *testing.T) { cfg.LayerSize = size cfg.Hdist = 2 cfg.Zdist = 1 - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) s.Next(sim.WithNumBlocks(1)) s.Next(sim.WithNumBlocks(0)) @@ -245,7 +245,7 @@ func TestEncodeAbstainVotesForZdist(t *testing.T) { cfg := defaultTestConfig() cfg.LayerSize = size cfg.Zdist = zdist - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var ( last types.LayerID @@ -291,7 +291,7 @@ func TestEncodeAbstainVotesDelayedHare(t *testing.T) { ctx := context.Background() cfg := defaultTestConfig() cfg.LayerSize = size - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var last types.LayerID for _, lid := range sim.GenLayers(s, @@ -346,7 +346,7 @@ func defaultAlgorithm(tb testing.TB) *Tortoise { trtl, err := New( atxsdata.New(), WithConfig(defaultTestConfig()), - WithLogger(logtest.New(tb)), + WithLogger(zaptest.NewLogger(tb)), ) require.NoError(tb, err) return trtl @@ -518,7 +518,7 @@ func TestOutOfOrderLayersAreVerified(t *testing.T) { ctx := context.Background() cfg := defaultTestConfig() cfg.LayerSize = size - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var ( last types.LayerID @@ -575,7 +575,7 @@ func TestLongTermination(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var ( @@ -623,7 +623,7 @@ func TestLongTermination(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var ( @@ -680,7 +680,7 @@ func TestLongTermination(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var ( @@ -827,7 +827,7 @@ func TestBallotsNotProcessedWithoutBeacon(t *testing.T) { s.Setup() simState := s.GetState(0) cfg := defaultTestConfig() - tortoise := tortoiseFromSimState(t, simState, WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, simState, WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) last := s.Next() beacon, err := beacons.Get(simState.DB, last.GetEpoch()) @@ -857,7 +857,7 @@ func TestVotesDecodingWithoutBaseBallot(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var verified types.LayerID @@ -881,7 +881,7 @@ func TestVotesDecodingWithoutBaseBallot(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var last, verified types.LayerID @@ -908,7 +908,7 @@ func TestDecodeVotes(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) last := s.Next() tortoise.TallyVotes(context.TODO(), last) @@ -1045,7 +1045,7 @@ func tortoiseVotingWithCurrent(tortoise voter) sim.VotesGenerator { func TestOnBeacon(t *testing.T) { cfg := defaultTestConfig() - tortoise, err := New(atxsdata.New(), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise, err := New(atxsdata.New(), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) require.NoError(t, err) genesis := types.GetEffectiveGenesis() @@ -1059,7 +1059,7 @@ func TestOnBeacon(t *testing.T) { defer func() { types.SetEffectiveGenesis(genesis.Uint32()) }() - tortoise, err = New(atxsdata.New(), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise, err = New(atxsdata.New(), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) require.NoError(t, err) tortoise.OnBeacon(newGenesis.GetEpoch()-1, types.Beacon{2}) require.Nil(t, tortoise.trtl.epoch(newGenesis.GetEpoch()-1).beacon) @@ -1073,7 +1073,7 @@ func TestBaseBallotGenesis(t *testing.T) { s := sim.New() cfg := defaultTestConfig() tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t))) + WithLogger(zaptest.NewLogger(t))) votes, err := tortoise.EncodeVotes(ctx) require.NoError(t, err) @@ -1121,7 +1121,7 @@ func TestBaseBallotEvictedBlock(t *testing.T) { cfg := defaultTestConfig() cfg.LayerSize = size cfg.WindowSize = 10 - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var last, verified types.LayerID @@ -1211,7 +1211,7 @@ func TestBaseBallotPrioritization(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) for _, lid := range sim.GenLayers(s, tc.seqs...) { @@ -1314,7 +1314,7 @@ func TestWeakCoinVoting(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) last types.LayerID genesis = types.GetEffectiveGenesis() @@ -1367,7 +1367,7 @@ func TestVoteAgainstSupportedByBaseBallot(t *testing.T) { t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) last, verified types.LayerID genesis = types.GetEffectiveGenesis() @@ -1605,7 +1605,7 @@ func TestComputeBallotWeight(t *testing.T) { cfg := DefaultConfig() cfg.LayerSize = tc.layerSize - trtl, err := New(atxsdata.New(), WithLogger(logtest.New(t)), WithConfig(cfg)) + trtl, err := New(atxsdata.New(), WithLogger(zaptest.NewLogger(t)), WithConfig(cfg)) require.NoError(t, err) lid := types.LayerID(111) for _, weight := range tc.atxs { @@ -1662,7 +1662,7 @@ func TestNetworkRecoversFromFullPartition(t *testing.T) { s1 := sim.New( sim.WithLayerSize(size), sim.WithStates(2), - sim.WithLogger(logtest.New(t)), + sim.WithLogger(zaptest.NewLogger(t)), ) s1.Setup( sim.WithSetupMinerRange(8, 8), @@ -1677,9 +1677,9 @@ func TestNetworkRecoversFromFullPartition(t *testing.T) { var ( tortoise1 = tortoiseFromSimState(t, s1.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t).Named("first"))) + WithLogger(zaptest.NewLogger(t).Named("first"))) tortoise2 = tortoiseFromSimState(t, s1.GetState(1), WithConfig(cfg), - WithLogger(logtest.New(t).Named("second"))) + WithLogger(zaptest.NewLogger(t).Named("second"))) last types.LayerID ) @@ -1783,7 +1783,7 @@ func TestVerifyLayerByWeightNotSize(t *testing.T) { ctx := context.Background() cfg := defaultTestConfig() cfg.LayerSize = size - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var last types.LayerID for _, last = range sim.GenLayers(s, @@ -1826,7 +1826,7 @@ func TestAbstainVotingVerifyingMode(t *testing.T) { cfg := defaultTestConfig() cfg.LayerSize = size - tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(zaptest.NewLogger(t)), WithConfig(cfg)) var last, verified types.LayerID for _, last = range sim.GenLayers(s, sim.WithSequence(1), @@ -1886,7 +1886,7 @@ func TestLateBaseBallot(t *testing.T) { cfg.Hdist = 1 cfg.Zdist = cfg.Hdist - tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(zaptest.NewLogger(t)), WithConfig(cfg)) var last, verified types.LayerID for _, last = range sim.GenLayers(s, sim.WithSequence(2, sim.WithEmptyHareOutput()), @@ -1930,7 +1930,7 @@ func TestLateBlock(t *testing.T) { cfg.Hdist = 1 cfg.Zdist = cfg.Hdist - tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(zaptest.NewLogger(t)), WithConfig(cfg)) last := s.Next() tortoise.TallyVotes(ctx, last) @@ -1972,7 +1972,7 @@ func TestMaliciousBallotsAreIgnored(t *testing.T) { cfg := defaultTestConfig() cfg.LayerSize = size - tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(logtest.New(t)), WithConfig(cfg)) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithLogger(zaptest.NewLogger(t)), WithConfig(cfg)) var last types.LayerID for _, last = range sim.GenLayers(s, sim.WithSequence(int(types.GetLayersPerEpoch()))) { } @@ -2009,7 +2009,7 @@ func TestStateManagement(t *testing.T) { ) s.Setup() - tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t))) + tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t))) var last, verified types.LayerID for _, last = range sim.GenLayers(s, @@ -2062,7 +2062,7 @@ func TestFutureHeight(t *testing.T) { s.Setup() tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) tortoise.TallyVotes(context.Background(), s.Next(sim.WithNumBlocks(1), sim.WithBlockTickHeights(100_000))) @@ -2097,7 +2097,7 @@ func TestFutureHeight(t *testing.T) { )) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) tortoise.TallyVotes( context.Background(), @@ -2129,7 +2129,7 @@ func TestFutureHeight(t *testing.T) { ), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < int(cfg.Hdist); i++ { @@ -2155,7 +2155,7 @@ func TestFutureHeight(t *testing.T) { sim.WithSetupTicks(normal, normal, normal, normal, normal, slow, slow), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < int(cfg.Hdist); i++ { @@ -2186,7 +2186,7 @@ func testEmptyLayers(t *testing.T, hdist int) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) last := types.GetEffectiveGenesis() for i := 0; i < int(skipTo); i++ { @@ -2240,7 +2240,7 @@ func TestSwitchMode(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i <= int(cfg.Hdist); i++ { @@ -2282,7 +2282,7 @@ func TestSwitchMode(t *testing.T) { require.True(t, tortoise.trtl.isFull) tortoise1 := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) for i := 0; i <= int(cfg.Hdist); i++ { last = s.Next(sim.WithNumBlocks(1)) @@ -2308,7 +2308,7 @@ func TestSwitchMode(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID s.Next(sim.WithNumBlocks(1)) @@ -2352,7 +2352,7 @@ func TestSwitchMode(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) nohare := s.Next(sim.WithEmptyHareOutput(), sim.WithNumBlocks(1)) last := nohare @@ -2431,7 +2431,7 @@ func TestOnBallotComputeOpinion(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < distance; i++ { @@ -2477,7 +2477,7 @@ func TestOnBallotComputeOpinion(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < distance; i++ { @@ -2554,7 +2554,7 @@ func TestOnHareOutput(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) tortoise.TallyVotes(ctx, s.Next(tc.failedOptions...)) for i := 0; i < tc.genDistance; i++ { @@ -2585,7 +2585,7 @@ func TestDecodeExceptions(t *testing.T) { ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) last := s.Next(sim.WithNumBlocks(2)) tortoise.TallyVotes(ctx, last) @@ -2676,7 +2676,7 @@ func TestCountOnBallot(t *testing.T) { ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) s.Next(sim.WithNumBlocks(1), sim.WithEmptyHareOutput()) last := s.Next(sim.WithNumBlocks(1)) @@ -2723,7 +2723,7 @@ func TestOnBallotBeforeTallyVotes(t *testing.T) { sim.WithSetupMinerRange(size, size), ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < testDistance; i++ { @@ -2754,7 +2754,7 @@ func TestNonTerminatedLayers(t *testing.T) { ) tortoise := tortoiseFromSimState(t, - s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(t)), + s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(t)), ) for i := 0; i < int(cfg.Zdist); i++ { tortoise.TallyVotes(ctx, s.Next( @@ -2833,7 +2833,7 @@ func TestEncodeVotes(t *testing.T) { tortoise, err := New( atxsdata.New(), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) require.NoError(t, err) @@ -2873,7 +2873,7 @@ func TestEncodeVotes(t *testing.T) { tortoise, err := New( atxdata, WithConfig(defaultTestConfig()), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) require.NoError(t, err) @@ -2960,7 +2960,7 @@ func TestBaseBallotBeforeCurrentLayer(t *testing.T) { tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < 4; i++ { @@ -2981,7 +2981,7 @@ func TestBaseBallotBeforeCurrentLayer(t *testing.T) { tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) var last types.LayerID for i := 0; i < 4; i++ { @@ -3044,7 +3044,7 @@ func BenchmarkOnBallot(b *testing.B) { cfg.LayerSize = layerSize cfg.WindowSize = window - tortoise := tortoiseFromSimState(b, s.GetState(0), WithConfig(cfg), WithLogger(logtest.New(b))) + tortoise := tortoiseFromSimState(b, s.GetState(0), WithConfig(cfg), WithLogger(zaptest.NewLogger(b))) for i := 0; i < window; i++ { tortoise.TallyVotes(ctx, s.Next()) } @@ -3106,7 +3106,7 @@ func TestMultipleTargets(t *testing.T) { tortoise := tortoiseFromSimState(t, s.GetState(0), WithConfig(cfg), - WithLogger(logtest.New(t)), + WithLogger(zaptest.NewLogger(t)), ) heights := []uint64{1, 2} id := types.BlockID{'t'} diff --git a/tortoise/tracer_test.go b/tortoise/tracer_test.go index 2a5871bc2c..b40cd7b26c 100644 --- a/tortoise/tracer_test.go +++ b/tortoise/tracer_test.go @@ -9,10 +9,10 @@ import ( "testing" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log/logtest" "github.com/spacemeshos/go-spacemesh/tortoise/sim" ) @@ -39,7 +39,7 @@ func TestTracer(t *testing.T) { trt.Updates() // just trace final result t.Run("live", func(t *testing.T) { t.Parallel() - require.NoError(t, RunTrace(path, nil, WithLogger(logtest.New(t)))) + require.NoError(t, RunTrace(path, nil, WithLogger(zaptest.NewLogger(t)))) }) t.Run("recover", func(t *testing.T) { t.Parallel() @@ -53,7 +53,7 @@ func TestTracer(t *testing.T) { ) require.NoError(t, err) trt.Updates() - require.NoError(t, RunTrace(path, nil, WithLogger(logtest.New(t)))) + require.NoError(t, RunTrace(path, nil, WithLogger(zaptest.NewLogger(t)))) }) t.Run("errors", func(t *testing.T) { t.Parallel() @@ -63,7 +63,7 @@ func TestTracer(t *testing.T) { ballot := &types.BallotTortoiseData{} _, err = trt.DecodeBallot(ballot) require.Error(t, err) - require.NoError(t, RunTrace(path, nil, WithLogger(logtest.New(t)))) + require.NoError(t, RunTrace(path, nil, WithLogger(zaptest.NewLogger(t)))) }) } @@ -85,7 +85,7 @@ func TestData(t *testing.T) { t.Parallel() require.NoError( t, - RunTrace(filepath.Join(data, entry.Name()), nil, WithLogger(logtest.New(t))), + RunTrace(filepath.Join(data, entry.Name()), nil, WithLogger(zaptest.NewLogger(t))), ) }) } diff --git a/tortoise/verifying_test.go b/tortoise/verifying_test.go index 94fb30e592..347a7e5d8b 100644 --- a/tortoise/verifying_test.go +++ b/tortoise/verifying_test.go @@ -5,10 +5,10 @@ import ( "github.com/spacemeshos/fixed" "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" "github.com/spacemeshos/go-spacemesh/atxsdata" "github.com/spacemeshos/go-spacemesh/common/types" - "github.com/spacemeshos/go-spacemesh/log/logtest" ) func TestVerifyingProcessLayer(t *testing.T) { @@ -116,7 +116,7 @@ func TestVerifyingProcessLayer(t *testing.T) { }, } { t.Run(tc.desc, func(t *testing.T) { - logger := logtest.Zap(t) + logger := zaptest.NewLogger(t) v := newVerifying(Config{}, newState(atxsdata.New())) v.processed = start.Add(1).Add(uint32(len(tc.ballots))) @@ -576,7 +576,7 @@ func TestVerifying_Verify(t *testing.T) { }, } { t.Run(tc.desc, func(t *testing.T) { - logger := logtest.Zap(t) + logger := zaptest.NewLogger(t) state := newState(atxsdata.New()) state.epochs = epochs