diff --git a/statediff/indexer/database/file/mainnet_tests/block_12579670.rlp b/statediff/indexer/database/file/mainnet_tests/block_12579670.rlp new file mode 100644 index 000000000..6b4f3f773 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/block_12579670.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/block_12600011.rlp b/statediff/indexer/database/file/mainnet_tests/block_12600011.rlp new file mode 100644 index 000000000..96032b0c2 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/block_12600011.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/block_12619985.rlp b/statediff/indexer/database/file/mainnet_tests/block_12619985.rlp new file mode 100644 index 000000000..0e735313f Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/block_12619985.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/block_12625121.rlp b/statediff/indexer/database/file/mainnet_tests/block_12625121.rlp new file mode 100644 index 000000000..d031e30ea Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/block_12625121.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/block_12655432.rlp b/statediff/indexer/database/file/mainnet_tests/block_12655432.rlp new file mode 100644 index 000000000..fafc6bd88 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/block_12655432.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/indexer_test.go b/statediff/indexer/database/file/mainnet_tests/indexer_test.go index 7b7ba8ff6..32850ca29 100644 --- a/statediff/indexer/database/file/mainnet_tests/indexer_test.go +++ b/statediff/indexer/database/file/mainnet_tests/indexer_test.go @@ -20,32 +20,25 @@ import ( "context" "errors" "fmt" + "math/big" "os" "testing" - "github.com/ipfs/go-cid" "github.com/jmoiron/sqlx" - "github.com/multiformats/go-multihash" "github.com/stretchr/testify/require" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" "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/ipld" "github.com/ethereum/go-ethereum/statediff/indexer/mocks" "github.com/ethereum/go-ethereum/statediff/indexer/test_helpers" ) var ( - testBlock *types.Block - testReceipts types.Receipts - testHeaderCID cid.Cid - sqlxdb *sqlx.DB - err error - chainConf = params.MainnetChainConfig + sqlxdb *sqlx.DB + chainConf = params.MainnetChainConfig ) func init() { @@ -55,13 +48,35 @@ func init() { } } -func setup(t *testing.T) { - testBlock, testReceipts, err = TestBlocksAndReceiptsFromEnv() - require.NoError(t, err) - headerRLP, err := rlp.EncodeToBytes(testBlock.Header()) +func TestPushBlockAndState(t *testing.T) { + conf := DefaultTestConfig + rawURL := os.Getenv(TEST_RAW_URL) + if rawURL == "" { + fmt.Printf("Warning: no raw url configured for statediffing mainnet tests, will look for local file and"+ + "then try default endpoint (%s)\r\n", DefaultTestConfig.RawURL) + } else { + conf.RawURL = rawURL + } + for _, blockNumber := range problemBlocks { + conf.BlockNumber = big.NewInt(blockNumber) + tb, trs, err := TestBlockAndReceipts(conf) + require.NoError(t, err) + testPushBlockAndState(t, tb, trs) + } + testBlock, testReceipts, err := TestBlockAndReceiptsFromEnv(conf) require.NoError(t, err) + testPushBlockAndState(t, testBlock, testReceipts) +} - testHeaderCID, _ = ipld.RawdataToCid(ipld.MEthHeader, headerRLP, multihash.KECCAK_256) +func testPushBlockAndState(t *testing.T, block *types.Block, receipts types.Receipts) { + t.Run("Test PushBlock and PushStateNode", func(t *testing.T) { + setup(t, block, receipts) + dumpData(t) + tearDown(t) + }) +} + +func setup(t *testing.T, testBlock *types.Block, testReceipts types.Receipts) { if _, err := os.Stat(file.TestConfig.FilePath); !errors.Is(err, os.ErrNotExist) { err := os.Remove(file.TestConfig.FilePath) require.NoError(t, err) @@ -113,11 +128,3 @@ func tearDown(t *testing.T) { err = sqlxdb.Close() require.NoError(t, err) } - -func TestPushBlockAndState(t *testing.T) { - t.Run("Test PushBlock and PushStateNode", func(t *testing.T) { - setup(t) - dumpData(t) - tearDown(t) - }) -} diff --git a/statediff/indexer/database/file/mainnet_tests/receipts_12579670.rlp b/statediff/indexer/database/file/mainnet_tests/receipts_12579670.rlp new file mode 100644 index 000000000..e69de8fd9 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/receipts_12579670.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/receipts_12600011.rlp b/statediff/indexer/database/file/mainnet_tests/receipts_12600011.rlp new file mode 100644 index 000000000..ae6d4f0c2 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/receipts_12600011.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/receipts_12619985.rlp b/statediff/indexer/database/file/mainnet_tests/receipts_12619985.rlp new file mode 100644 index 000000000..a9ba84bd2 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/receipts_12619985.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/receipts_12625121.rlp b/statediff/indexer/database/file/mainnet_tests/receipts_12625121.rlp new file mode 100644 index 000000000..4d3a8532c Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/receipts_12625121.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/receipts_12655432.rlp b/statediff/indexer/database/file/mainnet_tests/receipts_12655432.rlp new file mode 100644 index 000000000..f209f01d8 Binary files /dev/null and b/statediff/indexer/database/file/mainnet_tests/receipts_12655432.rlp differ diff --git a/statediff/indexer/database/file/mainnet_tests/test_helpers.go b/statediff/indexer/database/file/mainnet_tests/test_helpers.go index ae2b81435..7203649d4 100644 --- a/statediff/indexer/database/file/mainnet_tests/test_helpers.go +++ b/statediff/indexer/database/file/mainnet_tests/test_helpers.go @@ -36,9 +36,17 @@ const ( const ( TEST_RAW_URL = "TEST_RAW_URL" TEST_BLOCK_NUMBER = "TEST_BLOCK_NUMBER" - TEST_LOCAL_CACHE = "TEST_LOCAL_CACHE" ) +var problemBlocks = []int64{ + 12600011, + 12619985, + 12625121, + 12655432, + 12579670, + 12914664, +} + // TestConfig holds configuration params for mainnet tests type TestConfig struct { RawURL string @@ -53,16 +61,8 @@ var DefaultTestConfig = TestConfig{ LocalCache: true, } -// TestBlocksAndReceiptsFromEnv retrieves the block and receipts using env variables to override default config -func TestBlocksAndReceiptsFromEnv() (*types.Block, types.Receipts, error) { - conf := DefaultTestConfig - rawURL := os.Getenv(TEST_RAW_URL) - if rawURL == "" { - fmt.Printf("Warning: no raw url configured for statediffing mainnet tests, will look for local file and"+ - "then try default endpoint (%s)\r\n", DefaultTestConfig.RawURL) - } else { - conf.RawURL = rawURL - } +// TestBlockAndReceiptsFromEnv retrieves the block and receipts using env variables to override default config block number +func TestBlockAndReceiptsFromEnv(conf TestConfig) (*types.Block, types.Receipts, error) { blockNumberStr := os.Getenv(TEST_BLOCK_NUMBER) blockNumber, ok := new(big.Int).SetString(blockNumberStr, 10) if !ok { @@ -71,12 +71,12 @@ func TestBlocksAndReceiptsFromEnv() (*types.Block, types.Receipts, error) { } else { conf.BlockNumber = blockNumber } - return TestBlocksAndReceipts(conf) + return TestBlockAndReceipts(conf) } -// TestBlocksAndReceipts retrieves the block and receipts for the provided test config +// TestBlockAndReceipts retrieves the block and receipts for the provided test config // It first tries to load files from the local system before setting up and using an ethclient.Client to pull the data -func TestBlocksAndReceipts(conf TestConfig) (*types.Block, types.Receipts, error) { +func TestBlockAndReceipts(conf TestConfig) (*types.Block, types.Receipts, error) { var cli *ethclient.Client var err error var block *types.Block