def test_exports_failed_render_ignore(self): node1_exports = Exports({'a': '${a}'}, SETTINGS, '') node1_parameters = Parameters( { 'name': 'node1', 'a': 1, 'exp': '$[ +IgnoreErrors exports:a ]' }, SETTINGS, '') node1_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node1_parameters, exports=node1_exports) node2_exports = Exports({'a': '${b}'}, SETTINGS, '') node2_parameters = Parameters({'name': 'node1', 'a': 2}, SETTINGS, '') node2_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node2_parameters, exports=node2_exports) node1_entity.initialise_interpolation() node2_entity.initialise_interpolation() queries = node1_entity.parameters.get_inv_queries() for p, q in queries: node1_entity.interpolate_single_export(q) node2_entity.interpolate_single_export(q) res_inv = {'node1': {'a': 1}, 'node2': {}} res_params = {'a': 1, 'name': 'node1', 'exp': {'node1': 1}} inventory = {} inventory['node1'] = node1_entity.exports.as_dict() inventory['node2'] = node2_entity.exports.as_dict() node1_entity.interpolate(inventory) self.assertDictEqual(node1_parameters.as_dict(), res_params) self.assertDictEqual(inventory, res_inv)
def test_exports_failed_render(self): node1_exports = Exports({'a': '${a}'}, SETTINGS, '') node1_parameters = Parameters( { 'name': 'node1', 'a': 1, 'exp': '$[ exports:a ]' }, SETTINGS, '') node1_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node1_parameters, exports=node1_exports) node2_exports = Exports({'a': '${b}'}, SETTINGS, '') node2_parameters = Parameters({'name': 'node2', 'a': 2}, SETTINGS, '') node2_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node2_parameters, exports=node2_exports) node1_entity.initialise_interpolation() node2_entity.initialise_interpolation() queries = node1_entity.parameters.get_inv_queries() with self.assertRaises(ResolveError): for p, q in queries: node1_entity.interpolate_single_export(q) node2_entity.interpolate_single_export(q)
def test_exports_with_ancestor_references(self): inventory = { 'node1': { 'alpha': { 'beta': { 'a': 1, 'b': 2 } } }, 'node2': { 'alpha': { 'beta': { 'a': 3, 'b': 4 } } } } node3_exports = Exports({'alpha': '${alpha}'}, SETTINGS, '') node3_parameters = Parameters( { 'name': 'node3', 'alpha': { 'beta': { 'a': 5, 'b': 6 } }, 'exp': '$[ exports:alpha:beta ]' }, SETTINGS, '') node3_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node3_parameters, exports=node3_exports) res_params = { 'exp': { 'node1': { 'a': 1, 'b': 2 }, 'node2': { 'a': 3, 'b': 4 }, 'node3': { 'a': 5, 'b': 6 } }, 'name': 'node3', 'alpha': { 'beta': { 'a': 5, 'b': 6 } } } res_inv = { 'node1': { 'alpha': { 'beta': { 'a': 1, 'b': 2 } } }, 'node2': { 'alpha': { 'beta': { 'a': 3, 'b': 4 } } }, 'node3': { 'alpha': { 'beta': { 'a': 5, 'b': 6 } } } } node3_entity.initialise_interpolation() queries = node3_entity.parameters.get_inv_queries() for p, q in queries: node3_entity.interpolate_single_export(q) inventory['node3'] = node3_entity.exports.as_dict() node3_entity.interpolate(inventory) self.assertDictEqual(node3_parameters.as_dict(), res_params) self.assertDictEqual(inventory, res_inv)
def test_exports_multiple_nodes(self): node1_exports = Exports({'a': '${a}'}, SETTINGS, '') node1_parameters = Parameters( { 'name': 'node1', 'a': { 'test': '${b}' }, 'b': 1, 'exp': '$[ exports:a ]' }, SETTINGS, '') node1_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node1_parameters, exports=node1_exports) node2_exports = Exports({'a': '${a}'}, SETTINGS, '') node2_parameters = Parameters( { 'name': 'node2', 'a': { 'test': '${b}' }, 'b': 2 }, SETTINGS, '') node2_entity = Entity(SETTINGS, classes=None, applications=None, parameters=node2_parameters, exports=node2_exports) node1_entity.initialise_interpolation() node2_entity.initialise_interpolation() queries = node1_entity.parameters.get_inv_queries() for p, q in queries: node1_entity.interpolate_single_export(q) node2_entity.interpolate_single_export(q) res_inv = { 'node1': NodeInventory({'a': { 'test': 1 }}, True), 'node2': NodeInventory({'a': { 'test': 2 }}, True) } res_params = { 'name': 'node1', 'a': { 'test': 1 }, 'b': 1, 'exp': { 'node1': { 'test': 1 }, 'node2': { 'test': 2 } } } inventory = self._make_inventory({ 'node1': node1_entity.exports.as_dict(), 'node2': node2_entity.exports.as_dict() }) node1_entity.interpolate(inventory) self.assertDictEqual(node1_parameters.as_dict(), res_params) self.assertDictEqual(inventory, res_inv)