Esempio n. 1
0
 def setup_watcher(self):
     self.watcher = StateChangeWatcher()
     self.state_manager = mock.create_autospec(PersistentStateManager)
     self.watcher.state_manager = self.state_manager
Esempio n. 2
0
 def setup_watcher(self):
     self.watcher = StateChangeWatcher()
     self.state_manager = mock.create_autospec(PersistentStateManager)
     self.watcher.state_manager = self.state_manager
Esempio n. 3
0
class StateChangeWatcherTestCase(TestCase):
    @setup
    def setup_watcher(self):
        self.watcher = StateChangeWatcher()
        self.state_manager = mock.create_autospec(PersistentStateManager)
        self.watcher.state_manager = self.state_manager

    def test_update_from_config_no_change(self):
        self.watcher.config = state_config = mock.Mock()
        assert not self.watcher.update_from_config(state_config)
        autospec_method(self.watcher.shutdown)
        assert_equal(self.watcher.state_manager, self.state_manager)
        assert not self.watcher.shutdown.mock_calls

    @mock.patch(
        'tron.serialize.runstate.statemanager.PersistenceManagerFactory',
        autospec=True,
    )
    def test_update_from_config_changed(self, mock_factory):
        state_config = mock.Mock()
        autospec_method(self.watcher.shutdown)
        assert self.watcher.update_from_config(state_config)
        assert_equal(self.watcher.config, state_config)
        self.watcher.shutdown.assert_called_with()
        assert_equal(
            self.watcher.state_manager,
            mock_factory.from_config.return_value,
        )
        mock_factory.from_config.assert_called_with(state_config)

    def test_save_job(self):
        mock_job = mock.Mock()
        self.watcher.save_job(mock_job)
        self.watcher.state_manager.save.assert_called_with(
            runstate.JOB_STATE,
            mock_job.name,
            mock_job.state_data,
        )

    def test_save_service(self):
        mock_service = mock.Mock()
        self.watcher.save_service(mock_service)
        self.watcher.state_manager.save.assert_called_with(
            runstate.SERVICE_STATE,
            mock_service.name,
            mock_service.state_data,
        )

    def test_save_metadata(self):
        patcher = mock.patch(
            'tron.serialize.runstate.statemanager.StateMetadata', )
        with patcher as mock_state_metadata:
            self.watcher.save_metadata()
            meta_data = mock_state_metadata.return_value
            self.watcher.state_manager.save.assert_called_with(
                runstate.MCP_STATE,
                meta_data.name,
                meta_data.state_data,
            )

    def test_shutdown(self):
        self.watcher.shutdown()
        assert not self.watcher.state_manager.enabled
        self.watcher.state_manager.cleanup.assert_called_with()

    def test_disabled(self):
        context = self.watcher.disabled()
        assert_equal(self.watcher.state_manager.disabled.return_value, context)

    def test_restore(self):
        jobs, services = mock.Mock(), mock.Mock()
        self.watcher.restore(jobs, services)
        self.watcher.state_manager.restore.assert_called_with(jobs, services)
Esempio n. 4
0
class TestStateChangeWatcher(TestCase):
    @setup
    def setup_watcher(self):
        self.watcher = StateChangeWatcher()
        self.state_manager = mock.create_autospec(PersistentStateManager)
        self.watcher.state_manager = self.state_manager

    def test_update_from_config_no_change(self):
        self.watcher.config = state_config = mock.Mock()
        assert not self.watcher.update_from_config(state_config)
        autospec_method(self.watcher.shutdown)
        assert_equal(self.watcher.state_manager, self.state_manager)
        assert not self.watcher.shutdown.mock_calls

    @mock.patch(
        'tron.serialize.runstate.statemanager.PersistenceManagerFactory',
        autospec=True,
    )
    def test_update_from_config_changed(self, mock_factory):
        state_config = mock.Mock()
        autospec_method(self.watcher.shutdown)
        assert self.watcher.update_from_config(state_config)
        assert_equal(self.watcher.config, state_config)
        self.watcher.shutdown.assert_called_with()
        assert_equal(
            self.watcher.state_manager,
            mock_factory.from_config.return_value,
        )
        mock_factory.from_config.assert_called_with(state_config)

    def test_save_job(self):
        mock_job = mock.Mock()
        self.watcher.save_job(mock_job)
        self.watcher.state_manager.save.assert_called_with(
            runstate.JOB_STATE,
            mock_job.name,
            mock_job.state_data,
        )

    @mock.patch(
        'tron.serialize.runstate.statemanager.StateMetadata', autospec=None
    )
    def test_save_metadata(self, mock_state_metadata):
        self.watcher.save_metadata()
        meta_data = mock_state_metadata.return_value
        self.watcher.state_manager.save.assert_called_with(
            runstate.MCP_STATE,
            meta_data.name,
            meta_data.state_data,
        )

    def test_shutdown(self):
        self.watcher.shutdown()
        assert not self.watcher.state_manager.enabled
        self.watcher.state_manager.cleanup.assert_called_with()

    def test_disabled(self):
        context = self.watcher.disabled()
        assert_equal(self.watcher.state_manager.disabled.return_value, context)

    def test_restore(self):
        jobs = mock.Mock()
        self.watcher.restore(jobs)
        self.watcher.state_manager.restore.assert_called_with(jobs)