Skip to content
Snippets Groups Projects
Commit d7a487c0 authored by Erik Reid's avatar Erik Reid
Browse files

additional validation

parent 9c5c2bf4
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,8 @@ from resource_management.hardware.router \
DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
def _load_json_data(filename):
def _load_pyez_json_table(router_name, table_name):
filename = f'{router_name}-{table_name}.json'
with open(os.path.join(DATA_DIR, filename)) as f:
return json.loads(f.read())
......@@ -89,14 +90,15 @@ def pytest_generate_tests(metafunc):
@pytest.fixture
def mocked_pyez_vmx(router_name):
def _table_data_to_iter(json_data_filename):
def _table_data_to_iter(table_name):
# simple simulation of how pyez renders
# a table as an iterable
#
# datafile should be something formatted as
# if (or actually captured) from a pyez table
# object's to_json() method
for name, data in _load_json_data(json_data_filename).items():
for name, data in _load_pyez_json_table(
router_name, table_name).items():
o = _namespace()
o.name = o.key = name
for k, v in data.items():
......@@ -106,24 +108,36 @@ def mocked_pyez_vmx(router_name):
m = 'resource_management.hardware.router'
with patch(f'{m}.PhyPortTable') as PhyPortTable:
with patch(f'{m}.FpcHwTable') as FpcHwTable:
with patch(f'{m}.Device') as Device:
with patch(f'{m}.Device'):
phy_port_table = MagicMock()
phy_port_table.__iter__.return_value \
= _table_data_to_iter(f'{router_name}-PhyPortTable.json')
= _table_data_to_iter('PhyPortTable')
PhyPortTable.return_value = phy_port_table
fpc_hw_table = MagicMock()
fpc_hw_table.__iter__.return_value \
= _table_data_to_iter(f'{router_name}-FpcHwTable.json')
= _table_data_to_iter('FpcHwTable')
FpcHwTable.return_value = fpc_hw_table
yield # stay in this block until caller context exits
def test_load_line_cards(mocked_pyez_vmx):
def test_load_line_cards(mocked_pyez_vmx, router_name):
fpcs = load_line_cards(
hostname='bogus', username='bogus', key_filename='no file')
fpcs = list(fpcs)
validate(fpcs, LINE_CARDS_LIST_SCHEMA)
assert len(fpcs) > 0 # because we know the test data is non-empty
expected_line_cards = set(
_load_pyez_json_table(router_name, 'FpcHwTable').keys())
expected_ports = set(
_load_pyez_json_table(router_name, 'PhyPortTable').keys())
line_cards = {f['name'] for f in fpcs}
ports = set()
for f in fpcs:
ports |= {p['name'] for p in f['ports']}
assert line_cards == expected_line_cards
assert ports == expected_ports
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment