@@ -28,10 +28,10 @@ pub type Reader = recv::application::Reader<Subscriber>;
28
28
// limit the number of threads used in testing to reduce costs of harnesses
29
29
const TEST_THREADS : usize = 2 ;
30
30
31
- const MAX_DATAGRAM_SIZE : Option < u16 > = if cfg ! ( target_os = "linux" ) {
32
- Some ( 8950 )
31
+ pub ( crate ) const MAX_DATAGRAM_SIZE : u16 = if cfg ! ( target_os = "linux" ) {
32
+ 8950
33
33
} else {
34
- None
34
+ 1450
35
35
} ;
36
36
37
37
#[ derive( Clone ) ]
@@ -44,26 +44,15 @@ pub struct Client {
44
44
45
45
impl Default for Client {
46
46
fn default ( ) -> Self {
47
- let _span = tracing:: info_span!( "client" ) . entered ( ) ;
48
- let map = secret:: map:: testing:: new ( 16 ) ;
49
- let options = socket:: options:: Options :: new ( "127.0.0.1:0" . parse ( ) . unwrap ( ) ) ;
50
- let env = env:: Environment :: builder ( )
51
- . with_threads ( TEST_THREADS )
52
- // TODO enable this once ready
53
- // .with_pool(env::pool::Config::new(map.clone()))
54
- . with_socket_options ( options)
55
- . build ( )
56
- . unwrap ( ) ;
57
- Self {
58
- map,
59
- env,
60
- subscriber : Arc :: new ( event:: testing:: Subscriber :: no_snapshot ( ) ) ,
61
- mtu : MAX_DATAGRAM_SIZE ,
62
- }
47
+ Self :: builder ( ) . build ( )
63
48
}
64
49
}
65
50
66
51
impl Client {
52
+ pub fn builder ( ) -> client:: Builder {
53
+ client:: Builder :: default ( )
54
+ }
55
+
67
56
pub fn handshake_with < S : AsRef < server:: Handle > > (
68
57
& self ,
69
58
server : & S ,
@@ -91,9 +80,7 @@ impl Client {
91
80
92
81
fn params ( & self ) -> ApplicationParams {
93
82
let mut params = dc:: testing:: TEST_APPLICATION_PARAMS ;
94
- if let Some ( mtu) = self . mtu {
95
- params. max_datagram_size = mtu. into ( ) ;
96
- }
83
+ params. max_datagram_size = self . mtu . unwrap_or ( MAX_DATAGRAM_SIZE ) . into ( ) ;
97
84
params
98
85
}
99
86
@@ -142,6 +129,67 @@ impl Client {
142
129
}
143
130
}
144
131
132
+ pub mod client {
133
+ use super :: * ;
134
+
135
+ pub struct Builder {
136
+ map_capacity : usize ,
137
+ mtu : Option < u16 > ,
138
+ subscriber : event:: testing:: Subscriber ,
139
+ }
140
+
141
+ impl Default for Builder {
142
+ fn default ( ) -> Self {
143
+ Self {
144
+ map_capacity : 16 ,
145
+ mtu : None ,
146
+ subscriber : event:: testing:: Subscriber :: no_snapshot ( ) ,
147
+ }
148
+ }
149
+ }
150
+
151
+ impl Builder {
152
+ pub fn map_capacity ( mut self , map_capacity : usize ) -> Self {
153
+ self . map_capacity = map_capacity;
154
+ self
155
+ }
156
+
157
+ pub fn mtu ( mut self , mtu : u16 ) -> Self {
158
+ self . mtu = Some ( mtu) ;
159
+ self
160
+ }
161
+
162
+ pub fn subscriber ( mut self , subscriber : event:: testing:: Subscriber ) -> Self {
163
+ self . subscriber = subscriber;
164
+ self
165
+ }
166
+
167
+ pub fn build ( self ) -> Client {
168
+ let Self {
169
+ map_capacity,
170
+ mtu,
171
+ subscriber,
172
+ } = self ;
173
+ let _span = tracing:: info_span!( "client" ) . entered ( ) ;
174
+ let map = secret:: map:: testing:: new ( map_capacity) ;
175
+ let options = socket:: options:: Options :: new ( "127.0.0.1:0" . parse ( ) . unwrap ( ) ) ;
176
+ let env = env:: Environment :: builder ( )
177
+ . with_threads ( TEST_THREADS )
178
+ // TODO enable this once ready
179
+ // .with_pool(env::pool::Config::new(map.clone()))
180
+ . with_socket_options ( options)
181
+ . build ( )
182
+ . unwrap ( ) ;
183
+ Client {
184
+ map,
185
+ env,
186
+ subscriber : Arc :: new ( subscriber) ,
187
+ mtu,
188
+ }
189
+ }
190
+ }
191
+ }
192
+
145
193
#[ derive( Clone ) ]
146
194
pub struct Server {
147
195
handle : server:: Handle ,
@@ -194,7 +242,7 @@ impl Server {
194
242
}
195
243
}
196
244
197
- mod drop_handle {
245
+ pub ( crate ) mod drop_handle {
198
246
use core:: future:: Future ;
199
247
use tokio:: sync:: watch;
200
248
@@ -241,9 +289,7 @@ pub mod server {
241
289
impl Handle {
242
290
pub ( super ) fn params ( & self ) -> ApplicationParams {
243
291
let mut params = dc:: testing:: TEST_APPLICATION_PARAMS ;
244
- if let Some ( mtu) = self . mtu {
245
- params. max_datagram_size = mtu. into ( ) ;
246
- }
292
+ params. max_datagram_size = self . mtu . unwrap_or ( MAX_DATAGRAM_SIZE ) . into ( ) ;
247
293
params
248
294
}
249
295
}
@@ -418,11 +464,7 @@ pub mod server {
418
464
map,
419
465
protocol,
420
466
local_addr,
421
- mtu : if let Some ( mtu) = mtu {
422
- Some ( mtu)
423
- } else {
424
- MAX_DATAGRAM_SIZE
425
- } ,
467
+ mtu,
426
468
} ;
427
469
428
470
super :: Server {
0 commit comments