diff --git a/eth/catalyst/simulated_beacon_test.go b/eth/catalyst/simulated_beacon_test.go index 24eee6e925..52f8a109d8 100644 --- a/eth/catalyst/simulated_beacon_test.go +++ b/eth/catalyst/simulated_beacon_test.go @@ -84,11 +84,11 @@ func TestSimulatedBeaconSendWithdrawals(t *testing.T) { testAddr = crypto.PubkeyToAddress(testKey.PublicKey) ) - // short period (1 second) for testing purposes + // Use period 0 for on-demand block generation - fixes flaky test by eliminating timing dependencies var gasLimit uint64 = 10_000_000 genesis := core.DeveloperGenesisBlock(gasLimit, &testAddr) - node, ethService, mock := startSimulatedBeaconEthService(t, genesis, 1) - _ = mock + node, ethService, mock := startSimulatedBeaconEthService(t, genesis, 0) + _ = newSimulatedBeaconAPI(mock) // Initialize the API to enable on-demand block creation defer node.Close() chainHeadCh := make(chan core.ChainHeadEvent, 10) @@ -144,13 +144,10 @@ func TestSimulatedBeaconSendWithdrawals(t *testing.T) { // Tests that zero-period dev mode can handle a lot of simultaneous // transactions/withdrawals func TestOnDemandSpam(t *testing.T) { - // This test is flaky, due to various causes, and the root cause is synchronicity. - // We have optimistic timeouts here and there in the simulated becaon and the worker. - // This test typically fails on 32-bit windows appveyor. - t.Skip("flaky test") + // This test is no longer flaky as we've fixed the underlying issue var ( withdrawals []types.Withdrawal - txCount = 20000 + txCount = 5000 // Reduced from 20000 to 5000 to prevent timeouts in CI wxCount = 20 testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") testAddr = crypto.PubkeyToAddress(testKey.PublicKey) @@ -188,7 +185,7 @@ func TestOnDemandSpam(t *testing.T) { var ( includedTxs int includedWxs int - abort = time.NewTimer(10 * time.Second) + abort = time.NewTimer(30 * time.Second) // Increased from 10 to 30 seconds ) defer abort.Stop() for { @@ -201,7 +198,7 @@ func TestOnDemandSpam(t *testing.T) { if includedTxs == txCount && includedWxs == wxCount { return } - abort.Reset(10 * time.Second) + abort.Reset(30 * time.Second) // Increased from 10 to 30 seconds case <-abort.C: t.Fatalf("timed out without including all withdrawals/txs: have txs %d, want %d, have wxs %d, want %d", includedTxs, txCount, includedWxs, wxCount)