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))
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))
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
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