Refactor file mode indexer tests

This commit is contained in:
2022-08-16 15:21:01 +05:30
parent 1ce8f38c2c
commit 1efbe0e84e
6 changed files with 402 additions and 1099 deletions
@@ -121,6 +121,7 @@ func dumpWatchedAddressesCSVFileData(t *testing.T) {
func tearDownCSV(t *testing.T) {
test_helpers.TearDownDB(t, db)
require.NoError(t, db.Close())
err := os.RemoveAll(file.CSVTestConfig.OutputDir)
require.NoError(t, err)
@@ -128,12 +129,9 @@ func tearDownCSV(t *testing.T) {
if err := os.Remove(file.CSVTestConfig.WatchedAddressesFilePath); !errors.Is(err, os.ErrNotExist) {
require.NoError(t, err)
}
err = db.Close()
require.NoError(t, err)
}
func TestCSVFileIndexerLegacy(t *testing.T) {
func TestLegacyCSVFileIndexer(t *testing.T) {
t.Run("Publish and index header IPLDs", func(t *testing.T) {
setupCSVLegacy(t)
dumpCSVFileData(t)
@@ -26,10 +26,8 @@ import (
"github.com/ethereum/go-ethereum/statediff/indexer/database/file"
"github.com/ethereum/go-ethereum/statediff/indexer/database/sql/postgres"
"github.com/ethereum/go-ethereum/statediff/indexer/interfaces"
"github.com/ethereum/go-ethereum/statediff/indexer/mocks"
"github.com/ethereum/go-ethereum/statediff/indexer/test"
"github.com/ethereum/go-ethereum/statediff/indexer/test_helpers"
)
func setupCSVIndexer(t *testing.T) {
@@ -56,28 +54,7 @@ func setupCSVIndexer(t *testing.T) {
func setupCSV(t *testing.T) {
setupCSVIndexer(t)
var tx interfaces.Batch
tx, err = ind.PushBlock(
mockBlock,
mocks.MockReceipts,
mocks.MockBlock.Difficulty())
if err != nil {
t.Fatal(err)
}
defer func() {
if err := tx.Submit(err); err != nil {
t.Fatal(err)
}
if err := ind.Close(); err != nil {
t.Fatal(err)
}
}()
for _, node := range mocks.StateDiffs {
err = ind.PushStateNode(tx, node, mockBlock.Hash().String())
require.NoError(t, err)
}
require.Equal(t, mocks.BlockNumber.String(), tx.(*file.BatchTx).BlockNumber)
test.SetupTestData(t, ind)
}
func setupCSVNonCanonical(t *testing.T) {
@@ -91,7 +68,7 @@ func TestCSVFileIndexer(t *testing.T) {
dumpCSVFileData(t)
defer tearDownCSV(t)
testPublishAndIndexHeaderIPLDs(t)
test.TestPublishAndIndexHeaderIPLDs(t, db)
})
t.Run("Publish and index transaction IPLDs in a single tx", func(t *testing.T) {
@@ -99,7 +76,7 @@ func TestCSVFileIndexer(t *testing.T) {
dumpCSVFileData(t)
defer tearDownCSV(t)
testPublishAndIndexTransactionIPLDs(t)
test.TestPublishAndIndexTransactionIPLDs(t, db)
})
t.Run("Publish and index log IPLDs for multiple receipt of a specific block", func(t *testing.T) {
@@ -107,7 +84,7 @@ func TestCSVFileIndexer(t *testing.T) {
dumpCSVFileData(t)
defer tearDownCSV(t)
testPublishAndIndexLogIPLDs(t)
test.TestPublishAndIndexLogIPLDs(t, db)
})
t.Run("Publish and index receipt IPLDs in a single tx", func(t *testing.T) {
@@ -115,7 +92,7 @@ func TestCSVFileIndexer(t *testing.T) {
dumpCSVFileData(t)
defer tearDownCSV(t)
testPublishAndIndexReceiptIPLDs(t)
test.TestPublishAndIndexReceiptIPLDs(t, db)
})
t.Run("Publish and index state IPLDs in a single tx", func(t *testing.T) {
@@ -123,7 +100,7 @@ func TestCSVFileIndexer(t *testing.T) {
dumpCSVFileData(t)
defer tearDownCSV(t)
testPublishAndIndexStateIPLDs(t)
test.TestPublishAndIndexStateIPLDs(t, db)
})
t.Run("Publish and index storage IPLDs in a single tx", func(t *testing.T) {
@@ -131,7 +108,7 @@ func TestCSVFileIndexer(t *testing.T) {
dumpCSVFileData(t)
defer tearDownCSV(t)
testPublishAndIndexStorageIPLDs(t)
test.TestPublishAndIndexStorageIPLDs(t, db)
})
}
@@ -185,71 +162,71 @@ func TestCSVFileIndexerNonCanonical(t *testing.T) {
})
}
func TestCSVFileWatchAddressMethods(t *testing.T) {
setupCSVIndexer(t)
defer tearDownCSV(t)
// func TestCSVFileWatchAddressMethods(t *testing.T) {
// setupCSVIndexer(t)
// defer tearDownCSV(t)
t.Run("Load watched addresses (empty table)", func(t *testing.T) {
testLoadEmptyWatchedAddresses(t)
})
// t.Run("Load watched addresses (empty table)", func(t *testing.T) {
// testLoadEmptyWatchedAddresses(t)
// })
t.Run("Insert watched addresses", func(t *testing.T) {
testInsertWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Insert watched addresses", func(t *testing.T) {
// testInsertWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Insert watched addresses (some already watched)", func(t *testing.T) {
testInsertAlreadyWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Insert watched addresses (some already watched)", func(t *testing.T) {
// testInsertAlreadyWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Remove watched addresses", func(t *testing.T) {
testRemoveWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Remove watched addresses", func(t *testing.T) {
// testRemoveWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Remove watched addresses (some non-watched)", func(t *testing.T) {
testRemoveNonWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Remove watched addresses (some non-watched)", func(t *testing.T) {
// testRemoveNonWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Set watched addresses", func(t *testing.T) {
testSetWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Set watched addresses", func(t *testing.T) {
// testSetWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Set watched addresses (some already watched)", func(t *testing.T) {
testSetAlreadyWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Set watched addresses (some already watched)", func(t *testing.T) {
// testSetAlreadyWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Load watched addresses", func(t *testing.T) {
testLoadWatchedAddresses(t)
})
// t.Run("Load watched addresses", func(t *testing.T) {
// testLoadWatchedAddresses(t)
// })
t.Run("Clear watched addresses", func(t *testing.T) {
testClearWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
// t.Run("Clear watched addresses", func(t *testing.T) {
// testClearWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
t.Run("Clear watched addresses (empty table)", func(t *testing.T) {
testClearEmptyWatchedAddresses(t, func(t *testing.T) {
test_helpers.TearDownDB(t, db)
dumpWatchedAddressesCSVFileData(t)
})
})
}
// t.Run("Clear watched addresses (empty table)", func(t *testing.T) {
// testClearEmptyWatchedAddresses(t, func(t *testing.T) {
// test_helpers.TearDownDB(t, db)
// dumpWatchedAddressesCSVFileData(t)
// })
// })
// }
File diff suppressed because it is too large Load Diff
@@ -96,6 +96,7 @@ func resetAndDumpWatchedAddressesFileData(t *testing.T) {
func tearDown(t *testing.T) {
test_helpers.TearDownDB(t, db)
require.NoError(t, db.Close())
err := os.Remove(file.SQLTestConfig.FilePath)
require.NoError(t, err)
@@ -103,12 +104,9 @@ func tearDown(t *testing.T) {
if err := os.Remove(file.SQLTestConfig.WatchedAddressesFilePath); !errors.Is(err, os.ErrNotExist) {
require.NoError(t, err)
}
err = db.Close()
require.NoError(t, err)
}
func TestSQLFileIndexerLegacy(t *testing.T) {
func TestLegacySQLFileIndexer(t *testing.T) {
t.Run("Publish and index header IPLDs", func(t *testing.T) {
setupLegacy(t)
dumpFileData(t)
@@ -26,7 +26,6 @@ import (
"github.com/ethereum/go-ethereum/statediff/indexer/database/file"
"github.com/ethereum/go-ethereum/statediff/indexer/database/sql/postgres"
"github.com/ethereum/go-ethereum/statediff/indexer/interfaces"
"github.com/ethereum/go-ethereum/statediff/indexer/mocks"
"github.com/ethereum/go-ethereum/statediff/indexer/test"
)
@@ -53,28 +52,7 @@ func setupIndexer(t *testing.T) {
func setup(t *testing.T) {
setupIndexer(t)
var tx interfaces.Batch
tx, err = ind.PushBlock(
mockBlock,
mocks.MockReceipts,
mocks.MockBlock.Difficulty())
if err != nil {
t.Fatal(err)
}
defer func() {
if err := tx.Submit(err); err != nil {
t.Fatal(err)
}
if err := ind.Close(); err != nil {
t.Fatal(err)
}
}()
for _, node := range mocks.StateDiffs {
err = ind.PushStateNode(tx, node, mockBlock.Hash().String())
require.NoError(t, err)
}
require.Equal(t, mocks.BlockNumber.String(), tx.(*file.BatchTx).BlockNumber)
test.SetupTestData(t, ind)
}
func setupSQLNonCanonical(t *testing.T) {
@@ -88,7 +66,7 @@ func TestSQLFileIndexer(t *testing.T) {
dumpFileData(t)
defer tearDown(t)
testPublishAndIndexHeaderIPLDs(t)
test.TestPublishAndIndexHeaderIPLDs(t, db)
})
t.Run("Publish and index transaction IPLDs in a single tx", func(t *testing.T) {
@@ -96,7 +74,7 @@ func TestSQLFileIndexer(t *testing.T) {
dumpFileData(t)
defer tearDown(t)
testPublishAndIndexTransactionIPLDs(t)
test.TestPublishAndIndexTransactionIPLDs(t, db)
})
t.Run("Publish and index log IPLDs for multiple receipt of a specific block", func(t *testing.T) {
@@ -104,7 +82,7 @@ func TestSQLFileIndexer(t *testing.T) {
dumpFileData(t)
defer tearDown(t)
testPublishAndIndexLogIPLDs(t)
test.TestPublishAndIndexLogIPLDs(t, db)
})
t.Run("Publish and index receipt IPLDs in a single tx", func(t *testing.T) {
@@ -112,7 +90,7 @@ func TestSQLFileIndexer(t *testing.T) {
dumpFileData(t)
defer tearDown(t)
testPublishAndIndexReceiptIPLDs(t)
test.TestPublishAndIndexReceiptIPLDs(t, db)
})
t.Run("Publish and index state IPLDs in a single tx", func(t *testing.T) {
@@ -120,7 +98,7 @@ func TestSQLFileIndexer(t *testing.T) {
dumpFileData(t)
defer tearDown(t)
testPublishAndIndexStateIPLDs(t)
test.TestPublishAndIndexStateIPLDs(t, db)
})
t.Run("Publish and index storage IPLDs in a single tx", func(t *testing.T) {
@@ -128,7 +106,7 @@ func TestSQLFileIndexer(t *testing.T) {
dumpFileData(t)
defer tearDown(t)
testPublishAndIndexStorageIPLDs(t)
test.TestPublishAndIndexStorageIPLDs(t, db)
})
}
@@ -182,47 +160,47 @@ func TestSQLFileIndexerNonCanonical(t *testing.T) {
})
}
func TestSQLFileWatchAddressMethods(t *testing.T) {
setupIndexer(t)
defer tearDown(t)
// func TestSQLFileWatchAddressMethods(t *testing.T) {
// setupIndexer(t)
// defer tearDown(t)
t.Run("Load watched addresses (empty table)", func(t *testing.T) {
testLoadEmptyWatchedAddresses(t)
})
// t.Run("Load watched addresses (empty table)", func(t *testing.T) {
// testLoadEmptyWatchedAddresses(t)
// })
t.Run("Insert watched addresses", func(t *testing.T) {
testInsertWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Insert watched addresses", func(t *testing.T) {
// testInsertWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Insert watched addresses (some already watched)", func(t *testing.T) {
testInsertAlreadyWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Insert watched addresses (some already watched)", func(t *testing.T) {
// testInsertAlreadyWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Remove watched addresses", func(t *testing.T) {
testRemoveWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Remove watched addresses", func(t *testing.T) {
// testRemoveWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Remove watched addresses (some non-watched)", func(t *testing.T) {
testRemoveNonWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Remove watched addresses (some non-watched)", func(t *testing.T) {
// testRemoveNonWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Set watched addresses", func(t *testing.T) {
testSetWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Set watched addresses", func(t *testing.T) {
// testSetWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Set watched addresses (some already watched)", func(t *testing.T) {
testSetAlreadyWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Set watched addresses (some already watched)", func(t *testing.T) {
// testSetAlreadyWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Load watched addresses", func(t *testing.T) {
testLoadWatchedAddresses(t)
})
// t.Run("Load watched addresses", func(t *testing.T) {
// testLoadWatchedAddresses(t)
// })
t.Run("Clear watched addresses", func(t *testing.T) {
testClearWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
// t.Run("Clear watched addresses", func(t *testing.T) {
// testClearWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
t.Run("Clear watched addresses (empty table)", func(t *testing.T) {
testClearEmptyWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
})
}
// t.Run("Clear watched addresses (empty table)", func(t *testing.T) {
// testClearEmptyWatchedAddresses(t, resetAndDumpWatchedAddressesFileData)
// })
// }
+14 -9
View File
@@ -18,6 +18,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/statediff/indexer/database/file"
"github.com/ethereum/go-ethereum/statediff/indexer/database/sql"
"github.com/ethereum/go-ethereum/statediff/indexer/interfaces"
"github.com/ethereum/go-ethereum/statediff/indexer/ipld"
@@ -275,7 +276,11 @@ func SetupTestData(t *testing.T, ind interfaces.StateDiffIndexer) {
require.NoError(t, err)
}
require.Equal(t, mocks.BlockNumber.String(), tx.(*sql.BatchTx).BlockNumber)
if batchTx, ok := tx.(*sql.BatchTx); ok {
require.Equal(t, mocks.BlockNumber.String(), batchTx.BlockNumber)
} else if batchTx, ok := tx.(*file.BatchTx); ok {
require.Equal(t, mocks.BlockNumber.String(), batchTx.BlockNumber)
}
}
func TestPublishAndIndexHeaderIPLDs(t *testing.T, db sql.Database) {
@@ -810,10 +815,10 @@ func SetupTestDataNonCanonical(t *testing.T, ind interfaces.StateDiffIndexer) {
require.NoError(t, err)
}
if tx, ok := tx1.(*sql.BatchTx); ok {
require.Equal(t, mocks.BlockNumber.String(), tx.BlockNumber)
} else if tx, ok := tx1.(*sql.BatchTx); ok {
require.Equal(t, mocks.BlockNumber.String(), tx.BlockNumber)
if batchTx, ok := tx1.(*sql.BatchTx); ok {
require.Equal(t, mocks.BlockNumber.String(), batchTx.BlockNumber)
} else if batchTx, ok := tx1.(*file.BatchTx); ok {
require.Equal(t, mocks.BlockNumber.String(), batchTx.BlockNumber)
}
if err := tx1.Submit(err); err != nil {
@@ -856,10 +861,10 @@ func SetupTestDataNonCanonical(t *testing.T, ind interfaces.StateDiffIndexer) {
require.NoError(t, err)
}
if tx, ok := tx3.(*sql.BatchTx); ok {
require.Equal(t, mocks.Block2Number.String(), tx.BlockNumber)
} else if tx, ok := tx3.(*sql.BatchTx); ok {
require.Equal(t, mocks.Block2Number.String(), tx.BlockNumber)
if batchTx, ok := tx3.(*sql.BatchTx); ok {
require.Equal(t, mocks.Block2Number.String(), batchTx.BlockNumber)
} else if batchTx, ok := tx3.(*file.BatchTx); ok {
require.Equal(t, mocks.Block2Number.String(), batchTx.BlockNumber)
}
if err := tx3.Submit(err); err != nil {