add more 'bad blocks' to mainnet_tests
This commit is contained in:
parent
a784cfde86
commit
9e4cbe512b
BIN
statediff/indexer/database/file/mainnet_tests/block_12579670.rlp
Normal file
BIN
statediff/indexer/database/file/mainnet_tests/block_12579670.rlp
Normal file
Binary file not shown.
BIN
statediff/indexer/database/file/mainnet_tests/block_12600011.rlp
Normal file
BIN
statediff/indexer/database/file/mainnet_tests/block_12600011.rlp
Normal file
Binary file not shown.
BIN
statediff/indexer/database/file/mainnet_tests/block_12619985.rlp
Normal file
BIN
statediff/indexer/database/file/mainnet_tests/block_12619985.rlp
Normal file
Binary file not shown.
BIN
statediff/indexer/database/file/mainnet_tests/block_12625121.rlp
Normal file
BIN
statediff/indexer/database/file/mainnet_tests/block_12625121.rlp
Normal file
Binary file not shown.
BIN
statediff/indexer/database/file/mainnet_tests/block_12655432.rlp
Normal file
BIN
statediff/indexer/database/file/mainnet_tests/block_12655432.rlp
Normal file
Binary file not shown.
@ -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)
|
||||
})
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user