11use integration_tests_sv2:: { interceptor:: MessageDirection , template_provider:: DifficultyLevel , * } ;
2- use stratum_apps:: stratum_core:: { common_messages_sv2:: * , job_declaration_sv2:: * } ;
2+ use stratum_apps:: stratum_core:: {
3+ common_messages_sv2:: * , job_declaration_sv2:: * , template_distribution_sv2:: * ,
4+ } ;
35
46// JDC in FullTemplate mode (default) should exchange DeclareMiningJob with JDS
7+ // and block propagation should happen from both JDC (SubmitSolution to TP) and
8+ // JDC to JDS (PushSolution)
59#[ tokio:: test]
610async fn jd_full_template_mode_declare_mining_job_exchanged ( ) {
711 start_tracing ( ) ;
812 let ( tp, tp_addr) = start_template_provider ( None , DifficultyLevel :: Low ) ;
13+ let current_block_hash = tp. get_best_block_hash ( ) . unwrap ( ) ;
914 let ( _pool, pool_addr, _) = start_pool ( sv2_tp_config ( tp_addr) , vec ! [ ] , vec ! [ ] , false ) . await ;
1015 let ( _jds, jds_addr) = start_jds ( tp. rpc_info ( ) , true ) ;
1116 let ( jdc_jds_sniffer, jdc_jds_sniffer_addr) =
1217 start_sniffer ( "jdc-jds" , jds_addr, false , vec ! [ ] , None ) ;
18+ let ( jdc_tp_sniffer, jdc_tp_sniffer_addr) =
19+ start_sniffer ( "jdc-tp" , tp_addr, false , vec ! [ ] , None ) ;
1320 let ( _jdc, jdc_addr, _) = start_jdc (
1421 & [ ( pool_addr, jdc_jds_sniffer_addr) ] ,
15- sv2_tp_config ( tp_addr ) ,
22+ sv2_tp_config ( jdc_tp_sniffer_addr ) ,
1623 vec ! [ ] ,
1724 vec ! [ ] ,
1825 false ,
@@ -32,6 +39,7 @@ async fn jd_full_template_mode_declare_mining_job_exchanged() {
3239 start_sv2_translator ( & [ jdc_addr] , false , vec ! [ ] , vec ! [ ] , None , false ) . await ;
3340 let ( _minerd_process, _minerd_addr) = start_minerd ( tproxy_addr, None , None , false ) . await ;
3441
42+ // DeclareMiningJob exchanged in both directions
3543 jdc_jds_sniffer
3644 . wait_for_message_type (
3745 MessageDirection :: ToUpstream ,
@@ -44,4 +52,17 @@ async fn jd_full_template_mode_declare_mining_job_exchanged() {
4452 MESSAGE_TYPE_DECLARE_MINING_JOB_SUCCESS ,
4553 )
4654 . await ;
55+
56+ // block propagation from JDC to TP
57+ jdc_tp_sniffer
58+ . wait_for_message_type ( MessageDirection :: ToUpstream , MESSAGE_TYPE_SUBMIT_SOLUTION )
59+ . await ;
60+ let new_block_hash = tp. get_best_block_hash ( ) . unwrap ( ) ;
61+ assert_ne ! ( current_block_hash, new_block_hash) ;
62+
63+ // block propagation from JDC to JDS (PushSolution)
64+ assert ! (
65+ jdc_jds_sniffer. has_message_type( MessageDirection :: ToUpstream , MESSAGE_TYPE_PUSH_SOLUTION , ) ,
66+ "PushSolution should be sent to JDS in FullTemplate mode"
67+ ) ;
4768}
0 commit comments