8
8
pub mod test {
9
9
use crate :: rpc:: ApiError ;
10
10
use crate :: rpc:: overlay:: Overlay ;
11
+ use crate :: rpc:: overlay:: display:: VpcDetailed ;
11
12
use crate :: rpc:: overlay:: vpc:: { Vpc , VpcTable } ;
12
13
use crate :: rpc:: overlay:: vpcpeering:: VpcExpose ;
13
14
use crate :: rpc:: overlay:: vpcpeering:: VpcManifest ;
@@ -17,25 +18,25 @@ pub mod test {
17
18
18
19
/* Build sample manifests for a peering */
19
20
fn build_manifest_vpc1 ( ) -> VpcManifest {
20
- let mut vpc1 = VpcManifest :: new ( "VPC-1" ) ;
21
+ let mut m1 = VpcManifest :: new ( "VPC-1" ) ;
21
22
let expose = VpcExpose :: empty ( )
22
23
. ip ( Prefix :: from ( ( "10.0.0.0" , 25 ) ) )
23
24
. ip ( Prefix :: from ( ( "10.0.2.128" , 25 ) ) )
24
25
. not ( Prefix :: from ( ( "10.0.1.13" , 32 ) ) )
25
26
. not ( Prefix :: from ( ( "10.0.2.130" , 32 ) ) )
26
27
. as_range ( Prefix :: from ( ( "100.64.1.0" , 24 ) ) )
27
28
. not_as ( Prefix :: from ( ( "100.64.1.13" , 32 ) ) ) ;
28
- vpc1 . add_expose ( expose) . expect ( "Should succeed" ) ;
29
- vpc1
29
+ m1 . add_expose ( expose) . expect ( "Should succeed" ) ;
30
+ m1
30
31
}
31
32
fn build_manifest_vpc2 ( ) -> VpcManifest {
32
- let mut vpc1 = VpcManifest :: new ( "VPC-2" ) ;
33
+ let mut m2 = VpcManifest :: new ( "VPC-2" ) ;
33
34
let expose = VpcExpose :: empty ( )
34
35
. ip ( Prefix :: from ( ( "10.0.0.0" , 24 ) ) )
35
36
. as_range ( Prefix :: from ( ( "100.64.2.0" , 24 ) ) ) ;
36
37
37
- vpc1 . add_expose ( expose) . expect ( "Should succeed" ) ;
38
- vpc1
38
+ m2 . add_expose ( expose) . expect ( "Should succeed" ) ;
39
+ m2
39
40
}
40
41
41
42
/* build sample peering between VPC-1 and VPC-2 */
@@ -44,7 +45,7 @@ pub mod test {
44
45
let m1 = build_manifest_vpc1 ( ) ;
45
46
let m2 = build_manifest_vpc2 ( ) ;
46
47
// build vpc peering with the manifests
47
- VpcPeering :: new ( "VPC-1-to -VPC-2" , m1, m2)
48
+ VpcPeering :: new ( "VPC-1--VPC-2" , m1, m2)
48
49
}
49
50
50
51
#[ test]
@@ -113,10 +114,12 @@ pub mod test {
113
114
let mut peering_table = VpcPeeringTable :: new ( ) ;
114
115
peering_table. add ( peering) . expect ( "Should succeed" ) ;
115
116
117
+ println ! ( "{peering_table}" ) ;
118
+
116
119
/* build overlay object and validate it */
117
120
let overlay = Overlay :: new ( vpc_table, peering_table) ;
118
121
assert_eq ! ( overlay. validate( ) , Ok ( ( ) ) ) ;
119
- println ! ( "{overlay:#?}" ) ;
122
+ // println!("{overlay:#?}");
120
123
}
121
124
122
125
#[ test]
@@ -154,4 +157,129 @@ pub mod test {
154
157
assert ! ( x. contains( & "Peering-4" . to_owned( ) ) ) ;
155
158
assert ! ( !x. contains( & "Peering-3" . to_owned( ) ) , "not there" ) ;
156
159
}
160
+
161
+ #[ test]
162
+ fn test_vpc_collect_peerings ( ) {
163
+ fn man_vpc1_with_vpc2 ( ) -> VpcManifest {
164
+ let mut m1 = VpcManifest :: new ( "VPC-1" ) ;
165
+ let expose = VpcExpose :: empty ( )
166
+ . ip ( Prefix :: from ( ( "192.168.50.0" , 24 ) ) )
167
+ . not ( Prefix :: from ( ( "192.168.50.13" , 32 ) ) ) ;
168
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
169
+
170
+ let expose = VpcExpose :: empty ( )
171
+ . ip ( Prefix :: from ( ( "192.168.111.0" , 24 ) ) )
172
+ . not ( Prefix :: from ( ( "192.168.111.2" , 32 ) ) )
173
+ . not ( Prefix :: from ( ( "192.168.111.254" , 32 ) ) )
174
+ . as_range ( Prefix :: from ( ( "100.64.200.0" , 24 ) ) )
175
+ . not_as ( Prefix :: from ( ( "100.64.200.13" , 32 ) ) ) ;
176
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
177
+ m1
178
+ }
179
+ fn man_vpc1_with_vpc3 ( ) -> VpcManifest {
180
+ let mut m1 = VpcManifest :: new ( "VPC-1" ) ;
181
+ let expose = VpcExpose :: empty ( ) . ip ( Prefix :: from ( ( "192.168.60.0" , 24 ) ) ) ;
182
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
183
+ m1
184
+ }
185
+ fn man_vpc1_with_vpc4 ( ) -> VpcManifest {
186
+ let mut m1 = VpcManifest :: new ( "VPC-1" ) ;
187
+ let expose = VpcExpose :: empty ( ) . ip ( Prefix :: from ( ( "192.168.60.0" , 24 ) ) ) ;
188
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
189
+ m1
190
+ }
191
+ fn man_vpc2 ( ) -> VpcManifest {
192
+ let mut m1 = VpcManifest :: new ( "VPC-2" ) ;
193
+ let expose = VpcExpose :: empty ( ) . ip ( Prefix :: from ( ( "192.168.80.0" , 24 ) ) ) ;
194
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
195
+ m1
196
+ }
197
+ fn man_vpc2_with_vpc3 ( ) -> VpcManifest {
198
+ let mut m1 = VpcManifest :: new ( "VPC-2" ) ;
199
+ let expose = VpcExpose :: empty ( ) . ip ( Prefix :: from ( ( "192.168.80.0" , 24 ) ) ) ;
200
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
201
+ m1
202
+ }
203
+ fn man_vpc3 ( ) -> VpcManifest {
204
+ let mut m1 = VpcManifest :: new ( "VPC-3" ) ;
205
+ let expose = VpcExpose :: empty ( ) . ip ( Prefix :: from ( ( "192.168.128.0" , 27 ) ) ) ;
206
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
207
+ m1
208
+ }
209
+ fn man_vpc4 ( ) -> VpcManifest {
210
+ let mut m1 = VpcManifest :: new ( "VPC-4" ) ;
211
+ let expose = VpcExpose :: empty ( )
212
+ . ip ( Prefix :: from ( ( "192.168.201.1" , 32 ) ) )
213
+ . ip ( Prefix :: from ( ( "192.168.202.2" , 32 ) ) )
214
+ . ip ( Prefix :: from ( ( "192.168.203.3" , 32 ) ) ) ;
215
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
216
+
217
+ let expose = VpcExpose :: empty ( )
218
+ . ip ( Prefix :: from ( ( "192.168.204.4" , 32 ) ) )
219
+ . as_range ( Prefix :: from ( ( "100.64.204.4" , 32 ) ) ) ;
220
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
221
+
222
+ let expose = VpcExpose :: empty ( )
223
+ . ip ( Prefix :: from ( ( "192.168.210.0" , 29 ) ) )
224
+ . not ( Prefix :: from ( ( "192.168.210.1" , 32 ) ) ) ;
225
+ m1. add_expose ( expose) . expect ( "Should succeed" ) ;
226
+
227
+ m1
228
+ }
229
+
230
+ /* build VPC table with 3 vpcs */
231
+ let mut vpc_table = VpcTable :: new ( ) ;
232
+ let _ = vpc_table. add ( Vpc :: new ( "VPC-1" , 3000 ) . expect ( "Should succeed" ) ) ;
233
+ let _ = vpc_table. add ( Vpc :: new ( "VPC-2" , 4000 ) . expect ( "Should succeed" ) ) ;
234
+ let _ = vpc_table. add ( Vpc :: new ( "VPC-3" , 2000 ) . expect ( "Should succeed" ) ) ;
235
+ let _ = vpc_table. add ( Vpc :: new ( "VPC-4" , 6000 ) . expect ( "Should succeed" ) ) ;
236
+
237
+ /* build peering table with 3 peerings */
238
+ let mut peering_table = VpcPeeringTable :: new ( ) ;
239
+ peering_table
240
+ . add ( VpcPeering :: new (
241
+ "VPC-1--VPC-2" ,
242
+ man_vpc1_with_vpc2 ( ) ,
243
+ man_vpc2 ( ) ,
244
+ ) )
245
+ . expect ( "Should succeed" ) ;
246
+
247
+ peering_table
248
+ . add ( VpcPeering :: new (
249
+ "VPC-1--VPC-3" ,
250
+ man_vpc1_with_vpc3 ( ) ,
251
+ man_vpc3 ( ) ,
252
+ ) )
253
+ . expect ( "Should succeed" ) ;
254
+
255
+ peering_table
256
+ . add ( VpcPeering :: new (
257
+ "VPC-1--VPC-4" ,
258
+ man_vpc1_with_vpc4 ( ) ,
259
+ man_vpc4 ( ) ,
260
+ ) )
261
+ . expect ( "Should succeed" ) ;
262
+
263
+ peering_table
264
+ . add ( VpcPeering :: new (
265
+ "VPC-2--VPC-3" ,
266
+ man_vpc2_with_vpc3 ( ) ,
267
+ man_vpc3 ( ) ,
268
+ ) )
269
+ . expect ( "Should succeed" ) ;
270
+
271
+ /* display peering table */
272
+ println ! ( "{peering_table}" ) ;
273
+
274
+ /* collect the peerings for each VPC */
275
+ vpc_table. collect_peerings ( & peering_table) ;
276
+
277
+ /* display VPC table */
278
+ println ! ( "{vpc_table}" ) ;
279
+
280
+ /* get vpc VPC1 */
281
+ if let Some ( vpc) = vpc_table. get_vpc ( "VPC-1" ) {
282
+ println ! ( "{}" , VpcDetailed ( vpc) ) ;
283
+ }
284
+ }
157
285
}
0 commit comments