Skip to content

Commit 6f5ea54

Browse files
committed
fix: add fixes for spec tests (#1237)
1 parent 72212ba commit 6f5ea54

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1203
-551
lines changed

.github/workflows/compliance.yaml

Lines changed: 58 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,48 @@ on:
44
- main
55
pull_request:
66

7-
name: compliance 07
7+
name: compliance
88
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
name: build rundler image
12+
steps:
13+
- name: Checkout Rundler
14+
uses: actions/checkout@v4
15+
with:
16+
submodules: recursive
17+
18+
- name: Set up Docker Buildx
19+
uses: docker/setup-buildx-action@v3
20+
21+
- name: Build Docker image
22+
uses: docker/build-push-action@v6
23+
with:
24+
context: .
25+
push: false
26+
load: true
27+
tags: alchemyplatform/rundler:latest
28+
cache-from: type=gha
29+
cache-to: type=gha,mode=max
30+
31+
- name: Save Docker image
32+
run: docker save alchemyplatform/rundler:latest -o rundler-image.tar
33+
34+
- name: Upload Docker image artifact
35+
uses: actions/upload-artifact@v4
36+
with:
37+
name: rundler-image
38+
path: rundler-image.tar
39+
retention-days: 1
40+
941
compliance:
1042
runs-on: ubuntu-latest
43+
needs: build
44+
strategy:
45+
fail-fast: false
46+
matrix:
47+
version: ["0.6", "0.7", "0.8"]
48+
name: compliance v${{ matrix.version }}
1149
steps:
1250
- run: curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3 -
1351
- run: pip install jq yq
@@ -16,12 +54,6 @@ jobs:
1654
with:
1755
node-version: 18
1856

19-
- name: Checkout Rundler
20-
uses: actions/checkout@v4
21-
with:
22-
path: rundler
23-
submodules: recursive
24-
2557
- name: Install Foundry
2658
uses: foundry-rs/foundry-toolchain@v1
2759
with:
@@ -31,29 +63,36 @@ jobs:
3163
with:
3264
version: "2.14.2"
3365

66+
- name: Checkout Rundler
67+
uses: actions/checkout@v4
68+
with:
69+
path: rundler
70+
3471
- name: Clone Test Executor
3572
uses: actions/checkout@v4
3673
with:
3774
path: bundler-test-executors
3875
repository: alchemyplatform/bundler-test-executor
39-
ref: master
76+
ref: releases/v${{ matrix.version }}
4077
submodules: recursive
4178

42-
- name: Set up Docker Buildx
43-
uses: docker/setup-buildx-action@v3
44-
45-
- name: Build and push
46-
uses: docker/build-push-action@v6
79+
- name: Download Docker image artifact
80+
uses: actions/download-artifact@v4
4781
with:
48-
context: rundler
49-
push: false
50-
load: true
51-
tags: alchemyplatform/rundler:latest
52-
cache-from: type=gha
53-
cache-to: type=gha,mode=max
82+
name: rundler-image
83+
84+
- name: Load Docker image
85+
run: docker load -i rundler-image.tar
5486

5587
- name: Run bundle executor
5688
run: ./bundler-test-executors/runall.sh local ./bundler-test-executors/bundlers/rundler/rundler.yml
5789

5890
- name: Parse spec results
5991
run: ./rundler/.github/scripts/compliance_parser.sh ./bundler-test-executors/build/out/rundler.xml
92+
93+
- name: Archive rundler log file
94+
uses: actions/upload-artifact@v4
95+
if: always()
96+
with:
97+
name: rundler-log-file-v${{ matrix.version }}
98+
path: bundler-test-executors/build/out/rundler.log

.github/workflows/compliance_v06.yaml

Lines changed: 0 additions & 60 deletions
This file was deleted.

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
ignore = dirty
3737
[submodule "test/spec-tests/v0_8/bundler-spec-tests"]
3838
path = test/spec-tests/v0_8/bundler-spec-tests
39-
url = https://github.com/eth-infinitism/bundler-spec-tests
39+
url = git@github.com:alchemyplatform/bundler-spec-tests.git
4040
ignore = dirty
4141
[submodule "crates/bindings/fastlz/fastlz"]
4242
path = crates/bindings/fastlz/fastlz

Cargo.lock

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ test-unit: ## Run unit tests.
2929
test-spec-integrated: ## Run spec tests in integrated mode
3030
$(MAKE) test-spec-integrated-v0_6
3131
$(MAKE) test-spec-integrated-v0_7
32+
$(MAKE) test-spec-integrated-v0_8
3233

3334
.PHONY: test-spec-integrated-v0_6
3435
test-spec-integrated-v0_6: ## Run v0.6 spec tests in integrated mode
@@ -38,10 +39,15 @@ test-spec-integrated-v0_6: ## Run v0.6 spec tests in integrated mode
3839
test-spec-integrated-v0_7: ## Run v0.7 spec tests in integrated mode
3940
test/spec-tests/local/run-spec-tests-v0_7.sh
4041

42+
.PHONY: test-spec-integrated-v0_8
43+
test-spec-integrated-v0_8: ## Run v0.8 spec tests in integrated mode
44+
test/spec-tests/local/run-spec-tests-v0_8.sh
45+
4146
.PHONY: test-spec-modular
4247
test-spec-modular: ## Run spec tests in modular mode
4348
$(MAKE) test-spec-modular-v0_6
4449
$(MAKE) test-spec-modular-v0_7
50+
$(MAKE) test-spec-modular-v0_8
4551

4652
.PHONY: test-spec-modular-v0_6
4753
test-spec-modular-v0_6: ## Run v0.6 spec tests in modular mode
@@ -51,6 +57,10 @@ test-spec-modular-v0_6: ## Run v0.6 spec tests in modular mode
5157
test-spec-modular-v0_7: ## Run v0.7 spec tests in modular mode
5258
test/spec-tests/remote/run-spec-tests-v0_7.sh
5359

60+
.PHONY: test-spec-modular-v0_8
61+
test-spec-modular-v0_8: ## Run v0.8 spec tests in modular mode
62+
test/spec-tests/remote/run-spec-tests-v0_8.sh
63+
5464
.PHONY: submodule-update
5565
submodule-update: ## Update git submodules
5666
git submodule update

crates/builder/proto/builder/builder.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,8 @@ message DebugSetBundlingModeSuccess {}
7373
message BuilderError {
7474
oneof error {
7575
string internal = 1;
76+
NoOperationsToSendError no_operations_to_send = 2;
7677
}
7778
}
79+
80+
message NoOperationsToSendError {}

crates/builder/src/assigner.rs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ impl Assigner {
7373
builder_address: Address,
7474
entry_point: Address,
7575
filter_id: Option<String>,
76+
max_sim_block_number: u64,
7677
) -> anyhow::Result<Vec<PoolOperation>> {
7778
let per_builder_metrics =
7879
PerBuilderMetrics::new_with_labels(&[("builder_address", builder_address.to_string())]);
@@ -84,7 +85,12 @@ impl Assigner {
8485

8586
{
8687
let mut state = self.state.lock().unwrap();
87-
for op in ops {
88+
// iterate through ops that have been simulated before the max sim block number
89+
// to ensure that the second simulation happens at the same or a later block than the first simulation
90+
for op in ops
91+
.iter()
92+
.filter(|op| op.sim_block_number <= max_sim_block_number)
93+
{
8894
let (locked_builder_address, _) = state
8995
.uo_sender_to_builder_state
9096
.entry(op.sender)
@@ -342,7 +348,7 @@ mod tests {
342348

343349
// First assignment should succeed
344350
let assigned_ops = assigner
345-
.assign_operations(address(0), address(0), None)
351+
.assign_operations(address(0), address(0), None, u64::MAX)
346352
.await
347353
.unwrap();
348354
assert_eq!(assigned_ops.len(), 0); // TestPool returns empty by default
@@ -356,7 +362,7 @@ mod tests {
356362

357363
let assigner = Assigner::new(Box::new(mock_pool), 10, 10);
358364
let assigned_ops = assigner
359-
.assign_operations(address(0), address(0), None)
365+
.assign_operations(address(0), address(0), None, u64::MAX)
360366
.await
361367
.unwrap();
362368
assert_eq!(assigned_ops.len(), 2);
@@ -372,19 +378,19 @@ mod tests {
372378

373379
let assigner = Assigner::new(Box::new(mock_pool), 10, 10);
374380
let _ = assigner
375-
.assign_operations(address(0), address(0), None)
381+
.assign_operations(address(0), address(0), None, u64::MAX)
376382
.await
377383
.unwrap();
378384

379385
// Same builder address should assign again
380386
let assigned_ops = assigner
381-
.assign_operations(address(0), address(0), None)
387+
.assign_operations(address(0), address(0), None, u64::MAX)
382388
.await
383389
.unwrap();
384390
assert_eq!(assigned_ops.len(), 2);
385391
// Different builder address should not assign
386392
let assigned_ops = assigner
387-
.assign_operations(address(1), address(0), None)
393+
.assign_operations(address(1), address(0), None, u64::MAX)
388394
.await
389395
.unwrap();
390396
assert_eq!(assigned_ops.len(), 0);
@@ -398,7 +404,7 @@ mod tests {
398404

399405
let assigner = Assigner::new(Box::new(mock_pool), 10, 10);
400406
let _ = assigner
401-
.assign_operations(address(0), address(0), None)
407+
.assign_operations(address(0), address(0), None, u64::MAX)
402408
.await
403409
.unwrap();
404410

@@ -407,7 +413,7 @@ mod tests {
407413

408414
// Different builder should be able go receive address(2)
409415
let assigned_ops = assigner
410-
.assign_operations(address(1), address(0), None)
416+
.assign_operations(address(1), address(0), None, u64::MAX)
411417
.await
412418
.unwrap();
413419
assert_eq!(assigned_ops.len(), 1);
@@ -422,15 +428,15 @@ mod tests {
422428

423429
let assigner = Assigner::new(Box::new(mock_pool), 10, 10);
424430
let _ = assigner
425-
.assign_operations(address(0), address(0), None)
431+
.assign_operations(address(0), address(0), None, u64::MAX)
426432
.await
427433
.unwrap();
428434

429435
// Same builder address should assign again
430436
assigner.release_all(address(0));
431437

432438
let assigned_ops = assigner
433-
.assign_operations(address(1), address(0), None)
439+
.assign_operations(address(1), address(0), None, u64::MAX)
434440
.await
435441
.unwrap();
436442
assert_eq!(assigned_ops.len(), 2);
@@ -446,7 +452,7 @@ mod tests {
446452

447453
let assigner = Assigner::new(Box::new(mock_pool), 10, 10);
448454
let _ = assigner
449-
.assign_operations(address(0), address(0), None)
455+
.assign_operations(address(0), address(0), None, u64::MAX)
450456
.await
451457
.unwrap();
452458

@@ -457,7 +463,7 @@ mod tests {
457463

458464
// Different builder should be able go receive address(2)
459465
let assigned_ops = assigner
460-
.assign_operations(address(1), address(0), None)
466+
.assign_operations(address(1), address(0), None, u64::MAX)
461467
.await
462468
.unwrap();
463469
assert_eq!(assigned_ops.len(), 1);
@@ -492,7 +498,7 @@ mod tests {
492498

493499
let assigner = Assigner::new(Box::new(mock_pool), 10, 10);
494500
let _ = assigner
495-
.assign_operations(address(0), address(0), None)
501+
.assign_operations(address(0), address(0), None, u64::MAX)
496502
.await
497503
.unwrap();
498504

0 commit comments

Comments
 (0)