1
- use const_sv2:: { MESSAGE_TYPE_SETUP_CONNECTION , MESSAGE_TYPE_SUBMIT_SHARES_EXTENDED } ;
1
+ use const_sv2:: {
2
+ MESSAGE_TYPE_MINING_SET_NEW_PREV_HASH , MESSAGE_TYPE_SETUP_CONNECTION ,
3
+ MESSAGE_TYPE_SUBMIT_SHARES_EXTENDED ,
4
+ } ;
2
5
use integration_tests_sv2:: { sniffer:: * , * } ;
3
6
use roles_logic_sv2:: parsers:: { CommonMessages , Mining , PoolMessages } ;
4
7
@@ -13,7 +16,7 @@ async fn translation_proxy() {
13
16
let ( pool_translator_sniffer, pool_translator_sniffer_addr) =
14
17
start_sniffer ( "0" . to_string ( ) , pool_addr, false , None ) . await ;
15
18
let ( _, tproxy_addr) = start_sv2_translator ( pool_translator_sniffer_addr) . await ;
16
- let _mining_device = start_mining_device_sv1 ( tproxy_addr) . await ;
19
+ let _mining_device = start_mining_device_sv1 ( tproxy_addr, false ) . await ;
17
20
pool_translator_sniffer
18
21
. wait_for_message_type ( MessageDirection :: ToUpstream , MESSAGE_TYPE_SETUP_CONNECTION )
19
22
. await ;
@@ -44,3 +47,53 @@ async fn translation_proxy() {
44
47
)
45
48
. await ;
46
49
}
50
+
51
+ // Test full flow with Translator and Job Declarator. An SV1 mining device is connected to
52
+ // Translator and is successfully submitting shares to the pool. It also asserts that Pool role
53
+ // sends a subsequent `SET_NEW_PREV_HASH`.
54
+ #[ tokio:: test]
55
+ async fn translation_proxy_and_jd ( ) {
56
+ let ( _tp, tp_addr) = start_template_provider ( None ) . await ;
57
+ let ( _pool, pool_addr) = start_pool ( Some ( tp_addr) ) . await ;
58
+ let ( jdc_pool_sniffer, pool_translator_sniffer_addr) =
59
+ start_sniffer ( "0" . to_string ( ) , pool_addr, false , None ) . await ;
60
+ let ( _jds, jds_addr) = start_jds ( tp_addr) . await ;
61
+ let ( _jdc, jdc_addr) = start_jdc ( pool_translator_sniffer_addr, tp_addr, jds_addr) . await ;
62
+ let ( _translator, tproxy_addr) = start_sv2_translator ( jdc_addr) . await ;
63
+ let _mining_device = start_mining_device_sv1 ( tproxy_addr, true ) . await ;
64
+ jdc_pool_sniffer
65
+ . wait_for_message_type ( MessageDirection :: ToUpstream , MESSAGE_TYPE_SETUP_CONNECTION )
66
+ . await ;
67
+ assert_common_message ! (
68
+ & jdc_pool_sniffer. next_message_from_downstream( ) ,
69
+ SetupConnection
70
+ ) ;
71
+ assert_common_message ! (
72
+ & jdc_pool_sniffer. next_message_from_upstream( ) ,
73
+ SetupConnectionSuccess
74
+ ) ;
75
+ assert_mining_message ! (
76
+ & jdc_pool_sniffer. next_message_from_downstream( ) ,
77
+ OpenExtendedMiningChannel
78
+ ) ;
79
+ assert_mining_message ! (
80
+ & jdc_pool_sniffer. next_message_from_upstream( ) ,
81
+ OpenExtendedMiningChannelSuccess
82
+ ) ;
83
+ assert_mining_message ! (
84
+ & jdc_pool_sniffer. next_message_from_upstream( ) ,
85
+ NewExtendedMiningJob
86
+ ) ;
87
+ jdc_pool_sniffer
88
+ . wait_for_message_type (
89
+ MessageDirection :: ToUpstream ,
90
+ MESSAGE_TYPE_SUBMIT_SHARES_EXTENDED ,
91
+ )
92
+ . await ;
93
+ jdc_pool_sniffer
94
+ . wait_for_message_type (
95
+ MessageDirection :: ToDownstream ,
96
+ MESSAGE_TYPE_MINING_SET_NEW_PREV_HASH ,
97
+ )
98
+ . await ;
99
+ }
0 commit comments