示例#1
0
    def setUp(self):
        from ots.worker.conductor.executor import TestRunData
        from ots.worker.conductor.executor import Executor
        from ots.worker.conductor.conductor import ExecutorSignalHandler
        from StringIO import StringIO

        testrun = TestRunData(Options(), config=_conductor_config_simple())
        self.workdir = tempfile.mkdtemp("_test_conductor")
        testrun.base_dir = self.workdir
        responseclient = Stub_ResponseClient("", "", 0)
        self.executor = Executor(testrun=testrun,
                                 stand_alone=True,
                                 responseclient=responseclient,
                                 hostname="hostname")
        self.executor.set_target()

        self.executor_signal_handler = ExecutorSignalHandler(self.executor)
        self.process_listed_info_commands_called = False

        self.logger = logging.getLogger('conductor')
        self.log_stream = StringIO()

        self.logger.setLevel(logging.WARNING)
        self.logger.addHandler(logging.StreamHandler(self.log_stream))

        self.flash_logger = logging.getLogger('default_flasher')
        self.flash_log_stream = StringIO()
        self.flash_logger.setLevel(logging.DEBUG)
        self.flash_logger.addHandler(
            logging.StreamHandler(self.flash_log_stream))
示例#2
0
    def setUp(self):
        from ots.worker.conductor.executor import TestRunData
        from ots.worker.conductor.executor import Executor
        from ots.worker.conductor.conductor import ExecutorSignalHandler
        from StringIO import StringIO

        testrun = TestRunData(Options(), config=_conductor_config_simple())
        self.workdir = tempfile.mkdtemp("_test_conductor")
        testrun.base_dir = self.workdir
        responseclient = Stub_ResponseClient("", "", 0)
        self.executor = Executor(testrun=testrun, stand_alone=True, responseclient=responseclient, hostname="hostname")
        self.executor.set_target()

        self.executor_signal_handler = ExecutorSignalHandler(self.executor)
        self.process_listed_info_commands_called = False

        self.logger = logging.getLogger("conductor")
        self.log_stream = StringIO()

        self.logger.setLevel(logging.WARNING)
        self.logger.addHandler(logging.StreamHandler(self.log_stream))

        self.flash_logger = logging.getLogger("default_flasher")
        self.flash_log_stream = StringIO()
        self.flash_logger.setLevel(logging.DEBUG)
        self.flash_logger.addHandler(logging.StreamHandler(self.flash_log_stream))
示例#3
0
class TestExecutorSignalHandler(unittest.TestCase):
    """Tests for ExecutorSignalHandler"""

    def setUp(self):
        from ots.worker.conductor.executor import TestRunData
        from ots.worker.conductor.executor import Executor
        from ots.worker.conductor.conductor import ExecutorSignalHandler
        from StringIO import StringIO

        testrun = TestRunData(Options(), config=_conductor_config_simple())
        self.workdir = tempfile.mkdtemp("_test_conductor")
        testrun.base_dir = self.workdir
        responseclient = Stub_ResponseClient("", "", 0)
        self.executor = Executor(testrun=testrun, stand_alone=True, responseclient=responseclient, hostname="hostname")
        self.executor.set_target()

        self.executor_signal_handler = ExecutorSignalHandler(self.executor)
        self.process_listed_info_commands_called = False

        self.logger = logging.getLogger("conductor")
        self.log_stream = StringIO()

        self.logger.setLevel(logging.WARNING)
        self.logger.addHandler(logging.StreamHandler(self.log_stream))

        self.flash_logger = logging.getLogger("default_flasher")
        self.flash_log_stream = StringIO()
        self.flash_logger.setLevel(logging.DEBUG)
        self.flash_logger.addHandler(logging.StreamHandler(self.flash_log_stream))

    #
    # Tests
    #

    def test_skips_reboot_if_no_testrunner_lite_running(self):
        self._send_sigusr1()
        self.assertTrue(self.log_stream.getvalue().find("SIGUSR1 caught but no testrunner-lite running") >= 0)

    def test_reboots_device(self):
        self._prepare_executor_mocks()
        self._send_sigusr1()
        self.assertTrue(self.executor.testrun.flasher_module.device_rebooted)
        self.assertEquals(self.executor.trlite_command.signal_sent, signal.SIGUSR1)

    def test_sends_sigterm_on_connection_test_failed(self):
        self._prepare_executor_mocks()
        self.executor.testrun.flasher_module = Mock_Flasher(FlashFailed("Testing"))
        self.executor.target._flasher = self.executor.testrun.flasher_module
        self._send_sigusr1()
        self.assertTrue(self.executor.testrun.flasher_module.device_rebooted)
        self.assertEquals(self.executor.trlite_command.signal_sent, signal.SIGTERM)

    def test_save_environment_details_after_reboot(self):
        self._prepare_executor_mocks()
        self._send_sigusr1()
        self.assertTrue(self.save_environment_details)
        pass

    #
    # Private methods
    #

    def _send_sigusr1(self):
        self.executor_signal_handler.reboot_device(sig_num=signal.SIGUSR1, frame=None)

    def _prepare_executor_mocks(self):
        self.executor.trlite_command = Mock_Command("#echo Mocked Command")
        self.executor.testrun.flasher_module = Mock_Flasher()
        self.executor.target._flasher = self.executor.testrun.flasher_module
        self.executor.save_environment_details = self._save_env_details_mock

    def _save_env_details_mock(self):
        self.save_environment_details = True
示例#4
0
class TestExecutorSignalHandler(unittest.TestCase):
    """Tests for ExecutorSignalHandler"""
    def setUp(self):
        from ots.worker.conductor.executor import TestRunData
        from ots.worker.conductor.executor import Executor
        from ots.worker.conductor.conductor import ExecutorSignalHandler
        from StringIO import StringIO

        testrun = TestRunData(Options(), config=_conductor_config_simple())
        self.workdir = tempfile.mkdtemp("_test_conductor")
        testrun.base_dir = self.workdir
        responseclient = Stub_ResponseClient("", "", 0)
        self.executor = Executor(testrun=testrun,
                                 stand_alone=True,
                                 responseclient=responseclient,
                                 hostname="hostname")
        self.executor.set_target()

        self.executor_signal_handler = ExecutorSignalHandler(self.executor)
        self.process_listed_info_commands_called = False

        self.logger = logging.getLogger('conductor')
        self.log_stream = StringIO()

        self.logger.setLevel(logging.WARNING)
        self.logger.addHandler(logging.StreamHandler(self.log_stream))

        self.flash_logger = logging.getLogger('default_flasher')
        self.flash_log_stream = StringIO()
        self.flash_logger.setLevel(logging.DEBUG)
        self.flash_logger.addHandler(
            logging.StreamHandler(self.flash_log_stream))

    #
    # Tests
    #

    def test_skips_reboot_if_no_testrunner_lite_running(self):
        self._send_sigusr1()
        self.assertTrue(self.log_stream.getvalue().find( \
                "SIGUSR1 caught but no testrunner-lite running") >= 0)

    def test_reboots_device(self):
        self._prepare_executor_mocks()
        self._send_sigusr1()
        self.assertTrue(self.executor.testrun.flasher_module.device_rebooted)
        self.assertEquals(self.executor.trlite_command.signal_sent,
                          signal.SIGUSR1)

    def test_sends_sigterm_on_connection_test_failed(self):
        self._prepare_executor_mocks()
        self.executor.testrun.flasher_module = \
                            Mock_Flasher(FlashFailed("Testing"))
        self.executor.target._flasher = self.executor.testrun.flasher_module
        self._send_sigusr1()
        self.assertTrue(self.executor.testrun.flasher_module.device_rebooted)
        self.assertEquals(self.executor.trlite_command.signal_sent,
                          signal.SIGTERM)

    def test_save_environment_details_after_reboot(self):
        self._prepare_executor_mocks()
        self._send_sigusr1()
        self.assertTrue(self.save_environment_details)
        pass

    #
    # Private methods
    #

    def _send_sigusr1(self):
        self.executor_signal_handler.reboot_device(sig_num=signal.SIGUSR1,
                                                   frame=None)

    def _prepare_executor_mocks(self):
        self.executor.trlite_command = Mock_Command("#echo Mocked Command")
        self.executor.testrun.flasher_module = Mock_Flasher()
        self.executor.target._flasher = self.executor.testrun.flasher_module
        self.executor.save_environment_details = self._save_env_details_mock

    def _save_env_details_mock(self):
        self.save_environment_details = True