ethclient: fix flaky test (#28864)

Fix flaky test due to incomplete transaction indexing
This commit is contained in:
rjl493456442 2024-01-24 16:07:20 +08:00 committed by GitHub
parent a8a87586c1
commit 765f2904d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 40 additions and 29 deletions

@ -677,18 +677,20 @@ type rpcProgress struct {
PulledStates hexutil.Uint64 PulledStates hexutil.Uint64
KnownStates hexutil.Uint64 KnownStates hexutil.Uint64
SyncedAccounts hexutil.Uint64 SyncedAccounts hexutil.Uint64
SyncedAccountBytes hexutil.Uint64 SyncedAccountBytes hexutil.Uint64
SyncedBytecodes hexutil.Uint64 SyncedBytecodes hexutil.Uint64
SyncedBytecodeBytes hexutil.Uint64 SyncedBytecodeBytes hexutil.Uint64
SyncedStorage hexutil.Uint64 SyncedStorage hexutil.Uint64
SyncedStorageBytes hexutil.Uint64 SyncedStorageBytes hexutil.Uint64
HealedTrienodes hexutil.Uint64 HealedTrienodes hexutil.Uint64
HealedTrienodeBytes hexutil.Uint64 HealedTrienodeBytes hexutil.Uint64
HealedBytecodes hexutil.Uint64 HealedBytecodes hexutil.Uint64
HealedBytecodeBytes hexutil.Uint64 HealedBytecodeBytes hexutil.Uint64
HealingTrienodes hexutil.Uint64 HealingTrienodes hexutil.Uint64
HealingBytecode hexutil.Uint64 HealingBytecode hexutil.Uint64
TxIndexFinishedBlocks hexutil.Uint64
TxIndexRemainingBlocks hexutil.Uint64
} }
func (p *rpcProgress) toSyncProgress() *ethereum.SyncProgress { func (p *rpcProgress) toSyncProgress() *ethereum.SyncProgress {
@ -696,22 +698,24 @@ func (p *rpcProgress) toSyncProgress() *ethereum.SyncProgress {
return nil return nil
} }
return &ethereum.SyncProgress{ return &ethereum.SyncProgress{
StartingBlock: uint64(p.StartingBlock), StartingBlock: uint64(p.StartingBlock),
CurrentBlock: uint64(p.CurrentBlock), CurrentBlock: uint64(p.CurrentBlock),
HighestBlock: uint64(p.HighestBlock), HighestBlock: uint64(p.HighestBlock),
PulledStates: uint64(p.PulledStates), PulledStates: uint64(p.PulledStates),
KnownStates: uint64(p.KnownStates), KnownStates: uint64(p.KnownStates),
SyncedAccounts: uint64(p.SyncedAccounts), SyncedAccounts: uint64(p.SyncedAccounts),
SyncedAccountBytes: uint64(p.SyncedAccountBytes), SyncedAccountBytes: uint64(p.SyncedAccountBytes),
SyncedBytecodes: uint64(p.SyncedBytecodes), SyncedBytecodes: uint64(p.SyncedBytecodes),
SyncedBytecodeBytes: uint64(p.SyncedBytecodeBytes), SyncedBytecodeBytes: uint64(p.SyncedBytecodeBytes),
SyncedStorage: uint64(p.SyncedStorage), SyncedStorage: uint64(p.SyncedStorage),
SyncedStorageBytes: uint64(p.SyncedStorageBytes), SyncedStorageBytes: uint64(p.SyncedStorageBytes),
HealedTrienodes: uint64(p.HealedTrienodes), HealedTrienodes: uint64(p.HealedTrienodes),
HealedTrienodeBytes: uint64(p.HealedTrienodeBytes), HealedTrienodeBytes: uint64(p.HealedTrienodeBytes),
HealedBytecodes: uint64(p.HealedBytecodes), HealedBytecodes: uint64(p.HealedBytecodes),
HealedBytecodeBytes: uint64(p.HealedBytecodeBytes), HealedBytecodeBytes: uint64(p.HealedBytecodeBytes),
HealingTrienodes: uint64(p.HealingTrienodes), HealingTrienodes: uint64(p.HealingTrienodes),
HealingBytecode: uint64(p.HealingBytecode), HealingBytecode: uint64(p.HealingBytecode),
TxIndexFinishedBlocks: uint64(p.TxIndexFinishedBlocks),
TxIndexRemainingBlocks: uint64(p.TxIndexRemainingBlocks),
} }
} }

@ -231,6 +231,13 @@ func newTestBackend(t *testing.T) (*node.Node, []*types.Block) {
if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil { if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil {
t.Fatalf("can't import test blocks: %v", err) t.Fatalf("can't import test blocks: %v", err)
} }
// Ensure the tx indexing is fully generated
for ; ; time.Sleep(time.Millisecond * 100) {
progress, err := ethservice.BlockChain().TxIndexProgress()
if err == nil && progress.Done() {
break
}
}
return n, blocks return n, blocks
} }