示例#1
0
    def test_loop_maple(self):

        steps = Steps()
        data = {'maple': True, 'section': '{\n"package":"maple.plugins.user.LoopPlugins"'\
                ',\n"method":"single_iterable_loop",\n"options":[\n    {"iterable_name": "front_ports"},\n'\
                '    {"start": "0"},\n    {"stop": "1"},\n    {"step": "1"}\n    ]\n}',
                'actions': [
                  {'execute':
                    {'device': 'PE1',
                     'command': 'show interface ethernet 1/%VARIABLES{front_ports}',
                     'save': [{'variable_name': 'step-1_rule-1_match_unmatch'}]},
                     'maple_search': {
                       'search_string': '%VARIABLES{step-1_rule-1_match_unmatch}',
                       'device': 'PE1',
                       'include': ['.*o.*']}}]}

        side_effect = [{
            'loop_continue': True,
            'matchObjs': {
                'front_ports': 'b'
            }
        }, {
            'loop_continue': False
        }]

        with patch('plugins.user.LoopPlugins.single_iterable_loop',
                   side_effect=side_effect) as func:

            self.kwargs.update({'steps': steps, 'action_item': data})
            loop(**self.kwargs)
            func.assert_called()
            self.assertEqual(steps.result, Passed)
示例#2
0
    def test_loop_range(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_range)
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        self.assertEqual(steps.result, Passed)
示例#3
0
    def test_loop_with_parallel_errored(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_parallel_error)
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        self.assertEqual(steps.result, Errored)
示例#4
0
    def test_loop_with_loop_until(self):

        self.testbed.devices['PE1'].side_effect = [Exception, Exception, 'oop']
        steps = Steps()
        data = yaml.safe_load(self.loop_until)
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        self.assertEqual(out['substeps'], [])
        self.assertEqual(steps.result, Passed)
示例#5
0
    def test_loop_with_dict_val(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_with_dict_val)
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        self.assertEqual(len(out['substeps']), 2)
        self.assertEqual(out['substeps'][0]['device'], 'PE1')
        self.assertEqual(out['substeps'][1]['device'], 'PE2')
示例#6
0
    def test_loop_init(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_with_val)
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        expected = {
            "action":
            "loop",
            "step_result":
            Failed,
            "substeps": [{
                "device": "PE1",
                "continue_": True,
                "action": "execute",
                "description": "",
                "step_result": Passed,
                "alias": "execute_id",
                "saved_vars": {
                    "execute_id": "passed"
                }
            }, {
                "device": "PE1",
                "continue_": True,
                "action": "parse",
                "description": "",
                "step_result": Passed,
                "alias": None,
                "saved_vars": {}
            }, {
                "device": "PE1",
                "continue_": True,
                "action": "execute",
                "description": "",
                "step_result": Failed,
                "alias": "execute_id",
                "saved_vars": {
                    "execute_id": "failed"
                }
            }, {
                "device": "PE1",
                "continue_": True,
                "action": "parse",
                "description": "",
                "step_result": Passed,
                "alias": None,
                "saved_vars": {}
            }],
            "advanced_action":
            True,
            "loop_until":
            None
        }

        self.assertEqual(out, expected)
        self.assertEqual(steps.result, Failed)
        self.assertEqual(steps.details[2].result, Passed)
示例#7
0
    def test_until_condition_true(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_with_until)
        self.blitz_obj.parameters.setdefault('save_variable_name', {})
        self.blitz_obj.parameters['save_variable_name']['nbc'] = '07.33'
        self.kwargs.update({
            'self': self.blitz_obj,
            'steps': steps,
            'action_item': data
        })

        out = loop(**self.kwargs)

        func = self.testbed.devices['PE1'].parse
        func.assert_not_called()
        self.assertEqual(out['substeps'], [])
示例#8
0
    def test_do_until_condition_true(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_with_do_until_1)
        self.blitz_obj.parameters.setdefault('save_variable_name', {})
        self.blitz_obj.parameters['save_variable_name']['nbc'] = '07.33'
        self.kwargs.update({
            'self': self.blitz_obj,
            'steps': steps,
            'action_item': data
        })

        out = loop(**self.kwargs)
        expected = {
            "action":
            "loop",
            "step_result":
            Passed,
            "substeps": [{
                "device": "PE1",
                "continue_": True,
                "action": "parse",
                "description": "",
                "step_result": Passed,
                "alias": None,
                "saved_vars": {
                    "nbc": "07.33"
                },
                "filters": "get_values('bios_version', 0)"
            }],
            "advanced_action":
            True,
            "loop_until":
            None
        }

        func = self.testbed.devices['PE1'].parse
        func.assert_called_once()
        self.assertEqual(out, expected)
示例#9
0
    def test_until_condition_false(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_with_until)
        self.blitz_obj.parameters.setdefault('save_variable_name', {})
        self.blitz_obj.parameters['save_variable_name']['nbc'] = '06.33'
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        expected = [{
            'device': 'PE1',
            'continue_': True,
            'action': 'parse',
            'description': '',
            'step_result': Passed,
            'alias': None,
            'saved_vars': {
                'nbc': '07.33'
            },
            'filters': "get_values('bios_version', 0)"
        }]

        func = self.testbed.devices['PE1'].parse
        func.assert_called_once()
        self.assertEqual(out['substeps'], expected)
示例#10
0
    def test_loop_over_device(self):

        steps = Steps()
        data = yaml.safe_load(self.loop_over_device)
        self.kwargs.update({'steps': steps, 'action_item': data})
        out = loop(**self.kwargs)
        expected = {
            "action":
            "loop",
            "step_result":
            Passed,
            "substeps": [{
                "device": "PE1",
                "continue_": True,
                "action": "configure",
                "description": "",
                "step_result": Passed,
                "alias": None,
                "saved_vars": {}
            }, {
                "device": "PE2",
                "continue_": True,
                "action": "configure",
                "description": "",
                "step_result": Passed,
                "alias": None,
                "saved_vars": {}
            }],
            "advanced_action":
            True,
            "loop_until":
            None
        }

        self.assertEqual(out, expected)
        self.assertEqual(steps.result, out['step_result'])