Skip to content

Commit be1757b

Browse files
authored
Refactor indexer tests to avoid duplicate code (#270)
* Refactor indexer tests to avoid duplicate code * Refactor file mode indexer tests * Fix expected db stats for sqlx after tx closure * Refactor indexer tests for legacy block * Refactor mainnet indexer tests * Refactor tests for watched addressess methods * Fix query in legacy indexer test
1 parent 88a24ad commit be1757b

22 files changed

+2609
-4136
lines changed

statediff/indexer/database/file/csv_indexer_legacy_test.go

Lines changed: 30 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -25,66 +25,49 @@ import (
2525
"strings"
2626
"testing"
2727

28-
"github.com/jmoiron/sqlx"
29-
"github.com/multiformats/go-multihash"
3028
"github.com/stretchr/testify/require"
3129

3230
"github.com/ethereum/go-ethereum/statediff/indexer/database/file"
3331
"github.com/ethereum/go-ethereum/statediff/indexer/database/file/types"
3432
"github.com/ethereum/go-ethereum/statediff/indexer/database/sql/postgres"
35-
"github.com/ethereum/go-ethereum/statediff/indexer/interfaces"
36-
"github.com/ethereum/go-ethereum/statediff/indexer/ipld"
33+
"github.com/ethereum/go-ethereum/statediff/indexer/test"
34+
"github.com/ethereum/go-ethereum/statediff/indexer/test_helpers"
3735
)
3836

3937
const dbDirectory = "/file_indexer"
4038
const pgCopyStatement = `COPY %s FROM '%s' CSV`
4139

42-
func setupCSVLegacy(t *testing.T) {
43-
mockLegacyBlock = legacyData.MockBlock
44-
legacyHeaderCID, _ = ipld.RawdataToCid(ipld.MEthHeader, legacyData.MockHeaderRlp, multihash.KECCAK_256)
45-
file.CSVTestConfig.OutputDir = "./statediffing_legacy_test"
46-
40+
func setupLegacyCSVIndexer(t *testing.T) {
4741
if _, err := os.Stat(file.CSVTestConfig.OutputDir); !errors.Is(err, os.ErrNotExist) {
4842
err := os.RemoveAll(file.CSVTestConfig.OutputDir)
4943
require.NoError(t, err)
5044
}
5145

52-
ind, err := file.NewStateDiffIndexer(context.Background(), legacyData.Config, file.CSVTestConfig)
53-
require.NoError(t, err)
54-
var tx interfaces.Batch
55-
tx, err = ind.PushBlock(
56-
mockLegacyBlock,
57-
legacyData.MockReceipts,
58-
legacyData.MockBlock.Difficulty())
46+
ind, err = file.NewStateDiffIndexer(context.Background(), test.LegacyConfig, file.CSVTestConfig)
5947
require.NoError(t, err)
6048

61-
defer func() {
62-
if err := tx.Submit(err); err != nil {
63-
t.Fatal(err)
64-
}
65-
if err := ind.Close(); err != nil {
66-
t.Fatal(err)
67-
}
68-
}()
69-
70-
for _, node := range legacyData.StateDiffs {
71-
err = ind.PushStateNode(tx, node, legacyData.MockBlock.Hash().String())
72-
require.NoError(t, err)
73-
}
74-
75-
require.Equal(t, legacyData.BlockNumber.String(), tx.(*file.BatchTx).BlockNumber)
76-
77-
connStr := postgres.DefaultConfig.DbConnectionString()
78-
sqlxdb, err = sqlx.Connect("postgres", connStr)
49+
db, err = postgres.SetupSQLXDB()
7950
if err != nil {
80-
t.Fatalf("failed to connect to db with connection string: %s err: %v", connStr, err)
51+
t.Fatal(err)
8152
}
8253
}
8354

55+
func setupLegacyCSV(t *testing.T) {
56+
setupLegacyCSVIndexer(t)
57+
test.SetupLegacyTestData(t, ind)
58+
}
59+
8460
func dumpCSVFileData(t *testing.T) {
8561
outputDir := filepath.Join(dbDirectory, file.CSVTestConfig.OutputDir)
62+
workingDir, err := os.Getwd()
63+
require.NoError(t, err)
64+
65+
localOutputDir := filepath.Join(workingDir, file.CSVTestConfig.OutputDir)
8666

8767
for _, tbl := range file.Tables {
68+
err := test_helpers.DedupFile(file.TableFilePath(localOutputDir, tbl.Name))
69+
require.NoError(t, err)
70+
8871
var stmt string
8972
varcharColumns := tbl.VarcharColumns()
9073
if len(varcharColumns) > 0 {
@@ -98,38 +81,38 @@ func dumpCSVFileData(t *testing.T) {
9881
stmt = fmt.Sprintf(pgCopyStatement, tbl.Name, file.TableFilePath(outputDir, tbl.Name))
9982
}
10083

101-
_, err = sqlxdb.Exec(stmt)
84+
_, err = db.Exec(context.Background(), stmt)
10285
require.NoError(t, err)
10386
}
10487
}
10588

106-
func dumpWatchedAddressesCSVFileData(t *testing.T) {
89+
func resetAndDumpWatchedAddressesCSVFileData(t *testing.T) {
90+
test_helpers.TearDownDB(t, db)
91+
10792
outputFilePath := filepath.Join(dbDirectory, file.CSVTestConfig.WatchedAddressesFilePath)
10893
stmt := fmt.Sprintf(pgCopyStatement, types.TableWatchedAddresses.Name, outputFilePath)
10994

110-
_, err = sqlxdb.Exec(stmt)
95+
_, err = db.Exec(context.Background(), stmt)
11196
require.NoError(t, err)
11297
}
11398

11499
func tearDownCSV(t *testing.T) {
115-
file.TearDownDB(t, sqlxdb)
100+
test_helpers.TearDownDB(t, db)
101+
require.NoError(t, db.Close())
116102

117-
err := os.RemoveAll(file.CSVTestConfig.OutputDir)
118-
require.NoError(t, err)
103+
require.NoError(t, os.RemoveAll(file.CSVTestConfig.OutputDir))
119104

120105
if err := os.Remove(file.CSVTestConfig.WatchedAddressesFilePath); !errors.Is(err, os.ErrNotExist) {
121106
require.NoError(t, err)
122107
}
123-
124-
err = sqlxdb.Close()
125-
require.NoError(t, err)
126108
}
127109

128-
func TestCSVFileIndexerLegacy(t *testing.T) {
110+
func TestLegacyCSVFileIndexer(t *testing.T) {
129111
t.Run("Publish and index header IPLDs", func(t *testing.T) {
130-
setupCSVLegacy(t)
112+
setupLegacyCSV(t)
131113
dumpCSVFileData(t)
132114
defer tearDownCSV(t)
133-
testLegacyPublishAndIndexHeaderIPLDs(t)
115+
116+
test.TestLegacyIndexer(t, db)
134117
})
135118
}

0 commit comments

Comments
 (0)