From 3f74b6ab07718d171d88c462683205ba0a009a90 Mon Sep 17 00:00:00 2001 From: charithabandi Date: Wed, 4 Dec 2024 10:50:07 -0600 Subject: [PATCH] Create DB only for the node being tested --- node/consensus/engine_test.go | 73 +++++++++++++++--------------- node/versioning/versioning_test.go | 3 +- node/voting/vote_test.go | 3 +- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/node/consensus/engine_test.go b/node/consensus/engine_test.go index 80823395d..8455383d4 100644 --- a/node/consensus/engine_test.go +++ b/node/consensus/engine_test.go @@ -11,7 +11,6 @@ import ( "fmt" "os" "path/filepath" - "slices" "sync" "testing" "time" @@ -34,7 +33,10 @@ import ( "github.com/stretchr/testify/require" ) -func generateTestCEConfig(t *testing.T, nodes int, noDBs ...int) []*Config { +// leaderDB is set assigns DB to the leader, else DB is assigned to the follower +// Most of these tests expect only one working node instance either a leader or the +// first validator and all other nodes interactions are mocked out. +func generateTestCEConfig(t *testing.T, nodes int, leaderDB bool) []*Config { ceConfigs := make([]*Config, nodes) tempDir := t.TempDir() @@ -75,28 +77,25 @@ func generateTestCEConfig(t *testing.T, nodes int, noDBs ...int) []*Config { // assert.NoError(t, err) txapp := newDummyTxApp(valSet) - for i := range nodes { - var db *pg.DB - if !slices.Contains(noDBs, i) { - db = dbtest.NewTestDBNamed(t, "kwil_test_db", 5432+i, func(db *pg.DB) { - db.AutoCommit(true) - ctx := context.Background() - db.Execute(ctx, `DROP SCHEMA IF EXISTS kwild_chain CASCADE;`) - db.Execute(ctx, `DROP SCHEMA IF EXISTS kwild_internal CASCADE;`) - }) + db := dbtest.NewTestDB(t, func(db *pg.DB) { + db.AutoCommit(true) + ctx := context.Background() + db.Execute(ctx, `DROP SCHEMA IF EXISTS kwild_chain CASCADE;`) + db.Execute(ctx, `DROP SCHEMA IF EXISTS kwild_internal CASCADE;`) + }) - func() { - tx, err := db.BeginTx(ctx) - require.NoError(t, err) - defer tx.Rollback(ctx) + func() { + tx, err := db.BeginTx(ctx) + require.NoError(t, err) + defer tx.Rollback(ctx) - err = meta.InitializeMetaStore(ctx, tx) - require.NoError(t, err) + err = meta.InitializeMetaStore(ctx, tx) + require.NoError(t, err) - require.NoError(t, tx.Commit(ctx)) - }() - } + require.NoError(t, tx.Commit(ctx)) + }() + for i := range nodes { nodeStr := fmt.Sprintf("NODE%d", i) nodeDir := filepath.Join(tempDir, nodeStr) @@ -107,7 +106,6 @@ func generateTestCEConfig(t *testing.T, nodes int, noDBs ...int) []*Config { assert.NoError(t, err) ceConfigs[i] = &Config{ - DB: db, PrivateKey: privKeys[i], Leader: pubKeys[0], Mempool: mempool.New(), @@ -119,15 +117,18 @@ func generateTestCEConfig(t *testing.T, nodes int, noDBs ...int) []*Config { Logger: logger, ProposeTimeout: 1 * time.Second, } - // if i == 0 { - // ceConfigs[i].DB = db - // } // only ce 0 (leader) has a valid DB, others are for identity of simulated peer closers = append(closers, func() { bs.Close() }) } + if leaderDB { + ceConfigs[0].DB = db + } else { + ceConfigs[1].DB = db + } + t.Cleanup(func() { for _, closerFn := range closers { closerFn() @@ -187,7 +188,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "BlkPropAndCommit", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -215,7 +216,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "InvalidAppHash", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -249,7 +250,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "MultipleBlockProposals", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -285,7 +286,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "StaleBlockProposals", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -322,7 +323,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "BlkAnnounceBeforeBlockProp", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -359,7 +360,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "ValidResetFlow", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -405,7 +406,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "ResetAfterCommit(Ignored)", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -442,7 +443,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "DuplicateReset", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -488,7 +489,7 @@ func TestValidatorStateMachine(t *testing.T) { { name: "InvalidFutureResetHeight", setup: func(t *testing.T) []*Config { - return generateTestCEConfig(t, 2) + return generateTestCEConfig(t, 2, false) }, actions: []action{ { @@ -575,7 +576,7 @@ func TestValidatorStateMachine(t *testing.T) { func TestCELeaderSingleNode(t *testing.T) { // t.Parallel() - ceConfigs := generateTestCEConfig(t, 1) + ceConfigs := generateTestCEConfig(t, 1, true) // bring up the node leader := New(ceConfigs[0]) @@ -600,7 +601,7 @@ func TestCELeaderSingleNode(t *testing.T) { func TestCELeaderTwoNodesMajorityAcks(t *testing.T) { // Majority > n/2 -> 2 - ceConfigs := generateTestCEConfig(t, 2) + ceConfigs := generateTestCEConfig(t, 2, true) // bring up the nodes n1 := New(ceConfigs[0]) @@ -656,7 +657,7 @@ func TestCELeaderTwoNodesMajorityAcks(t *testing.T) { func TestCELeaderTwoNodesMajorityNacks(t *testing.T) { // Majority > n/2 -> 2 - ceConfigs := generateTestCEConfig(t, 3) + ceConfigs := generateTestCEConfig(t, 3, true) // bring up the nodes n1 := New(ceConfigs[0]) diff --git a/node/versioning/versioning_test.go b/node/versioning/versioning_test.go index eca279ce3..cc83dad1c 100644 --- a/node/versioning/versioning_test.go +++ b/node/versioning/versioning_test.go @@ -6,7 +6,6 @@ import ( "context" "testing" - "github.com/kwilteam/kwil-db/node/pg" "github.com/kwilteam/kwil-db/node/types/sql" dbtest "github.com/kwilteam/kwil-db/node/pg/test" @@ -25,7 +24,7 @@ func Test_Versioning(t *testing.T) { 1: upgradeSchemaV0ToV1, 2: upgradeSchemaV1ToV2, } - db := dbtest.NewTestDB(t, func(db *pg.DB) {}) + db := dbtest.NewTestDB(t, nil) tx, err := db.BeginTx(ctx) require.NoError(t, err) diff --git a/node/voting/vote_test.go b/node/voting/vote_test.go index 7285a4657..d4001cb13 100644 --- a/node/voting/vote_test.go +++ b/node/voting/vote_test.go @@ -10,7 +10,6 @@ import ( "github.com/kwilteam/kwil-db/core/types" "github.com/kwilteam/kwil-db/extensions/resolutions" - "github.com/kwilteam/kwil-db/node/pg" dbtest "github.com/kwilteam/kwil-db/node/pg/test" "github.com/kwilteam/kwil-db/node/types/sql" @@ -311,7 +310,7 @@ func Test_Voting(t *testing.T) { t.Run(tt.name, func(t *testing.T) { ctx := context.Background() - db := dbtest.NewTestDB(t, func(db *pg.DB) {}) + db := dbtest.NewTestDB(t, nil) dbTx, err := db.BeginTx(ctx) require.NoError(t, err)