fix: ethclient tests (#968)

* fix: TestEthClient/StatusFunctions

* fix: TestEthClient/CallContract race condition with pending block

* fix: TestEthClient/CallContract race condition with pending block

---------

Co-authored-by: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com>
This commit is contained in:
Jonas Theis 2024-08-09 12:45:41 +08:00 committed by GitHub
parent 3cc9d0e54e
commit 0c6436db80
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 12 deletions

View file

@ -187,7 +187,7 @@ var (
)
var genesis = &core.Genesis{
Config: params.AllEthashProtocolChanges,
Config: params.TestChainConfig,
Alloc: core.GenesisAlloc{
testAddr: {Balance: testBalance},
rcfg.L1GasPriceOracleAddress: {
@ -429,7 +429,7 @@ func testChainID(t *testing.T, client *rpc.Client) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if id == nil || id.Cmp(params.AllEthashProtocolChanges.ChainID) != 0 {
if id == nil || id.Cmp(params.TestChainConfig.ChainID) != 0 {
t.Fatalf("ChainID returned wrong number: %+v", id)
}
}
@ -500,12 +500,21 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) {
t.Fatalf("unexpected networkID: %v", networkID)
}
// In newTestBackend we're creating a chain with 3 blocks adding 2 txs into block 2.
// Both testTx1 and testTx2 set a gas price of params.InitialBaseFee=1000000000.
//
// We expect SuggestGasPrice to return the same value, combined out of:
// - the base fee of the block (48700046)
// base fee of block 1 and 2 is as follows (ignoring initialBaseFee of L2 block):
// eip1559.CalcBaseFee(nil, nil, new(big.Int).SetUint64(rcfg.L1BaseFeeSlot=10000))
// - the tip cap of the block (951299954)
// SuggestGasPrice
gasPrice, err := ec.SuggestGasPrice(context.Background())
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if gasPrice.Cmp(big.NewInt(1000000000)) != 0 {
if gasPrice.Cmp(big.NewInt(48700046+951299954)) != 0 {
t.Fatalf("unexpected gas price: %v", gasPrice)
}
@ -514,7 +523,7 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if gasTipCap.Cmp(big.NewInt(234375000)) != 0 {
if gasTipCap.Cmp(big.NewInt(951299954)) != 0 {
t.Fatalf("unexpected gas tip cap: %v", gasTipCap)
}
@ -527,13 +536,13 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) {
OldestBlock: big.NewInt(2),
Reward: [][]*big.Int{
{
big.NewInt(234375000),
big.NewInt(234375000),
big.NewInt(951299954),
big.NewInt(951299954),
},
},
BaseFee: []*big.Int{
big.NewInt(765625000),
big.NewInt(671627818),
big.NewInt(48700046),
big.NewInt(48700046),
},
GasUsedRatio: []float64{0.008912678667376286},
}
@ -591,9 +600,11 @@ func testCallContract(t *testing.T, client *rpc.Client) {
t.Fatalf("unexpected error: %v", err)
}
// PendingCallContract
if _, err := ec.PendingCallContract(context.Background(), msg); err != nil {
t.Fatalf("unexpected error: %v", err)
}
// Commented out since the worker is started in a separate goroutine this test leads to a race condition
// where sometimes a pending block is not yet available.
//if _, err := ec.PendingCallContract(context.Background(), msg); err != nil {
// t.Fatalf("unexpected error: %v", err)
//}
}
func testAtFunctions(t *testing.T, client *rpc.Client) {

View file

@ -354,7 +354,7 @@ var (
PragueTime: nil,
VerkleTime: nil,
TerminalTotalDifficulty: nil,
TerminalTotalDifficultyPassed: false,
TerminalTotalDifficultyPassed: true,
Ethash: new(EthashConfig),
Clique: nil,
ArchimedesBlock: big.NewInt(0),