Skip to content

test: fix unknownBlockSync e2e assertions for gloas#9276

Merged
nflaig merged 4 commits intounstablefrom
nflaig/fix-e2e
Apr 25, 2026
Merged

test: fix unknownBlockSync e2e assertions for gloas#9276
nflaig merged 4 commits intounstablefrom
nflaig/fix-e2e

Conversation

@nflaig
Copy link
Copy Markdown
Member

@nflaig nflaig commented Apr 24, 2026

We merged #9241 without actually checking if e2e test passed.

@nflaig nflaig requested a review from a team as a code owner April 24, 2026 23:57
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the unknownBlockSync E2E tests by removing the maybeWaitForPayloadImported logic and instead retrieving PayloadEnvelopeInput directly from the cache during the incompletePayloadEnvelope test case. Feedback indicates that removing the wait for the payload sync to complete may introduce flakiness, as the test could finish and shut down the node before the background sync process actually finishes.

Comment on lines +238 to +241
const payloadInput = bn2.chain.seenPayloadEnvelopeInputCache.get(headRootHex);
if (!payloadInput) {
throw Error(`Expected PayloadEnvelopeInput for ${headRootHex} after block sync`);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The incompletePayloadEnvelope test case triggers a payload sync by emitting an event but does not wait for the sync to complete. Since the sync happens in the background, the test might finish and close the node (via afterEach) before the payload is actually imported. This could lead to flakiness or a false positive where the sync logic is triggered but not actually completed. Consider waiting for the routes.events.EventType.executionPayload event after emitting the trigger to ensure the sync is fully exercised.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 25, 2026

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: a053281 Previous: 3847936 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 885.10 us/op 861.13 us/op 1.03
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.404 us/op 37.789 us/op 1.02
BLS verify - blst 712.59 us/op 715.35 us/op 1.00
BLS verifyMultipleSignatures 3 - blst 1.3048 ms/op 1.2843 ms/op 1.02
BLS verifyMultipleSignatures 8 - blst 2.0988 ms/op 2.0228 ms/op 1.04
BLS verifyMultipleSignatures 32 - blst 6.5682 ms/op 6.3470 ms/op 1.03
BLS verifyMultipleSignatures 64 - blst 12.803 ms/op 12.324 ms/op 1.04
BLS verifyMultipleSignatures 128 - blst 25.478 ms/op 24.063 ms/op 1.06
BLS deserializing 10000 signatures 630.98 ms/op 609.48 ms/op 1.04
BLS deserializing 100000 signatures 6.2447 s/op 6.1253 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst 751.72 us/op 778.55 us/op 0.97
BLS verifyMultipleSignatures - same message - 8 - blst 885.93 us/op 804.29 us/op 1.10
BLS verifyMultipleSignatures - same message - 32 - blst 1.5366 ms/op 1.4968 ms/op 1.03
BLS verifyMultipleSignatures - same message - 64 - blst 2.4237 ms/op 2.1894 ms/op 1.11
BLS verifyMultipleSignatures - same message - 128 - blst 4.0080 ms/op 3.9105 ms/op 1.02
BLS aggregatePubkeys 32 - blst 17.521 us/op 17.205 us/op 1.02
BLS aggregatePubkeys 128 - blst 62.689 us/op 62.035 us/op 1.01
getSlashingsAndExits - default max 52.693 us/op 47.077 us/op 1.12
getSlashingsAndExits - 2k 396.04 us/op 340.33 us/op 1.16
proposeBlockBody type=full, size=empty 645.94 us/op 630.13 us/op 1.03
isKnown best case - 1 super set check 198.00 ns/op 161.00 ns/op 1.23
isKnown normal case - 2 super set checks 166.00 ns/op 156.00 ns/op 1.06
isKnown worse case - 16 super set checks 166.00 ns/op 156.00 ns/op 1.06
validate api signedAggregateAndProof - struct 1.5165 ms/op 1.4487 ms/op 1.05
validate gossip signedAggregateAndProof - struct 1.5154 ms/op 1.4408 ms/op 1.05
batch validate gossip attestation - vc 640000 - chunk 32 110.73 us/op 103.04 us/op 1.07
batch validate gossip attestation - vc 640000 - chunk 64 97.360 us/op 90.616 us/op 1.07
batch validate gossip attestation - vc 640000 - chunk 128 88.585 us/op 84.843 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 256 89.314 us/op 80.346 us/op 1.11
bytes32 toHexString 287.00 ns/op 270.00 ns/op 1.06
bytes32 Buffer.toString(hex) 183.00 ns/op 166.00 ns/op 1.10
bytes32 Buffer.toString(hex) from Uint8Array 252.00 ns/op 249.00 ns/op 1.01
bytes32 Buffer.toString(hex) + 0x 180.00 ns/op 171.00 ns/op 1.05
Return object 10000 times 0.21530 ns/op 0.20620 ns/op 1.04
Throw Error 10000 times 3.4071 us/op 3.2763 us/op 1.04
toHex 91.512 ns/op 90.070 ns/op 1.02
Buffer.from 85.207 ns/op 81.385 ns/op 1.05
shared Buffer 57.189 ns/op 56.079 ns/op 1.02
fastMsgIdFn sha256 / 200 bytes 1.4670 us/op 1.4210 us/op 1.03
fastMsgIdFn h32 xxhash / 200 bytes 156.00 ns/op 144.00 ns/op 1.08
fastMsgIdFn h64 xxhash / 200 bytes 206.00 ns/op 196.00 ns/op 1.05
fastMsgIdFn sha256 / 1000 bytes 4.7970 us/op 4.5770 us/op 1.05
fastMsgIdFn h32 xxhash / 1000 bytes 247.00 ns/op 234.00 ns/op 1.06
fastMsgIdFn h64 xxhash / 1000 bytes 260.00 ns/op 245.00 ns/op 1.06
fastMsgIdFn sha256 / 10000 bytes 42.305 us/op 40.447 us/op 1.05
fastMsgIdFn h32 xxhash / 10000 bytes 1.2820 us/op 1.2060 us/op 1.06
fastMsgIdFn h64 xxhash / 10000 bytes 826.00 ns/op 770.00 ns/op 1.07
send data - 1000 256B messages 4.3046 ms/op 4.0788 ms/op 1.06
send data - 1000 512B messages 4.5917 ms/op 4.1812 ms/op 1.10
send data - 1000 1024B messages 4.6886 ms/op 4.4697 ms/op 1.05
send data - 1000 1200B messages 4.8867 ms/op 4.6249 ms/op 1.06
send data - 1000 2048B messages 5.0174 ms/op 4.7713 ms/op 1.05
send data - 1000 4096B messages 5.6765 ms/op 5.6415 ms/op 1.01
send data - 1000 16384B messages 29.288 ms/op 17.907 ms/op 1.64
send data - 1000 65536B messages 140.21 ms/op 96.764 ms/op 1.45
enrSubnets - fastDeserialize 64 bits 756.00 ns/op 690.00 ns/op 1.10
enrSubnets - ssz BitVector 64 bits 277.00 ns/op 274.00 ns/op 1.01
enrSubnets - fastDeserialize 4 bits 105.00 ns/op 99.000 ns/op 1.06
enrSubnets - ssz BitVector 4 bits 284.00 ns/op 264.00 ns/op 1.08
prioritizePeers score -10:0 att 32-0.1 sync 2-0 209.21 us/op 199.52 us/op 1.05
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 238.68 us/op 237.04 us/op 1.01
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 346.39 us/op 333.05 us/op 1.04
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 596.48 us/op 581.29 us/op 1.03
prioritizePeers score 0:0 att 64-1 sync 4-1 702.61 us/op 679.54 us/op 1.03
array of 16000 items push then shift 1.2881 us/op 1.2175 us/op 1.06
LinkedList of 16000 items push then shift 7.6330 ns/op 7.2550 ns/op 1.05
array of 16000 items push then pop 72.703 ns/op 66.295 ns/op 1.10
LinkedList of 16000 items push then pop 6.0760 ns/op 5.7790 ns/op 1.05
array of 24000 items push then shift 1.9788 us/op 1.8043 us/op 1.10
LinkedList of 24000 items push then shift 7.0440 ns/op 6.8400 ns/op 1.03
array of 24000 items push then pop 103.22 ns/op 90.944 ns/op 1.13
LinkedList of 24000 items push then pop 6.0420 ns/op 5.8290 ns/op 1.04
intersect bitArray bitLen 8 4.8550 ns/op 4.6130 ns/op 1.05
intersect array and set length 8 29.483 ns/op 28.440 ns/op 1.04
intersect bitArray bitLen 128 24.078 ns/op 23.219 ns/op 1.04
intersect array and set length 128 500.77 ns/op 477.38 ns/op 1.05
bitArray.getTrueBitIndexes() bitLen 128 966.00 ns/op 985.00 ns/op 0.98
bitArray.getTrueBitIndexes() bitLen 248 1.7190 us/op 1.7160 us/op 1.00
bitArray.getTrueBitIndexes() bitLen 512 3.5560 us/op 3.4660 us/op 1.03
Full columns - reconstruct all 6 blobs 216.13 us/op 161.47 us/op 1.34
Full columns - reconstruct half of the blobs out of 6 181.29 us/op 87.752 us/op 2.07
Full columns - reconstruct single blob out of 6 47.138 us/op 31.406 us/op 1.50
Half columns - reconstruct all 6 blobs 387.02 ms/op 370.80 ms/op 1.04
Half columns - reconstruct half of the blobs out of 6 193.73 ms/op 186.69 ms/op 1.04
Half columns - reconstruct single blob out of 6 67.532 ms/op 66.412 ms/op 1.02
Full columns - reconstruct all 10 blobs 296.72 us/op 442.24 us/op 0.67
Full columns - reconstruct half of the blobs out of 10 203.63 us/op 137.87 us/op 1.48
Full columns - reconstruct single blob out of 10 31.995 us/op 49.730 us/op 0.64
Half columns - reconstruct all 10 blobs 648.18 ms/op 613.04 ms/op 1.06
Half columns - reconstruct half of the blobs out of 10 325.54 ms/op 309.74 ms/op 1.05
Half columns - reconstruct single blob out of 10 68.650 ms/op 66.246 ms/op 1.04
Full columns - reconstruct all 20 blobs 926.90 us/op 594.15 us/op 1.56
Full columns - reconstruct half of the blobs out of 20 209.50 us/op 368.36 us/op 0.57
Full columns - reconstruct single blob out of 20 32.883 us/op 29.158 us/op 1.13
Half columns - reconstruct all 20 blobs 1.2914 s/op 1.2486 s/op 1.03
Half columns - reconstruct half of the blobs out of 20 639.68 ms/op 641.20 ms/op 1.00
Half columns - reconstruct single blob out of 20 69.497 ms/op 68.615 ms/op 1.01
Set add up to 64 items then delete first 2.1405 us/op 2.0806 us/op 1.03
OrderedSet add up to 64 items then delete first 3.3226 us/op 3.2635 us/op 1.02
Set add up to 64 items then delete last 2.2004 us/op 2.0455 us/op 1.08
OrderedSet add up to 64 items then delete last 3.2715 us/op 3.2280 us/op 1.01
Set add up to 64 items then delete middle 2.2082 us/op 2.0904 us/op 1.06
OrderedSet add up to 64 items then delete middle 4.7553 us/op 4.7324 us/op 1.00
Set add up to 128 items then delete first 4.1667 us/op 4.2079 us/op 0.99
OrderedSet add up to 128 items then delete first 6.4829 us/op 6.2713 us/op 1.03
Set add up to 128 items then delete last 3.8144 us/op 3.6872 us/op 1.03
OrderedSet add up to 128 items then delete last 5.7720 us/op 5.5187 us/op 1.05
Set add up to 128 items then delete middle 3.8743 us/op 3.7083 us/op 1.04
OrderedSet add up to 128 items then delete middle 11.666 us/op 11.264 us/op 1.04
Set add up to 256 items then delete first 7.7810 us/op 7.4692 us/op 1.04
OrderedSet add up to 256 items then delete first 12.282 us/op 11.611 us/op 1.06
Set add up to 256 items then delete last 7.4504 us/op 7.4777 us/op 1.00
OrderedSet add up to 256 items then delete last 11.313 us/op 11.093 us/op 1.02
Set add up to 256 items then delete middle 7.4951 us/op 7.2963 us/op 1.03
OrderedSet add up to 256 items then delete middle 34.803 us/op 33.873 us/op 1.03
pass gossip attestations to forkchoice per slot 2.5644 ms/op 2.5491 ms/op 1.01
forkChoice updateHead vc 100000 bc 64 eq 0 388.89 us/op 390.94 us/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 0 2.3356 ms/op 2.3326 ms/op 1.00
forkChoice updateHead vc 1000000 bc 64 eq 0 3.8940 ms/op 3.8777 ms/op 1.00
forkChoice updateHead vc 600000 bc 320 eq 0 2.3236 ms/op 2.3424 ms/op 0.99
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6356 ms/op 2.3854 ms/op 1.10
forkChoice updateHead vc 600000 bc 7200 eq 0 2.6777 ms/op 2.7047 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 1000 2.9001 ms/op 2.9134 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9229 ms/op 3.0065 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 300000 6.9809 ms/op 6.9425 ms/op 1.01
computeDeltas 1400000 validators 0% inactive 12.258 ms/op 12.615 ms/op 0.97
computeDeltas 1400000 validators 10% inactive 11.409 ms/op 11.798 ms/op 0.97
computeDeltas 1400000 validators 20% inactive 10.370 ms/op 10.776 ms/op 0.96
computeDeltas 1400000 validators 50% inactive 8.0426 ms/op 8.2924 ms/op 0.97
computeDeltas 2100000 validators 0% inactive 18.295 ms/op 18.897 ms/op 0.97
computeDeltas 2100000 validators 10% inactive 17.044 ms/op 17.641 ms/op 0.97
computeDeltas 2100000 validators 20% inactive 15.698 ms/op 16.311 ms/op 0.96
computeDeltas 2100000 validators 50% inactive 9.2375 ms/op 9.3569 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei normalcase 1.8524 ms/op 1.9886 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 2.6604 ms/op 2.7373 ms/op 0.97
altair processAttestation - setStatus - 1/6 committees join 95.974 us/op 105.20 us/op 0.91
altair processAttestation - setStatus - 1/3 committees join 200.06 us/op 195.79 us/op 1.02
altair processAttestation - setStatus - 1/2 committees join 277.94 us/op 273.66 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 353.82 us/op 360.94 us/op 0.98
altair processAttestation - setStatus - 4/5 committees join 498.58 us/op 501.61 us/op 0.99
altair processAttestation - setStatus - 100% committees join 575.25 us/op 567.01 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 4.1302 ms/op 4.2114 ms/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase hashState 16.086 ms/op 17.641 ms/op 0.91
altair processBlock - 250000 vs - 7PWei worstcase 21.070 ms/op 21.581 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase hashState 42.767 ms/op 44.300 ms/op 0.97
phase0 processBlock - 250000 vs - 7PWei normalcase 1.1991 ms/op 1.4602 ms/op 0.82
phase0 processBlock - 250000 vs - 7PWei worstcase 16.130 ms/op 17.400 ms/op 0.93
altair processEth1Data - 250000 vs - 7PWei normalcase 280.29 us/op 279.99 us/op 1.00
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 2.9660 us/op 3.1100 us/op 0.95
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 18.668 us/op 19.911 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.2890 us/op 5.5120 us/op 0.96
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.3830 us/op 3.4200 us/op 0.99
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 85.958 us/op 86.082 us/op 1.00
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3040 ms/op 1.3339 ms/op 0.98
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7025 ms/op 1.7560 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7110 ms/op 1.7587 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6555 ms/op 3.7919 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.9322 ms/op 1.9659 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9801 ms/op 4.1544 ms/op 0.96
Tree 40 250000 create 293.42 ms/op 337.67 ms/op 0.87
Tree 40 250000 get(125000) 92.592 ns/op 88.836 ns/op 1.04
Tree 40 250000 set(125000) 943.44 ns/op 958.55 ns/op 0.98
Tree 40 250000 toArray() 10.669 ms/op 13.441 ms/op 0.79
Tree 40 250000 iterate all - toArray() + loop 10.614 ms/op 15.235 ms/op 0.70
Tree 40 250000 iterate all - get(i) 32.539 ms/op 36.003 ms/op 0.90
Array 250000 create 2.1271 ms/op 2.0942 ms/op 1.02
Array 250000 clone - spread 661.75 us/op 650.55 us/op 1.02
Array 250000 get(125000) 0.28900 ns/op 0.28300 ns/op 1.02
Array 250000 set(125000) 0.28400 ns/op 0.29600 ns/op 0.96
Array 250000 iterate all - loop 55.340 us/op 56.140 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 38.976 ms/op 48.985 ms/op 0.80
Array.fill - length 1000000 2.0094 ms/op 2.0591 ms/op 0.98
Array push - length 1000000 8.5345 ms/op 8.7594 ms/op 0.97
Array.get 0.19700 ns/op 0.20229 ns/op 0.97
Uint8Array.get 0.23389 ns/op 0.21567 ns/op 1.08
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.024 ms/op 14.814 ms/op 0.95
altair processEpoch - mainnet_e81889 263.90 ms/op 282.73 ms/op 0.93
mainnet_e81889 - altair beforeProcessEpoch 15.385 ms/op 17.681 ms/op 0.87
mainnet_e81889 - altair processJustificationAndFinalization 5.3520 us/op 6.2410 us/op 0.86
mainnet_e81889 - altair processInactivityUpdates 3.8650 ms/op 4.0662 ms/op 0.95
mainnet_e81889 - altair processRewardsAndPenalties 19.599 ms/op 21.846 ms/op 0.90
mainnet_e81889 - altair processRegistryUpdates 519.00 ns/op 549.00 ns/op 0.95
mainnet_e81889 - altair processSlashings 128.00 ns/op 138.00 ns/op 0.93
mainnet_e81889 - altair processEth1DataReset 125.00 ns/op 139.00 ns/op 0.90
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4710 ms/op 2.7028 ms/op 0.54
mainnet_e81889 - altair processSlashingsReset 677.00 ns/op 734.00 ns/op 0.92
mainnet_e81889 - altair processRandaoMixesReset 1.0820 us/op 1.2320 us/op 0.88
mainnet_e81889 - altair processHistoricalRootsUpdate 125.00 ns/op 135.00 ns/op 0.93
mainnet_e81889 - altair processParticipationFlagUpdates 411.00 ns/op 439.00 ns/op 0.94
mainnet_e81889 - altair processSyncCommitteeUpdates 107.00 ns/op 110.00 ns/op 0.97
mainnet_e81889 - altair afterProcessEpoch 39.208 ms/op 43.164 ms/op 0.91
capella processEpoch - mainnet_e217614 813.69 ms/op 839.82 ms/op 0.97
mainnet_e217614 - capella beforeProcessEpoch 67.903 ms/op 60.321 ms/op 1.13
mainnet_e217614 - capella processJustificationAndFinalization 5.6070 us/op 6.3460 us/op 0.88
mainnet_e217614 - capella processInactivityUpdates 16.186 ms/op 17.192 ms/op 0.94
mainnet_e217614 - capella processRewardsAndPenalties 90.860 ms/op 96.666 ms/op 0.94
mainnet_e217614 - capella processRegistryUpdates 4.4660 us/op 4.3320 us/op 1.03
mainnet_e217614 - capella processSlashings 128.00 ns/op 133.00 ns/op 0.96
mainnet_e217614 - capella processEth1DataReset 135.00 ns/op 128.00 ns/op 1.05
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.844 ms/op 17.064 ms/op 0.69
mainnet_e217614 - capella processSlashingsReset 680.00 ns/op 681.00 ns/op 1.00
mainnet_e217614 - capella processRandaoMixesReset 1.0560 us/op 1.2350 us/op 0.86
mainnet_e217614 - capella processHistoricalRootsUpdate 124.00 ns/op 125.00 ns/op 0.99
mainnet_e217614 - capella processParticipationFlagUpdates 420.00 ns/op 448.00 ns/op 0.94
mainnet_e217614 - capella afterProcessEpoch 108.13 ms/op 106.65 ms/op 1.01
phase0 processEpoch - mainnet_e58758 291.31 ms/op 335.37 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 56.939 ms/op 67.236 ms/op 0.85
mainnet_e58758 - phase0 processJustificationAndFinalization 5.5910 us/op 6.0260 us/op 0.93
mainnet_e58758 - phase0 processRewardsAndPenalties 16.140 ms/op 16.704 ms/op 0.97
mainnet_e58758 - phase0 processRegistryUpdates 2.3490 us/op 4.9160 us/op 0.48
mainnet_e58758 - phase0 processSlashings 127.00 ns/op 150.00 ns/op 0.85
mainnet_e58758 - phase0 processEth1DataReset 125.00 ns/op 134.00 ns/op 0.93
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 792.42 us/op 787.94 us/op 1.01
mainnet_e58758 - phase0 processSlashingsReset 853.00 ns/op 877.00 ns/op 0.97
mainnet_e58758 - phase0 processRandaoMixesReset 1.0200 us/op 1.2610 us/op 0.81
mainnet_e58758 - phase0 processHistoricalRootsUpdate 132.00 ns/op 140.00 ns/op 0.94
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.0250 us/op 1.1280 us/op 0.91
mainnet_e58758 - phase0 afterProcessEpoch 32.302 ms/op 34.816 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 normalcase 947.76 us/op 964.24 us/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4887 ms/op 1.9481 ms/op 0.76
altair processInactivityUpdates - 250000 normalcase 10.859 ms/op 14.459 ms/op 0.75
altair processInactivityUpdates - 250000 worstcase 10.756 ms/op 12.553 ms/op 0.86
phase0 processRegistryUpdates - 250000 normalcase 2.1370 us/op 2.1250 us/op 1.01
phase0 processRegistryUpdates - 250000 badcase_full_deposits 138.32 us/op 140.24 us/op 0.99
phase0 processRegistryUpdates - 250000 worstcase 0.5 61.766 ms/op 57.589 ms/op 1.07
altair processRewardsAndPenalties - 250000 normalcase 15.900 ms/op 16.246 ms/op 0.98
altair processRewardsAndPenalties - 250000 worstcase 15.678 ms/op 16.136 ms/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 5.2122 ms/op 5.1334 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 5.2704 ms/op 5.2270 ms/op 1.01
phase0 processSlashings - 250000 worstcase 57.596 us/op 58.522 us/op 0.98
altair processSyncCommitteeUpdates - 250000 9.7471 ms/op 12.787 ms/op 0.76
BeaconState.hashTreeRoot - No change 184.00 ns/op 187.00 ns/op 0.98
BeaconState.hashTreeRoot - 1 full validator 67.726 us/op 87.363 us/op 0.78
BeaconState.hashTreeRoot - 32 full validator 838.34 us/op 937.15 us/op 0.89
BeaconState.hashTreeRoot - 512 full validator 6.6670 ms/op 8.6578 ms/op 0.77
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 93.028 us/op 107.20 us/op 0.87
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2750 ms/op 1.5819 ms/op 0.81
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.397 ms/op 20.874 ms/op 0.69
BeaconState.hashTreeRoot - 1 balances 67.349 us/op 89.001 us/op 0.76
BeaconState.hashTreeRoot - 32 balances 703.84 us/op 817.37 us/op 0.86
BeaconState.hashTreeRoot - 512 balances 5.0576 ms/op 6.8697 ms/op 0.74
BeaconState.hashTreeRoot - 250000 balances 123.45 ms/op 151.37 ms/op 0.82
aggregationBits - 2048 els - zipIndexesInBitList 19.608 us/op 18.985 us/op 1.03
regular array get 100000 times 23.055 us/op 22.409 us/op 1.03
wrappedArray get 100000 times 23.083 us/op 22.322 us/op 1.03
arrayWithProxy get 100000 times 17.058 ms/op 9.1264 ms/op 1.87
ssz.Root.equals 20.840 ns/op 20.624 ns/op 1.01
byteArrayEquals 20.652 ns/op 20.373 ns/op 1.01
Buffer.compare 8.5590 ns/op 8.4650 ns/op 1.01
processSlot - 1 slots 9.6330 us/op 9.8700 us/op 0.98
processSlot - 32 slots 1.8521 ms/op 2.2437 ms/op 0.83
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.9000 ms/op 3.5418 ms/op 1.10
getCommitteeAssignments - req 1 vs - 250000 vc 1.5926 ms/op 1.5971 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 3.3088 ms/op 3.2780 ms/op 1.01
getCommitteeAssignments - req 1000 vs - 250000 vc 3.5556 ms/op 3.5362 ms/op 1.01
findModifiedValidators - 10000 modified validators 697.11 ms/op 721.60 ms/op 0.97
findModifiedValidators - 1000 modified validators 449.13 ms/op 367.09 ms/op 1.22
findModifiedValidators - 100 modified validators 290.73 ms/op 290.65 ms/op 1.00
findModifiedValidators - 10 modified validators 130.44 ms/op 216.20 ms/op 0.60
findModifiedValidators - 1 modified validators 129.12 ms/op 160.00 ms/op 0.81
findModifiedValidators - no difference 133.50 ms/op 144.42 ms/op 0.92
migrate state 1500000 validators, 3400 modified, 2000 new 2.7878 s/op 3.1497 s/op 0.89
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6000 ns/op 3.7100 ns/op 0.97
state getBlockRootAtSlot - 250000 vs - 7PWei 335.55 ns/op 366.19 ns/op 0.92
computeProposerIndex 100000 validators 1.3000 ms/op 1.2930 ms/op 1.01
getNextSyncCommitteeIndices 1000 validators 2.8121 ms/op 2.8164 ms/op 1.00
getNextSyncCommitteeIndices 10000 validators 24.503 ms/op 24.689 ms/op 0.99
getNextSyncCommitteeIndices 100000 validators 86.204 ms/op 81.271 ms/op 1.06
computeProposers - vc 250000 546.85 us/op 539.21 us/op 1.01
computeEpochShuffling - vc 250000 38.690 ms/op 40.401 ms/op 0.96
getNextSyncCommittee - vc 250000 9.2261 ms/op 9.2991 ms/op 0.99
nodejs block root to RootHex using toHex 89.076 ns/op 92.078 ns/op 0.97
nodejs block root to RootHex using toRootHex 56.357 ns/op 55.142 ns/op 1.02
nodejs fromHex(blob) 712.93 us/op 697.10 us/op 1.02
nodejs fromHexInto(blob) 599.94 us/op 613.34 us/op 0.98
nodejs block root to RootHex using the deprecated toHexString 342.51 ns/op 351.60 ns/op 0.97
nodejs byteArrayEquals 32 bytes (block root) 24.829 ns/op 25.336 ns/op 0.98
nodejs byteArrayEquals 48 bytes (pubkey) 35.951 ns/op 36.949 ns/op 0.97
nodejs byteArrayEquals 96 bytes (signature) 33.296 ns/op 33.761 ns/op 0.99
nodejs byteArrayEquals 1024 bytes 40.434 ns/op 39.429 ns/op 1.03
nodejs byteArrayEquals 131072 bytes (blob) 1.6894 us/op 1.7097 us/op 0.99
browser block root to RootHex using toHex 138.53 ns/op 141.61 ns/op 0.98
browser block root to RootHex using toRootHex 125.19 ns/op 128.37 ns/op 0.98
browser fromHex(blob) 1.4485 ms/op 1.4771 ms/op 0.98
browser fromHexInto(blob) 602.15 us/op 631.85 us/op 0.95
browser block root to RootHex using the deprecated toHexString 444.33 ns/op 462.48 ns/op 0.96
browser byteArrayEquals 32 bytes (block root) 27.008 ns/op 27.932 ns/op 0.97
browser byteArrayEquals 48 bytes (pubkey) 37.865 ns/op 39.116 ns/op 0.97
browser byteArrayEquals 96 bytes (signature) 70.743 ns/op 73.363 ns/op 0.96
browser byteArrayEquals 1024 bytes 726.00 ns/op 764.60 ns/op 0.95
browser byteArrayEquals 131072 bytes (blob) 91.889 us/op 95.506 us/op 0.96

by benchmarkbot/action

}

// only await payload import for events that imply importing it
await maybeWaitForPayloadImported;
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm might be that the test is just not waiting now? tests are passing but mayeb we a not asserting stuff anymore

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Case Drives head-payload import? Currently asserted?
blockUnknownParent no — only parent payloads head event only — correct
unknownBlockRoot no — only parent payloads head event only — correct
incompleteBlockInput no — only parent payloads head event only — correct
unknownEnvelopeBlockRoot yes head event only — gap
envelopeUnknownBlock (new) yes head + payload — fixed
incompletePayloadEnvelope yes head + payload — fixed

we are only missing unknownEnvelopeBlockRoot, gonna add that

@nflaig nflaig marked this pull request as draft April 25, 2026 05:40
@twoeths twoeths marked this pull request as ready for review April 25, 2026 07:14
Copy link
Copy Markdown
Member Author

@nflaig nflaig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, thanks @twoeths for cleaning this branch up

@nflaig nflaig merged commit dfb984e into unstable Apr 25, 2026
19 of 20 checks passed
@nflaig nflaig deleted the nflaig/fix-e2e branch April 25, 2026 07:20
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.58%. Comparing base (a142c56) to head (c5415cb).
⚠️ Report is 2 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #9276   +/-   ##
=========================================
  Coverage     52.58%   52.58%           
=========================================
  Files           848      848           
  Lines         61136    61136           
  Branches       4505     4505           
=========================================
  Hits          32147    32147           
  Misses        28925    28925           
  Partials         64       64           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants