@@ -48,6 +48,7 @@ fn to_pbs_config(chain: Chain, pbs_config: PbsConfig, relays: Vec<RelayClient>)
48
48
pbs_config : Arc :: new ( pbs_config) ,
49
49
signer_client : None ,
50
50
event_publisher : None ,
51
+ all_relays : relays. clone ( ) ,
51
52
relays,
52
53
muxes : None ,
53
54
}
@@ -204,24 +205,28 @@ async fn test_submit_block_too_large() -> Result<()> {
204
205
async fn test_mux ( ) -> Result < ( ) > {
205
206
setup_test_env ( ) ;
206
207
let signer = random_secret ( ) ;
207
- let pubkey_1: BlsPublicKey = blst_pubkey_to_alloy ( & signer. sk_to_pk ( ) ) . into ( ) ;
208
- let signer_2 = random_secret ( ) ;
209
- let pubkey_2: BlsPublicKey = blst_pubkey_to_alloy ( & signer_2. sk_to_pk ( ) ) . into ( ) ;
208
+ let pubkey: BlsPublicKey = blst_pubkey_to_alloy ( & signer. sk_to_pk ( ) ) . into ( ) ;
210
209
211
210
let chain = Chain :: Holesky ;
212
211
let port = 3600 ;
213
212
214
- let mux_relay = generate_mock_relay ( port + 1 , * pubkey_1) ?;
215
- let relays = vec ! [ mux_relay. clone( ) , generate_mock_relay( port + 2 , * pubkey_2) ?] ;
213
+ let mux_relay_1 = generate_mock_relay ( port + 1 , * pubkey) ?;
214
+ let mux_relay_2 = generate_mock_relay ( port + 2 , * pubkey) ?;
215
+ let default_relay = generate_mock_relay ( port + 3 , * pubkey) ?;
216
+
216
217
let mock_state = Arc :: new ( MockRelayState :: new ( chain, signer) ) ;
217
218
tokio:: spawn ( start_mock_relay_service ( mock_state. clone ( ) , port + 1 ) ) ;
218
219
tokio:: spawn ( start_mock_relay_service ( mock_state. clone ( ) , port + 2 ) ) ;
220
+ tokio:: spawn ( start_mock_relay_service ( mock_state. clone ( ) , port + 3 ) ) ;
219
221
222
+ let relays = vec ! [ default_relay. clone( ) ] ;
220
223
let mut config = to_pbs_config ( chain, get_pbs_static_config ( port) , relays) ;
224
+ config. all_relays = vec ! [ mux_relay_1. clone( ) , mux_relay_2. clone( ) , default_relay. clone( ) ] ;
225
+
221
226
let mux = RuntimeMuxConfig {
222
227
id : String :: from ( "test" ) ,
223
228
config : config. pbs_config . clone ( ) ,
224
- relays : vec ! [ mux_relay ] ,
229
+ relays : vec ! [ mux_relay_1 , mux_relay_2 ] ,
225
230
} ;
226
231
227
232
let validator_pubkey = blst_pubkey_to_alloy ( & random_secret ( ) . sk_to_pk ( ) ) ;
@@ -239,12 +244,28 @@ async fn test_mux() -> Result<()> {
239
244
let res = mock_validator. do_get_header ( None ) . await ;
240
245
241
246
assert ! ( res. is_ok( ) ) ;
242
- assert_eq ! ( mock_state. received_get_header( ) , 2 ) ; // both relays were used
247
+ assert_eq ! ( mock_state. received_get_header( ) , 1 ) ; // only default relay was used
243
248
244
249
info ! ( "Sending get header with mux" ) ;
245
250
let res = mock_validator. do_get_header ( Some ( validator_pubkey) ) . await ;
246
251
247
252
assert ! ( res. is_ok( ) ) ;
248
- assert_eq ! ( mock_state. received_get_header( ) , 3 ) ; // only one relay was used
253
+ assert_eq ! ( mock_state. received_get_header( ) , 3 ) ; // two mux relays were used
254
+
255
+ let res = mock_validator. do_get_status ( ) . await ;
256
+
257
+ assert ! ( res. is_ok( ) ) ;
258
+ assert_eq ! ( mock_state. received_get_status( ) , 3 ) ; // default + 2 mux relays were used
259
+
260
+ let res = mock_validator. do_register_validator ( ) . await ;
261
+
262
+ assert ! ( res. is_ok( ) ) ;
263
+ assert_eq ! ( mock_state. received_register_validator( ) , 3 ) ; // default + 2 mux relays were used
264
+
265
+ let res = mock_validator. do_submit_block ( ) . await ;
266
+
267
+ assert ! ( res. is_err( ) ) ;
268
+ assert_eq ! ( mock_state. received_submit_block( ) , 3 ) ; // default + 2 mux relays were used
269
+
249
270
Ok ( ( ) )
250
271
}
0 commit comments