예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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)