@@ -6,18 +6,19 @@ const PORT: u16 = 18444;
66
77#[ test]
88fn sync_protocol_with_traffic_shaping ( ) {
9+ use bip324:: io:: Payload ;
10+ use bip324_traffic:: { io:: ShapedProtocol , DecoyStrategy , PaddingStrategy , TrafficConfig } ;
11+ use bitcoin:: consensus:: { deserialize, serialize} ;
12+ use p2p:: {
13+ message:: { NetworkMessage , V2NetworkMessage } ,
14+ message_network:: { UserAgent , VersionMessage } ,
15+ Address , ProtocolVersion , ServiceFlags ,
16+ } ;
917 use std:: {
1018 net:: { IpAddr , Ipv4Addr , SocketAddr , TcpStream } ,
1119 time:: { SystemTime , UNIX_EPOCH } ,
1220 } ;
1321
14- use bip324:: {
15- io:: Payload ,
16- serde:: { deserialize, serialize, NetworkMessage } ,
17- } ;
18- use bip324_traffic:: { io:: ShapedProtocol , DecoyStrategy , PaddingStrategy , TrafficConfig } ;
19- use bitcoin:: p2p:: { message_network:: VersionMessage , Address , ServiceFlags } ;
20-
2122 let bitcoind = regtest_process ( ) ;
2223
2324 let stream = TcpStream :: connect ( bitcoind. params . p2p_socket . unwrap ( ) ) . unwrap ( ) ;
@@ -50,55 +51,58 @@ fn sync_protocol_with_traffic_shaping() {
5051 let ip = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , PORT ) ;
5152 let from_and_recv = Address :: new ( & ip, ServiceFlags :: NONE ) ;
5253 let msg = VersionMessage {
53- version : 70015 ,
54+ version : ProtocolVersion :: INVALID_CB_NO_BAN_VERSION ,
5455 services : ServiceFlags :: NONE ,
5556 timestamp : now as i64 ,
5657 receiver : from_and_recv. clone ( ) ,
5758 sender : from_and_recv,
5859 nonce : 1 ,
59- user_agent : "BIP-324 Traffic Shaping Test" . to_string ( ) ,
60+ user_agent : UserAgent :: from_nonstandard ( "BIP-324 Traffic Shaping Test" ) ,
6061 start_height : 0 ,
6162 relay : false ,
6263 } ;
6364
6465 // Send version message
6566 let version_message = NetworkMessage :: Version ( msg) ;
67+ let v2_version_message = V2NetworkMessage :: new ( version_message) ;
6668 println ! ( "Sending version message with traffic shaping" ) ;
6769 protocol
68- . write ( & Payload :: genuine ( serialize ( version_message ) ) )
70+ . write ( & Payload :: genuine ( serialize ( & v2_version_message ) ) )
6971 . unwrap ( ) ;
7072
7173 // Read version response
7274 println ! ( "Reading version response" ) ;
7375 let response = protocol. read ( ) . unwrap ( ) ;
74- let response_message: NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
76+ let response_message: V2NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
7577 assert_eq ! ( response_message. cmd( ) , "version" ) ;
7678
7779 // Send verack
7880 let verack_message = NetworkMessage :: Verack ;
81+ let v2_verack_message = V2NetworkMessage :: new ( verack_message) ;
7982 println ! ( "Sending verack with traffic shaping" ) ;
8083 protocol
81- . write ( & Payload :: genuine ( serialize ( verack_message ) ) )
84+ . write ( & Payload :: genuine ( serialize ( & v2_verack_message ) ) )
8285 . unwrap ( ) ;
8386
8487 // Read verack response
8588 println ! ( "Reading verack response" ) ;
8689 let response = protocol. read ( ) . unwrap ( ) ;
87- let response_message: NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
90+ let response_message: V2NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
8891 assert_eq ! ( response_message. cmd( ) , "verack" ) ;
8992
9093 // Exchange a few ping/pong messages to verify the connection remains stable
9194 for i in 0 ..3 {
9295 let ping_message = NetworkMessage :: Ping ( i) ;
96+ let v2_ping_message = V2NetworkMessage :: new ( ping_message) ;
9397 println ! ( "Sending ping {i} with traffic shaping" ) ;
9498 protocol
95- . write ( & Payload :: genuine ( serialize ( ping_message ) ) )
99+ . write ( & Payload :: genuine ( serialize ( & v2_ping_message ) ) )
96100 . unwrap ( ) ;
97101
98102 // Read until we get a pong (might get other messages)
99103 loop {
100104 let response = protocol. read ( ) . unwrap ( ) ;
101- let response_message: NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
105+ let response_message: V2NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
102106 if response_message. cmd ( ) == "pong" {
103107 println ! ( "Received pong {i}" ) ;
104108 break ;
@@ -122,12 +126,14 @@ async fn async_protocol_with_traffic_shaping() {
122126 time:: { SystemTime , UNIX_EPOCH } ,
123127 } ;
124128
125- use bip324:: {
126- io:: Payload ,
127- serde:: { deserialize, serialize, NetworkMessage } ,
128- } ;
129+ use bip324:: io:: Payload ;
129130 use bip324_traffic:: { futures:: ShapedProtocol , DecoyStrategy , PaddingStrategy , TrafficConfig } ;
130- use bitcoin:: p2p:: { message_network:: VersionMessage , Address , ServiceFlags } ;
131+ use bitcoin:: consensus:: { deserialize, serialize} ;
132+ use p2p:: {
133+ message:: { NetworkMessage , V2NetworkMessage } ,
134+ message_network:: { UserAgent , VersionMessage } ,
135+ Address , ProtocolVersion , ServiceFlags ,
136+ } ;
131137 use tokio:: net:: TcpStream ;
132138
133139 let bitcoind = regtest_process ( ) ;
@@ -165,58 +171,61 @@ async fn async_protocol_with_traffic_shaping() {
165171 let ip = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , PORT ) ;
166172 let from_and_recv = Address :: new ( & ip, ServiceFlags :: NONE ) ;
167173 let msg = VersionMessage {
168- version : 70015 ,
174+ version : ProtocolVersion :: INVALID_CB_NO_BAN_VERSION ,
169175 services : ServiceFlags :: NONE ,
170176 timestamp : now as i64 ,
171177 receiver : from_and_recv. clone ( ) ,
172178 sender : from_and_recv,
173179 nonce : 1 ,
174- user_agent : "BIP-324 Async Traffic Shaping Test" . to_string ( ) ,
180+ user_agent : UserAgent :: from_nonstandard ( "BIP-324 Async Traffic Shaping Test" ) ,
175181 start_height : 0 ,
176182 relay : false ,
177183 } ;
178184
179185 // Send version message
180186 let version_message = NetworkMessage :: Version ( msg) ;
187+ let v2_version_message = V2NetworkMessage :: new ( version_message) ;
181188 println ! ( "Sending version message with async traffic shaping" ) ;
182189 protocol
183- . write ( & Payload :: genuine ( serialize ( version_message ) ) )
190+ . write ( & Payload :: genuine ( serialize ( & v2_version_message ) ) )
184191 . await
185192 . unwrap ( ) ;
186193
187194 // Read version response
188195 println ! ( "Reading version response" ) ;
189196 let response = protocol. read ( ) . await . unwrap ( ) ;
190- let response_message: NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
197+ let response_message: V2NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
191198 assert_eq ! ( response_message. cmd( ) , "version" ) ;
192199
193200 // Send verack
194201 let verack_message = NetworkMessage :: Verack ;
202+ let v2_verack_message = V2NetworkMessage :: new ( verack_message) ;
195203 println ! ( "Sending verack with async traffic shaping" ) ;
196204 protocol
197- . write ( & Payload :: genuine ( serialize ( verack_message ) ) )
205+ . write ( & Payload :: genuine ( serialize ( & v2_verack_message ) ) )
198206 . await
199207 . unwrap ( ) ;
200208
201209 // Read verack response
202210 println ! ( "Reading verack response" ) ;
203211 let response = protocol. read ( ) . await . unwrap ( ) ;
204- let response_message: NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
212+ let response_message: V2NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
205213 assert_eq ! ( response_message. cmd( ) , "verack" ) ;
206214
207215 // Exchange a few ping/pong messages to verify the connection remains stable
208216 for i in 0 ..3 {
209217 let ping_message = NetworkMessage :: Ping ( i) ;
218+ let v2_ping_message = V2NetworkMessage :: new ( ping_message) ;
210219 println ! ( "Sending async ping {i} with traffic shaping" ) ;
211220 protocol
212- . write ( & Payload :: genuine ( serialize ( ping_message ) ) )
221+ . write ( & Payload :: genuine ( serialize ( & v2_ping_message ) ) )
213222 . await
214223 . unwrap ( ) ;
215224
216225 // Read until we get a pong (might get other messages)
217226 loop {
218227 let response = protocol. read ( ) . await . unwrap ( ) ;
219- let response_message: NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
228+ let response_message: V2NetworkMessage = deserialize ( response. contents ( ) ) . unwrap ( ) ;
220229 if response_message. cmd ( ) == "pong" {
221230 println ! ( "Received async pong {i}" ) ;
222231 break ;
0 commit comments