@@ -260,19 +260,34 @@ def test_get_link_devices_using_index(self):
260
260
index = 10000 )
261
261
262
262
263
- class ListIpRulesTestCase (functional_base .BaseSudoTestCase ):
264
-
265
- RULE_TABLES = {'default' : 253 , 'main' : 254 , 'local' : 255 }
263
+ class BaseIpRuleTestCase (functional_base .BaseSudoTestCase ):
266
264
267
265
def setUp (self ):
268
- super (ListIpRulesTestCase , self ).setUp ()
266
+ super ().setUp ()
269
267
self .namespace = 'ns_test-' + uuidutils .generate_uuid ()
270
268
self .ns = priv_ip_lib .create_netns (self .namespace )
271
269
self .addCleanup (self ._remove_ns )
272
270
273
271
def _remove_ns (self ):
274
272
priv_ip_lib .remove_netns (self .namespace )
275
273
274
+ def _check_rules (self , rules , parameters , values , exception_string = None ,
275
+ raise_exception = True ):
276
+ for rule in rules :
277
+ if all (rule .get (parameter ) == value
278
+ for parameter , value in zip (parameters , values )):
279
+ return True
280
+ else :
281
+ if raise_exception :
282
+ self .fail ('Rule with %s was expected' % exception_string )
283
+ else :
284
+ return False
285
+
286
+
287
+ class ListIpRulesTestCase (BaseIpRuleTestCase ):
288
+
289
+ RULE_TABLES = {'default' : 253 , 'main' : 254 , 'local' : 255 }
290
+
276
291
def test_list_default_rules_ipv4 (self ):
277
292
rules_ipv4 = priv_ip_lib .list_ip_rules (self .namespace , 4 )
278
293
self .assertEqual (3 , len (rules_ipv4 ))
@@ -312,28 +327,7 @@ def test_list_rules_ipv6(self):
312
327
self .fail ('Rule added (2001:db8::1/64, table 20) not found' )
313
328
314
329
315
- class RuleTestCase (functional_base .BaseSudoTestCase ):
316
-
317
- def setUp (self ):
318
- super (RuleTestCase , self ).setUp ()
319
- self .namespace = 'ns_test-' + uuidutils .generate_uuid ()
320
- self .ns = priv_ip_lib .create_netns (self .namespace )
321
- self .addCleanup (self ._remove_ns )
322
-
323
- def _remove_ns (self ):
324
- priv_ip_lib .remove_netns (self .namespace )
325
-
326
- def _check_rules (self , rules , parameters , values , exception_string = None ,
327
- raise_exception = True ):
328
- for rule in rules :
329
- if all (rule .get (parameter ) == value
330
- for parameter , value in zip (parameters , values )):
331
- return True
332
- else :
333
- if raise_exception :
334
- self .fail ('Rule with %s was expected' % exception_string )
335
- else :
336
- return False
330
+ class AddIpRulesTestCase (BaseIpRuleTestCase ):
337
331
338
332
def test_add_rule_ip (self ):
339
333
ip_addresses = ['192.168.200.250' , '2001::250' ]
@@ -460,6 +454,23 @@ def test_add_rule_exists(self):
460
454
self .assertEqual (4 , len (rules ))
461
455
462
456
457
+ class DeleteIpRulesTestCase (BaseIpRuleTestCase ):
458
+
459
+ def test_delete_rule_no_entry (self ):
460
+ iif = 'iif_device'
461
+ priv_ip_lib .create_interface (iif , self .namespace , 'dummy' )
462
+
463
+ try :
464
+ # This should not raise for a non-existent entry
465
+ priv_ip_lib .delete_ip_rule (self .namespace , iifname = iif )
466
+ except Exception :
467
+ self .fail ('Delete IP rule threw unexpected exception' )
468
+
469
+ rules = ip_lib .list_ip_rules (self .namespace , 4 )
470
+ # There are always 3 rules by default
471
+ self .assertEqual (3 , len (rules ))
472
+
473
+
463
474
class GetIpAddressesTestCase (functional_base .BaseSudoTestCase ):
464
475
465
476
def _remove_ns (self , namespace ):
@@ -687,6 +698,21 @@ def test_add_multipath_route(self):
687
698
n_cons .IP_VERSION_4 , via = multipath )
688
699
self ._check_routes (['192.168.0.0/24' ], gateway = multipath )
689
700
701
+ def test_delete_route_no_entry (self ):
702
+ cidr = '192.168.0.0/24'
703
+ self .device .addr .add ('10.1.0.1/24' )
704
+ try :
705
+ # This should not raise for a non-existent entry
706
+ priv_ip_lib .delete_ip_route (self .namespace , cidr ,
707
+ n_cons .IP_VERSION_4 ,
708
+ device = self .device_name )
709
+ except Exception :
710
+ self .fail ('Delete IP route threw unexpected exception' )
711
+
712
+ routes = ip_lib .list_ip_routes (self .namespace , n_cons .IP_VERSION_4 )
713
+ # There will be a single interface route since we added an IP
714
+ self .assertEqual (1 , len (routes ))
715
+
690
716
691
717
class GetLinkAttributesTestCase (functional_base .BaseSudoTestCase ):
692
718
0 commit comments