Skip to content

Commit c030533

Browse files
authored
feat: e2e test in GitHub action (#210)
* test: add e2e tests in github action * add linux/arm64 in Build docker image * fix block production test * address comments * restructuring * resolve no_std CI failure * fix no_std CI failure * fix no_std CI failure * fix no_std CI failure * replace random sleep with wait_for_services * error propagation * tweaks * tweak .dockerignore * revert unused scroll-tech/revm changes * fix no_std CI failure * remove common.rs * fix block propagation * add docker buildx in CI * change docker compose cmd * remove linux/arm64 * remove unused files * add --test-threads=1 * seperate tests and docker-compose tests * tweaks * tweaks * tweaks * add --test-threads=1 back * tweak * rename test names * refactor: move alloy-provider test features to tests/Cargo.toml * tweak configs * chore: remove unnecessary test declarations from Cargo.toml * fix CI script * address comments * use scroll provider * refactor docker-compose.rs * change to ad-hoc image build * address comments * temp remove integration-docker-compose * Revert "temp remove integration-docker-compose" This reverts commit 3aaeb32. * add cleanups * exclude test(docker) * Revert "add cleanups" This reverts commit e18f760. * use stable toolchain * add cleanups * remove Free up disk space step * add cleanups * tweak cleanups * tweak test.yaml * fix * increase retry times * run make pr * try fix CI * fix * add back Free up disk space * address comments
1 parent 3dce7a7 commit c030533

15 files changed

+537
-9
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
!/bin
66
!/crates
77
!/testing
8+
!/tests
89
!book.toml
910
!Cargo.lock
1011
!Cargo.toml

.github/workflows/lint.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,11 @@ jobs:
128128
- type: wasm
129129
target: wasm32-unknown-unknown
130130
exclude: |
131-
scroll-engine,scroll-wire,rollup-node,scroll-network,rollup-node-manager,rollup-node-watcher,scroll-db,scroll-migration,rollup-node-indexer,scroll-codec,scroll-derivation-pipeline,rollup-node-providers,rollup-node-sequencer,rollup-node-signer
131+
scroll-engine,scroll-wire,rollup-node,scroll-network,rollup-node-manager,rollup-node-watcher,scroll-db,scroll-migration,rollup-node-indexer,scroll-codec,scroll-derivation-pipeline,rollup-node-providers,rollup-node-sequencer,rollup-node-signer,tests
132132
- type: riscv
133133
target: riscv32imac-unknown-none-elf
134134
exclude: |
135-
scroll-engine,scroll-wire,rollup-node,scroll-network,rollup-node-manager,rollup-node-watcher,scroll-db,scroll-migration,rollup-node-indexer,scroll-codec,scroll-derivation-pipeline,rollup-node-providers,rollup-node-sequencer,rollup-node-signer
135+
scroll-engine,scroll-wire,rollup-node,scroll-network,rollup-node-manager,rollup-node-watcher,scroll-db,scroll-migration,rollup-node-indexer,scroll-codec,scroll-derivation-pipeline,rollup-node-providers,rollup-node-sequencer,rollup-node-signer,tests
136136
steps:
137137
- uses: actions/checkout@v4
138138
- uses: rui314/setup-mold@v1

.github/workflows/test.yaml

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,47 @@ jobs:
5353
- name: Run integration tests
5454
run: |
5555
cargo nextest run --all-features --workspace --locked \
56-
--no-tests=pass -E 'kind(test)' \
56+
--no-tests=pass -E 'kind(test) and not test(docker)' \
5757
-- --skip test_should_consolidate_to_block_15k
58+
59+
integration-docker-compose:
60+
runs-on: ubuntu-latest
61+
timeout-minutes: 90
62+
env:
63+
RUST_BACKTRACE: 1
64+
steps:
65+
- uses: actions/checkout@v4
66+
- uses: rui314/setup-mold@v1
67+
- uses: dtolnay/rust-toolchain@stable
68+
- uses: Swatinem/rust-cache@v2
69+
with:
70+
cache-on-failure: true
71+
- uses: taiki-e/install-action@v2
72+
with:
73+
74+
- name: Set up Docker Buildx
75+
uses: docker/setup-buildx-action@v3
76+
- name: Free up disk space
77+
run: |
78+
echo "Initial disk usage:"
79+
df -h
80+
sudo rm -rf /usr/share/dotnet || true
81+
sudo rm -rf /opt/ghc || true
82+
sudo rm -rf /usr/local/share/boost || true
83+
sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true
84+
sudo rm -rf /usr/local/lib/android || true
85+
sudo rm -rf /usr/local/share/powershell || true
86+
sudo rm -rf /usr/share/swift || true
87+
sudo rm -rf /opt/hostedtoolcache || true
88+
echo "Disk usage after cleanup:"
89+
df -h
90+
- name: Run Docker Compose integration tests
91+
run: |
92+
cargo nextest run --all-features --workspace --locked \
93+
--no-tests=pass -E 'test(docker)' --test-threads=1 \
94+
--failure-output immediate \
95+
--success-output never \
96+
--verbose
97+
env:
98+
RUST_LOG: debug
99+
RUST_BACKTRACE: full

Cargo.lock

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

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ members = [
2323
"crates/sequencer",
2424
"crates/signer",
2525
"crates/watcher",
26+
"tests",
2627
]
2728

2829
resolver = "2"
@@ -203,6 +204,7 @@ thiserror = "2.0"
203204
tokio = { version = "1.39", default-features = false }
204205
tokio-stream = { version = "0.1", default-features = false }
205206
tracing = "0.1.0"
207+
getrandom = { version = "0.2", features = ["js"] }
206208

207209
[patch.crates-io]
208210
revm = { git = "https://github.com/scroll-tech/revm", branch = "feat/reth-v78" }

crates/node/src/args.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,8 @@ pub struct BeaconProviderArgs {
358358
#[arg(
359359
long = "beacon.blob-source",
360360
id = "beacon_blob_source",
361-
value_name = "BEACON_BLOB_SOURCE"
361+
value_name = "BEACON_BLOB_SOURCE",
362+
default_value = "mock"
362363
)]
363364
pub blob_source: BlobSource,
364365
/// The compute units per second for the provider.

tests/Cargo.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[package]
2+
name = "tests"
3+
version = "0.0.1"
4+
edition = "2021"
5+
6+
[lib]
7+
name = "tests"
8+
path = "src/lib.rs"
9+
10+
[dependencies]
11+
alloy-primitives = { workspace = true }
12+
alloy-network = { workspace = true }
13+
alloy-provider = { workspace = true, features = ["reqwest", "ws"] }
14+
alloy-rpc-types-eth = { workspace = true }
15+
scroll-alloy-network = { workspace = true }
16+
tokio = { workspace = true, features = ["rt", "time"] }
17+
eyre = { workspace = true }
18+
getrandom = { workspace = true }
19+
tracing = { workspace = true }

tests/discovery-secret

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6381271558bd1ae75c7b092553e3ecc04b104c38f34e126399ce4da4fd5e8730

tests/docker-compose.test.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
version: '3.8'
2+
3+
services:
4+
rollup-node-sequencer:
5+
build:
6+
context: ../
7+
dockerfile: Dockerfile
8+
container_name: rollup-node-sequencer
9+
entrypoint: ["bash", "/launch_rollup_node_sequencer.bash"]
10+
environment:
11+
- ENV=dev
12+
- RUST_LOG=info
13+
ports:
14+
- "8545:8545" # JSON-RPC
15+
- "8546:8546" # WebSocket
16+
- "6060:6060" # Metrics
17+
volumes:
18+
- ./launch_rollup_node_sequencer.bash:/launch_rollup_node_sequencer.bash:ro
19+
- ./discovery-secret:/l2reth/discovery-secret:ro
20+
- l2reth-sequencer:/l2reth
21+
networks:
22+
- test-scroll-network
23+
24+
rollup-node-follower:
25+
build:
26+
context: ../
27+
dockerfile: Dockerfile
28+
container_name: rollup-node-follower
29+
entrypoint: ["bash", "/launch_rollup_node_follower.bash"]
30+
environment:
31+
- ENV=dev
32+
- RUST_LOG=info
33+
ports:
34+
- "8547:8545" # JSON-RPC
35+
- "8548:8546" # WebSocket
36+
- "6061:6060" # Metrics
37+
volumes:
38+
- ./launch_rollup_node_follower.bash:/launch_rollup_node_follower.bash:ro
39+
- l2reth-follower:/l2reth
40+
networks:
41+
- test-scroll-network
42+
depends_on:
43+
- rollup-node-sequencer
44+
45+
networks:
46+
test-scroll-network:
47+
driver: bridge
48+
49+
volumes:
50+
l2reth-sequencer:
51+
l2reth-follower:
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
exec rollup-node node --chain dev --datadir=/l2reth --metrics=0.0.0.0:6060 --network.scroll-wire --network.bridge \
5+
--http --http.addr=0.0.0.0 --http.port=8545 --http.corsdomain "*" --http.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \
6+
--ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,miner,mev \
7+
--log.stdout.format log-fmt -vvv \
8+
--test \
9+
--txpool.pending-max-count=1000 \
10+
--builder.gaslimit=20000000 \
11+
--rpc.max-connections=5000 \
12+
--trusted-peers enode://3983278a7cab48862d9ab3187278edf376a0736a7deb55472a5650592f6922ce626a1ea7d74b77b9a679694b343f5e93ea97d5d60a9db4e4b51bb0c23a36d01b@rollup-node-sequencer:30303

0 commit comments

Comments
 (0)