Skip to content

Commit d6d1d9a

Browse files
committed
Scaffold for integration test
1 parent 28d4616 commit d6d1d9a

4 files changed

Lines changed: 75 additions & 5 deletions

File tree

src/server.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,12 @@ impl PayloadSource {
213213
}
214214
}
215215

216+
#[rpc(client, namespace = "miner")]
217+
pub trait MinerApi {
218+
#[method(name = "setMaxDASize")]
219+
async fn set_max_da_size(&self, max_tx_size: u64, max_block_size: u64) -> RpcResult<bool>;
220+
}
221+
216222
#[rpc(server, client)]
217223
pub trait EngineApi {
218224
#[method(name = "engine_forkchoiceUpdatedV3")]

tests/common/mod.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ use op_alloy_consensus::TxDeposit;
1616
use op_alloy_rpc_types_engine::OpPayloadAttributes;
1717
use parking_lot::Mutex;
1818
use proxy::{ProxyHandler, start_proxy_server};
19-
use rollup_boost::DebugClient;
2019
use rollup_boost::{AuthLayer, AuthService};
20+
use rollup_boost::{DebugClient, MinerApiClient};
2121
use rollup_boost::{EngineApiClient, OpExecutionPayloadEnvelope, Version};
2222
use rollup_boost::{NewPayload, PayloadSource};
2323
use serde_json::Value;
@@ -150,6 +150,17 @@ impl EngineApi {
150150
)
151151
.await?)
152152
}
153+
154+
pub async fn set_max_da_size(
155+
&self,
156+
max_tx_size: u64,
157+
max_block_size: u64,
158+
) -> eyre::Result<bool> {
159+
Ok(
160+
MinerApiClient::set_max_da_size(&self.engine_api_client, max_tx_size, max_block_size)
161+
.await?,
162+
)
163+
}
153164
}
154165

155166
#[rpc(client, namespace = "eth")]
@@ -372,6 +383,13 @@ impl RollupBoostTestHarness {
372383
Ok(block_creator)
373384
}
374385

386+
pub async fn engine_api(&self) -> eyre::Result<EngineApi> {
387+
Ok(EngineApi::new(
388+
&self.rollup_boost.rpc_endpoint(),
389+
JWT_SECRET,
390+
)?)
391+
}
392+
375393
pub async fn debug_client(&self) -> DebugClient {
376394
DebugClient::new(&self.rollup_boost.debug_endpoint()).unwrap()
377395
}

tests/common/services/op_reth.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ impl Image for OpRethImage {
136136
"--addr=0.0.0.0".to_string(),
137137
"--http".to_string(),
138138
"--http.addr=0.0.0.0".to_string(),
139+
"--http.api=eth,net,web3,debug,miner".to_string(),
139140
"--authrpc.port=8551".to_string(),
140141
"--authrpc.addr=0.0.0.0".to_string(),
141142
"--authrpc.jwtsecret=/jwt_secret.hex".to_string(),

tests/miner_set_max_da_size.rs

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,60 @@
1-
use common::RollupBoostTestHarnessBuilder;
1+
use common::{RollupBoostTestHarnessBuilder, proxy::ProxyHandler};
2+
use futures::FutureExt as _;
3+
use serde_json::Value;
4+
use std::pin::Pin;
5+
use std::sync::{Arc, Mutex};
26

37
mod common;
48

9+
#[derive(Debug, Clone, Default)]
10+
struct MaxDaSizeHandler {
11+
found_max_da_value: Arc<Mutex<u64>>,
12+
}
13+
14+
impl MaxDaSizeHandler {
15+
fn get_found_max_da_value(&self) -> u64 {
16+
*self.found_max_da_value.lock().unwrap()
17+
}
18+
}
19+
20+
impl ProxyHandler for MaxDaSizeHandler {
21+
fn handle(
22+
&self,
23+
method: String,
24+
params: Value,
25+
_result: Value,
26+
) -> Pin<Box<dyn Future<Output = Option<Value>> + Send>> {
27+
println!("method: {:?}", method);
28+
if method == "miner_setMaxDASize" {
29+
// decode the params
30+
let params: Vec<u64> = serde_json::from_value(params).unwrap();
31+
assert_eq!(params.len(), 2);
32+
println!("params: {:?}", params);
33+
*self.found_max_da_value.lock().unwrap() = params[0];
34+
}
35+
async move { None }.boxed()
36+
}
37+
}
38+
539
#[tokio::test]
640
async fn miner_set_max_da_size() -> eyre::Result<()> {
7-
let harness = RollupBoostTestHarnessBuilder::new("miner set max da size")
8-
.with_isthmus_block(5)
41+
let handler = Arc::new(MaxDaSizeHandler::default());
42+
43+
let harness = RollupBoostTestHarnessBuilder::new("miner_set_max_da_size")
44+
.with_isthmus_block(0)
45+
.proxy_handler(handler.clone())
946
.build()
1047
.await?;
1148
let mut block_generator = harness.block_generator().await?;
12-
block_generator.generate_builder_blocks(10).await?;
49+
block_generator.generate_builder_blocks(1).await?;
50+
51+
let engine_api = harness.engine_api().await?;
52+
53+
// send a max da size request
54+
let res = engine_api.set_max_da_size(1000000, 1000000).await?;
55+
println!("res: {:?}", res);
56+
let found = handler.get_found_max_da_value();
57+
println!("found: {}", found);
1358

1459
Ok(())
1560
}

0 commit comments

Comments
 (0)