Skip to content

Commit 7342a5a

Browse files
committed
add block propagation verification to FullTemplate mode test
1 parent 532dfaa commit 7342a5a

2 files changed

Lines changed: 25 additions & 6 deletions

File tree

integration-tests/tests/jd_full_template_mode.rs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
use 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]
610
async 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
}

integration-tests/tests/jd_mining_modes.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use integration_tests_sv2::{interceptor::MessageDirection, template_provider::DifficultyLevel, *};
22
use stratum_apps::stratum_core::{
3-
common_messages_sv2::*, job_declaration_sv2::*, mining_sv2::*,
4-
template_distribution_sv2::*,
3+
common_messages_sv2::*, job_declaration_sv2::*, mining_sv2::*, template_distribution_sv2::*,
54
};
65

76
// JDS requires FullTemplate but JDC asks for CoinbaseOnly
@@ -108,8 +107,7 @@ async fn jd_coinbase_only_mode_no_declare_and_block_propagation_from_jdc_only()
108107

109108
// check accumulated sniffer history: PushSolution should never have been sent
110109
assert!(
111-
!jdc_jds_sniffer
112-
.has_message_type(MessageDirection::ToUpstream, MESSAGE_TYPE_PUSH_SOLUTION),
110+
!jdc_jds_sniffer.has_message_type(MessageDirection::ToUpstream, MESSAGE_TYPE_PUSH_SOLUTION),
113111
"PushSolution should NOT be sent to JDS in CoinbaseOnly mode"
114112
);
115113

0 commit comments

Comments
 (0)