@@ -291,19 +291,48 @@ mod tests {
291291 }
292292
293293 #[ tokio:: test]
294- async fn test_meter_bundle_uses_block_number ( ) -> eyre:: Result < ( ) > {
294+ async fn test_meter_bundle_uses_latest_block ( ) -> eyre:: Result < ( ) > {
295295 reth_tracing:: init_test_tracing ( ) ;
296296 let node = setup_node ( ) . await ?;
297297 let client = node. rpc_client ( ) . await ?;
298298
299- // Bundle.block_number is used as the state block for simulation
299+ // Metering always uses the latest block state, regardless of bundle.block_number
300300 let bundle = create_bundle ( vec ! [ ] , 0 , None ) ;
301301
302302 let response: crate :: MeterBundleResponse = client
303303 . request ( "base_meterBundle" , ( bundle, ) )
304304 . await ?;
305305
306- assert_eq ! ( response. state_block_number, 0 ) ; // Uses bundle.block_number
306+ // Should return the latest block number (genesis block 0)
307+ assert_eq ! ( response. state_block_number, 0 ) ;
308+
309+ Ok ( ( ) )
310+ }
311+
312+ #[ tokio:: test]
313+ async fn test_meter_bundle_ignores_bundle_block_number ( ) -> eyre:: Result < ( ) > {
314+ reth_tracing:: init_test_tracing ( ) ;
315+ let node = setup_node ( ) . await ?;
316+ let client = node. rpc_client ( ) . await ?;
317+
318+ // Even if bundle.block_number is different, it should use the latest block
319+ // In this test, we specify block_number=0 in the bundle
320+ let bundle1 = create_bundle ( vec ! [ ] , 0 , None ) ;
321+ let response1: crate :: MeterBundleResponse = client
322+ . request ( "base_meterBundle" , ( bundle1, ) )
323+ . await ?;
324+
325+ // Try with a different bundle.block_number (999 - arbitrary value)
326+ // Since we can't create future blocks, we use a different value to show it's ignored
327+ let bundle2 = create_bundle ( vec ! [ ] , 999 , None ) ;
328+ let response2: crate :: MeterBundleResponse = client
329+ . request ( "base_meterBundle" , ( bundle2, ) )
330+ . await ?;
331+
332+ // Both should return the same state_block_number (the latest block)
333+ // because the implementation always uses Latest, not bundle.block_number
334+ assert_eq ! ( response1. state_block_number, response2. state_block_number) ;
335+ assert_eq ! ( response1. state_block_number, 0 ) ; // Genesis block
307336
308337 Ok ( ( ) )
309338 }
@@ -332,18 +361,21 @@ mod tests {
332361 }
333362
334363 #[ tokio:: test]
335- async fn test_meter_bundle_nonexistent_block ( ) -> eyre:: Result < ( ) > {
364+ async fn test_meter_bundle_arbitrary_block_number ( ) -> eyre:: Result < ( ) > {
336365 reth_tracing:: init_test_tracing ( ) ;
337366 let node = setup_node ( ) . await ?;
338367 let client = node. rpc_client ( ) . await ?;
339368
340- let bundle = create_bundle ( vec ! [ ] , 999999 , None ) ; // Non-existent block
369+ // Since we now ignore bundle.block_number and always use the latest block,
370+ // any block_number value should work (it's only used for bundle validity in TIPS)
371+ let bundle = create_bundle ( vec ! [ ] , 999999 , None ) ;
341372
342- let result : Result < crate :: MeterBundleResponse , _ > = client
373+ let response : crate :: MeterBundleResponse = client
343374 . request ( "base_meterBundle" , ( bundle, ) )
344- . await ;
375+ . await ? ;
345376
346- assert ! ( result. is_err( ) ) ;
377+ // Should succeed and use the latest block (genesis block 0)
378+ assert_eq ! ( response. state_block_number, 0 ) ;
347379
348380 Ok ( ( ) )
349381 }
0 commit comments