Exemple #1
0
def test_commandnode_run__exception_on_error():
    cmd_mock = _build_cmd_mock(return_codes=(1, ))
    node = CommandNode(cmd_mock)
    with pytest.raises(CmdNodeError):
        node._run(None, "xTMPx")

    assert cmd_mock.mock_calls == [call.run("xTMPx"), call.join()]
    def test_install(self, remote_cls, installation_cls, transaction_cls):
        """Test flatpak installation is working."""
        progress = Mock()
        flatpak = FlatpakManager(sysroot="remote/path", callback=progress)

        self._setup_flatpak_objects(remote_cls, installation_cls,
                                    transaction_cls)
        flatpak.initialize_with_system_path()

        self._installation.list_remote_refs_sync.return_value = [
            RefMock("app/org.space.coolapp/x86_64/stable"),
            RefMock("app/com.prop.notcoolapp/i386/f36"),
            RefMock("runtime/org.space.coolruntime/x86_64/stable"),
            RefMock("runtime/com.prop.notcoolruntime/i386/f36"),
        ]

        flatpak.install_all()
        assert self._transaction.mock_calls == [
            call.connect("new_operation", flatpak._operation_started_callback),
            call.connect("operation_done",
                         flatpak._operation_stopped_callback),
            call.connect("operation_error", flatpak._operation_error_callback),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             "app/org.space.coolapp/x86_64/stable", None),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             "app/com.prop.notcoolapp/i386/f36", None),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             "runtime/org.space.coolruntime/x86_64/stable",
                             None),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             "runtime/com.prop.notcoolruntime/i386/f36", None),
            call.run()
        ]

        assert progress.mock_calls == []
Exemple #3
0
 def test_upload_called_before_run(self):
     self.mock_data['uploads'] = MagicMock()
     self.instantiate()
     calls = [
         call.upload(ANY, ANY, ANY),
         call.run(self.plugin_id, self.run_id, ANY)
     ]
     self.mock_host.assert_has_calls(calls)
Exemple #4
0
    def test_run_jobs_timeout(self):
        def se_run():
            self.cls._timeout = datetime(2017, 10, 20, 12, 20, 00)
            return None

        j1 = Mock(name='job1')
        j1.run.return_value = True
        type(j1).skip = PropertyMock(return_value=None)
        j2 = Mock(name='job2')
        j2.run.side_effect = se_run
        type(j2).skip = PropertyMock(return_value=None)
        j3 = Mock(name='job3')
        j3.run.return_value = False
        type(j3).skip = PropertyMock(return_value=None)
        j4 = Mock(name='job4')
        type(j4).error_repr = PropertyMock(return_value='j4erepr')
        exc = RuntimeError('foo')
        j4.run.side_effect = exc
        type(j4).skip = PropertyMock(return_value=None)
        self.config.get_global.return_value = 3600
        self.cls._finished = ['a']
        self.cls._running = ['b']
        self.cls._run_exceptions['foo'] = 6
        with patch('%s._poll_jobs' % pb, autospec=True) as mock_poll:
            with patch('%s._report' % pb, autospec=True) as mock_report:
                with patch('%s.logger' % pbm) as mock_logger:
                    with patch('%s.format_exc' % pbm) as m_fmt_exc:
                        m_fmt_exc.return_value = 'm_traceback'
                        self.cls._run_jobs([j1, j2, j3, j4])
        assert self.cls._finished == [j1]
        assert self.cls._running == [j2, j3, j4]
        assert self.cls._run_exceptions == {}
        assert mock_poll.mock_calls == [call(self.cls)]
        assert mock_report.mock_calls == [call(self.cls)]
        assert self.config.jobs_for_schedules.mock_calls == []
        assert j1.mock_calls == [call.run()]
        assert j2.mock_calls == [call.run()]
        assert j3.mock_calls == []
        assert j4.mock_calls == []
        assert call.error('Time limit reached; not running any more jobs!'
                          ) in mock_logger.mock_calls
        assert m_fmt_exc.mock_calls == []
Exemple #5
0
def test_mux_with_failure(mux_tr, my_tr, my_ftr):
    mux_tr += my_ftr
    mux_tr += my_tr
    # notice that the mux_tr raises a TransportError wrapping the subtransport's
    # exceptions (in this case, a single MyTransportError).
    with pytest.raises(TransportError) as excinfo:
        mux_tr.start()
    # my_tr starts normally, then is stopped when the other one fails.
    assert my_tr.mock_calls == [call.open(), call.run(), call.close()]
    assert my_ftr.mock_calls == [call.open()]
    assert len(excinfo.value.exceptions) == 1
    assert isinstance(excinfo.value.exceptions[0], MyTransportError)
Exemple #6
0
 def test_run_jobs(self):
     j1 = Mock(name='job1')
     j1.run.return_value = True
     type(j1).skip = PropertyMock(return_value=None)
     j2 = Mock(name='job2')
     j2.run.return_value = None
     type(j2).skip = PropertyMock(return_value=None)
     j3 = Mock(name='job3')
     j3.run.return_value = False
     type(j3).skip = PropertyMock(return_value=None)
     j4 = Mock(name='job4')
     type(j4).error_repr = PropertyMock(return_value='j4erepr')
     exc = RuntimeError('foo')
     j4.run.side_effect = exc
     type(j4).skip = PropertyMock(return_value=None)
     j5 = Mock(name='job5')
     type(j5).skip = PropertyMock(return_value='some reason')
     self.config.get_global.return_value = 3600
     self.cls._finished = ['a']
     self.cls._running = ['b']
     self.cls._run_exceptions['foo'] = 6
     with patch('%s._poll_jobs' % pb, autospec=True) as mock_poll:
         with patch('%s._report' % pb, autospec=True) as mock_report:
             with patch('%s.format_exc' % pbm) as m_fmt_exc:
                 m_fmt_exc.return_value = 'm_traceback'
                 self.cls._run_jobs([j1, j2, j3, j4, j5])
     assert self.cls._finished == [j1, j3, j4, j5]
     assert self.cls._running == [j2]
     assert self.cls._run_exceptions == {j4: (exc, 'm_traceback')}
     assert mock_poll.mock_calls == [call(self.cls)]
     assert mock_report.mock_calls == [call(self.cls)]
     assert self.config.jobs_for_schedules.mock_calls == []
     assert j1.mock_calls == [call.run()]
     assert j2.mock_calls == [call.run()]
     assert j3.mock_calls == [call.run()]
     assert j4.mock_calls == [call.run()]
     assert j5.mock_calls == []
     assert m_fmt_exc.mock_calls == [call()]
Exemple #7
0
    def test_install(self, remote_cls, installation_cls, transaction_cls):
        """Test flatpak installation is working."""
        flatpak = FlatpakManager("remote/path")

        self._setup_flatpak_objects(remote_cls, installation_cls,
                                    transaction_cls)

        flatpak.initialize_with_system_path()

        mock_ref_list = [
            RefMock(name="org.space.coolapp",
                    kind=RefKind.APP,
                    arch="x86_64",
                    branch="stable"),
            RefMock(name="com.prop.notcoolapp",
                    kind=RefKind.APP,
                    arch="i386",
                    branch="f36"),
            RefMock(name="org.space.coolruntime",
                    kind=RefKind.RUNTIME,
                    arch="x86_64",
                    branch="stable"),
            RefMock(name="com.prop.notcoolruntime",
                    kind=RefKind.RUNTIME,
                    arch="i386",
                    branch="f36")
        ]

        self._installation.list_remote_refs_sync.return_value = mock_ref_list

        flatpak.install_all()

        expected_calls = [
            call.connect("new_operation", flatpak._operation_started_callback),
            call.connect("operation_done",
                         flatpak._operation_stopped_callback),
            call.connect("operation_error", flatpak._operation_error_callback),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             mock_ref_list[0].format_ref(), None),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             mock_ref_list[1].format_ref(), None),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             mock_ref_list[2].format_ref(), None),
            call.add_install(FlatpakManager.LOCAL_REMOTE_NAME,
                             mock_ref_list[3].format_ref(), None),
            call.run()
        ]

        assert self._transaction.mock_calls == expected_calls
Exemple #8
0
 def test_start_call_sequence(self, pdaemonize, prun):
     pidfile_mock = MagicMock()
     logger = MagicMock()
     logger.warning = MagicMock()
     self.simple_instance.pidfile = pidfile_mock
     self.simple_instance.logger = logger
     manager = MagicMock()
     manager.attach_mock(pdaemonize, "daemonize")
     manager.attach_mock(logger.warning, "warning")
     manager.attach_mock(prun, "run")
     self.simple_instance.start()
     msg = self.simple_instance._starting_message
     expected_calls = [
         call.daemonize(pidfile_mock),
         call.warning(msg),
         call.run()
     ]
     manager.assert_has_calls(expected_calls)
Exemple #9
0
 def test_run_call_sequence(self, _create_server, _run_server, submit_task,
                            run):
     manager = MagicMock()
     server = MagicMock()
     _create_server.return_value = server
     manager.attach_mock(_create_server, "_create_server")
     manager.attach_mock(_run_server, "_run_server")
     manager.attach_mock(submit_task, "submit_task")
     manager.attach_mock(run, "run")
     expected_calls = [
         call._create_server(),
         call._run_server(server),
         call.submit_task(self.simple_instance.heartbeats_sink),
         #call.submit_task(self.simple_instance._send_to_graphite),
         call.run(),
     ]
     self.simple_instance.run()
     manager.assert_has_calls(expected_calls)
Exemple #10
0
def test_command_node__run():
    cfg_mock = Mock(temp_root=_DUMMY_TEMP_ROOT)
    mock = _build_cmd_mock()

    node_mock = CommandNode(mock)
    node_mock._create_temp_dir = mock._test_node_._create_temp_dir
    node_mock._create_temp_dir.return_value = _DUMMY_TEMP
    node_mock._setup = mock._test_node_._setup
    node_mock._teardown = mock._test_node_._teardown
    node_mock._remove_temp_dir = mock._test_node_._remove_temp_dir

    node_mock.run(cfg_mock)

    assert mock.mock_calls == [
        call._test_node_._create_temp_dir(cfg_mock),
        call._test_node_._setup(cfg_mock, _DUMMY_TEMP),
        call.run(_DUMMY_TEMP),
        call.join(),
        call._test_node_._teardown(cfg_mock, _DUMMY_TEMP),
        call._test_node_._remove_temp_dir(_DUMMY_TEMP),
    ]
Exemple #11
0
def test_mux_add_after_start(mux_tr, my_tr):
    mux_tr.start()
    mux_tr += my_tr
    mux_tr -= my_tr
    mux_tr.stop()
    assert my_tr.mock_calls == [call.open(), call.run(), call.close()]
Exemple #12
0
def test_succeeding_start(my_tr):
    my_tr.start()
    my_tr.stop()
    assert my_tr.mock_calls == [call.open(), call.run(), call.close()]
Exemple #13
0
def test_commandnode_run__call_order():
    cmd_mock = _build_cmd_mock()
    node = CommandNode(cmd_mock)
    node._run(None, "xTMPx")

    assert cmd_mock.mock_calls == [call.run("xTMPx"), call.join()]