Add unit tests for loopbacks; While here, fix a bug in get_by_name(), yaay
This commit is contained in:
12
unittest/test_loopback.yaml
Normal file
12
unittest/test_loopback.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
loopbacks:
|
||||||
|
loop0:
|
||||||
|
description: "Loopback, no config"
|
||||||
|
loop1:
|
||||||
|
description: "Loopback, both LCP and address"
|
||||||
|
mtu: 2000
|
||||||
|
lcp: "loop56789012345"
|
||||||
|
addresses: [ 192.0.2.1/29, 2001:db8::1/64 ]
|
||||||
|
loop2:
|
||||||
|
description: "Loopback, invalid because it has an address but no LCP"
|
||||||
|
mtu: 2000
|
||||||
|
addresses: [ 192.0.2.9/29, 2001:db8:1::1/64 ]
|
@ -19,6 +19,14 @@ class NullHandler(logging.Handler):
|
|||||||
def emit(self, record):
|
def emit(self, record):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def get_loopbacks(yaml):
|
||||||
|
""" Return a list of all loopbacks. """
|
||||||
|
ret = []
|
||||||
|
if 'loopbacks' in yaml:
|
||||||
|
for ifname, iface in yaml['loopbacks'].items():
|
||||||
|
ret.append(ifname)
|
||||||
|
return ret
|
||||||
|
|
||||||
def get_by_name(yaml, ifname):
|
def get_by_name(yaml, ifname):
|
||||||
""" Return the loopback by name, if it exists. Return None otherwise. """
|
""" Return the loopback by name, if it exists. Return None otherwise. """
|
||||||
try:
|
try:
|
||||||
@ -26,7 +34,7 @@ def get_by_name(yaml, ifname):
|
|||||||
return ifname, yaml['loopbacks'][ifname]
|
return ifname, yaml['loopbacks'][ifname]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
return None
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
def validate_loopbacks(yaml):
|
def validate_loopbacks(yaml):
|
||||||
|
26
validator/test_loopback.py
Normal file
26
validator/test_loopback.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import unittest
|
||||||
|
import yaml
|
||||||
|
import validator.loopback as loopback
|
||||||
|
|
||||||
|
class TestLoopbackMethods(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
with open("unittest/test_loopback.yaml", "r") as f:
|
||||||
|
self.cfg = yaml.load(f, Loader = yaml.FullLoader)
|
||||||
|
|
||||||
|
def test_get_by_name(self):
|
||||||
|
ifname, iface = loopback.get_by_name(self.cfg, "loop1")
|
||||||
|
self.assertIsNotNone(iface)
|
||||||
|
self.assertEqual("loop1", ifname)
|
||||||
|
self.assertEqual(iface['mtu'], 2000)
|
||||||
|
|
||||||
|
ifname, iface = loopback.get_by_name(self.cfg, "loop-noexist")
|
||||||
|
self.assertIsNone(ifname)
|
||||||
|
self.assertIsNone(iface)
|
||||||
|
|
||||||
|
def test_enumerators(self):
|
||||||
|
ifs = loopback.get_loopbacks(self.cfg)
|
||||||
|
self.assertEqual(len(ifs), 3)
|
||||||
|
self.assertIn("loop0", ifs)
|
||||||
|
self.assertIn("loop1", ifs)
|
||||||
|
self.assertIn("loop2", ifs)
|
||||||
|
self.assertNotIn("loop-noexist", ifs)
|
Reference in New Issue
Block a user