Beispiel #1
0
    def test_main_wait_for_boot(self, list_nodes, wait_for_boot):
        """Run the parser.node.main with wait-for-boot subparser function."""
        wait_for_boot.return_value = {'result': 'test'}
        list_nodes.return_value = self._nodes

        args = ['wait-for-boot', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        list_nodes.assert_called_with(self.api, 123, [self._nodes], None)
        wait_for_boot.assert_called_with({'user': '******', 'exp_id': 123},
                                         self._root_nodes,
                                         max_wait=120,
                                         verbose=False)

        args = ['wait-for-boot', "--max-wait", '10', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        list_nodes.assert_called_with(self.api, 123, [self._nodes], None)
        wait_for_boot.assert_called_with({'user': '******', 'exp_id': 123},
                                         self._root_nodes,
                                         max_wait=10,
                                         verbose=False)

        exp_info_res = {"items": [{"network_address": node}
                                  for node in self._nodes]}
        with patch.object(self.api, 'get_experiment_info',
                          Mock(return_value=exp_info_res)):
            list_nodes.return_value = []
            args = ['wait-for-boot']
            open_a8_parser.main(args)
            list_nodes.assert_called_with(self.api, 123, None, None)
            wait_for_boot.assert_called_with({'user': '******',
                                              'exp_id': 123},
                                             self._root_nodes,
                                             max_wait=120,
                                             verbose=False)
Beispiel #2
0
    def test_main_run_cmd(self, list_nodes, run_cmd):
        """Run the parser.node.main with run-cmd subparser function."""
        run_cmd.return_value = {'result': 'test'}
        list_nodes.return_value = self._nodes

        args = ['run-cmd', 'uname -a', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        list_nodes.assert_called_with(self.api, 123, [self._nodes], None)
        run_cmd.assert_called_with({'user': '******', 'exp_id': 123},
                                   self._root_nodes,
                                   'uname -a', False, verbose=False)

        args = ['run-cmd', 'uname -a', '--frontend', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        list_nodes.assert_called_with(self.api, 123, [self._nodes], None)
        run_cmd.assert_called_with({'user': '******', 'exp_id': 123},
                                   self._root_nodes,
                                   'uname -a', True, verbose=False)

        exp_info_res = {"items": [{"network_address": node}
                                  for node in self._nodes]}
        with patch.object(self.api, 'get_experiment_info',
                          Mock(return_value=exp_info_res)):
            list_nodes.return_value = []
            args = ['run-cmd', 'uname -a']
            open_a8_parser.main(args)
            list_nodes.assert_called_with(self.api, 123, None, None)
            run_cmd.assert_called_with({'user': '******', 'exp_id': 123},
                                       self._root_nodes,
                                       'uname -a', False, verbose=False)
Beispiel #3
0
    def test_main_copy_file(self, list_nodes, copy_file):
        """Run the parser.node.main with copy-file subparser function."""
        copy_file.return_value = {'result': 'test'}
        list_nodes.return_value = self._nodes

        args = ['copy-file', 'script.sh', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        list_nodes.assert_called_with(self.api, 123, [self._nodes], None)
        copy_file.assert_called_with({'user': '******', 'exp_id': 123},
                                     self._root_nodes,
                                     'script.sh', verbose=False)

        exp_info_res = {"items": [{"network_address": node}
                                  for node in self._nodes]}
        with patch.object(self.api, 'get_experiment_info',
                          Mock(return_value=exp_info_res)):
            list_nodes.return_value = []
            args = ['copy-file', 'script.sh']
            open_a8_parser.main(args)
            list_nodes.assert_called_with(self.api, 123, None, None)
            copy_file.assert_called_with({'user': '******', 'exp_id': 123},
                                         self._root_nodes,
                                         'script.sh', verbose=False)
Beispiel #4
0
    def test_main_flash_m3(self, list_nodes, flash_m3):
        """Run the parser.node.main with update-m3 subparser function."""

        flash_m3.return_value = {'result': 'test'}
        list_nodes.return_value = self._nodes

        args = ['flash-m3', 'firmware.elf', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        list_nodes.assert_called_with(self.api, 123, [self._nodes], None)
        flash_m3.assert_called_with({'user': '******', 'exp_id': 123},
                                    self._root_nodes, 'firmware.elf',
                                    verbose=False)

        exp_info_res = {"items": [{"network_address": node}
                                  for node in self._nodes]}
        with patch.object(self.api, 'get_experiment_info',
                          Mock(return_value=exp_info_res)):
            list_nodes.return_value = []
            args = ['flash-m3', 'firmware.elf']
            open_a8_parser.main(args)
            list_nodes.assert_called_with(self.api, 123, None, None)
            flash_m3.assert_called_with({'user': '******', 'exp_id': 123},
                                        self._root_nodes,
                                        'firmware.elf', verbose=False)
Beispiel #5
0
    def test_reset_m3_jmespath(self, print_result, list_nodes, reset_m3):
        """Run reset-m3 subparser function with jmespath options."""
        reset_m3.return_value = {'result': 'test'}
        list_nodes.return_value = self._nodes

        args = ['--jmespath=\'test\'', '--fmt=\'int\'', 'reset-m3',
                '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)

        print_result.assert_called_once()
        args, _ = print_result.call_args
        self.assertEqual(len(args), 3)
        self.assertEqual(args[0], {'result': 'test'})
        self.assertTrue(isinstance(args[1], jmespath.parser.ParsedResult))
        self.assertEqual(args[2], 'int')

        args = ['reset-m3', '-l', 'saclay,a8,1-5']
        open_a8_parser.main(args)
        print_result.assert_called_once()
        args, _ = print_result.call_args
        self.assertEqual(len(args), 3)
        self.assertEqual(args[0], {'result': 'test'})
        self.assertEqual(args[1], None)
        self.assertEqual(args[2], None)