@@ -186,6 +186,80 @@ def test_validate_config_db_config__invalid_config__returns_false(self):
186
186
self .assertEqual (expected , actual )
187
187
self .assertIsNotNone (error )
188
188
189
+ def test_validate_bgp_peer_group__valid_non_intersecting_ip_ranges__returns_true (self ):
190
+ # Arrange
191
+ config_wrapper = gu_common .ConfigWrapper ()
192
+ config = {
193
+ "BGP_PEER_RANGE" :
194
+ {
195
+ "BGPSLBPassive" : {
196
+ "ip_range" : ["1.1.1.1/31" , "10.10.10.10/16" , "100.100.100.100/24" ]
197
+ },
198
+ "BgpVac" : {
199
+ "ip_range" : ["2.2.2.2/31" , "20.20.20.20/16" , "200.200.200.200/24" ]
200
+ }
201
+ }
202
+ }
203
+
204
+ # Act
205
+ actual , error = config_wrapper .validate_bgp_peer_group (config )
206
+
207
+ # Assert
208
+ self .assertTrue (actual )
209
+ self .assertIsNone (error )
210
+
211
+ def test_validate_bgp_peer_group__same_ip_prefix__return_false (self ):
212
+ # duplicate v4 within same ip_range
213
+ self .check_validate_bgp_peer_group (
214
+ ["1.1.1.1/16" , "1.1.1.1/16" ],
215
+ duplicated_ip = "1.1.1.1/16" )
216
+ # duplicate v4 within different ip_ranges
217
+ self .check_validate_bgp_peer_group (
218
+ ["1.1.1.1/16" ],
219
+ ["1.1.1.1/16" ],
220
+ duplicated_ip = "1.1.1.1/16" )
221
+ # duplicate v4 within different ip_ranges, but many ips
222
+ self .check_validate_bgp_peer_group (
223
+ ["1.1.1.1/16" , "1.1.1.1/31" , "10.10.10.10/16" , "100.100.100.100/24" ],
224
+ ["2.2.2.2/31" , "20.20.20.20/16" , "200.200.200.200/24" , "1.1.1.1/16" ],
225
+ duplicated_ip = "1.1.1.1/16" )
226
+ # duplicate v6 within same ip_range
227
+ self .check_validate_bgp_peer_group (
228
+ ["fc00:1::32/16" , "fc00:1::32/16" ],
229
+ duplicated_ip = "fc00:1::32/16" )
230
+ # duplicate v6 within different ip_ranges
231
+ self .check_validate_bgp_peer_group (
232
+ ["fc00:1::32/16" ],
233
+ ["fc00:1::32/16" ],
234
+ duplicated_ip = "fc00:1::32/16" )
235
+ # duplicate v6 within different ip_ranges, but many ips
236
+ self .check_validate_bgp_peer_group (
237
+ ["fc00:1::32/16" , "fc00:1::32/31" , "10:1::1/16" , "100:1::1/24" ],
238
+ ["2:1::1/31" , "20:1::1/16" , "200:1::1/24" , "fc00:1::32/16" ],
239
+ duplicated_ip = "fc00:1::32/16" )
240
+
241
+ def check_validate_bgp_peer_group (self , ip_range , other_ip_range = [], duplicated_ip = None ):
242
+ # Arrange
243
+ config_wrapper = gu_common .ConfigWrapper ()
244
+ config = {
245
+ "BGP_PEER_RANGE" :
246
+ {
247
+ "BGPSLBPassive" : {
248
+ "ip_range" : ip_range
249
+ },
250
+ "BgpVac" : {
251
+ "ip_range" : other_ip_range
252
+ },
253
+ }
254
+ }
255
+
256
+ # Act
257
+ actual , error = config_wrapper .validate_bgp_peer_group (config )
258
+
259
+ # Assert
260
+ self .assertFalse (actual )
261
+ self .assertTrue (duplicated_ip in error )
262
+
189
263
def test_crop_tables_without_yang__returns_cropped_config_db_as_json (self ):
190
264
# Arrange
191
265
config_wrapper = gu_common .ConfigWrapper ()
0 commit comments