コード例 #1
0
 def test_get_jobs_stats(self, zclient):
     ifaces.init(zclient)
     control_iface = ifaces.JobsControl(zclient)
     assert control_iface.get_jobs_stats()["awaiting"] == 0
     for count in range(5):
         control_iface.add_job(self._make_job_state())
         assert control_iface.get_jobs_stats()["awaiting"] == count + 1
コード例 #2
0
 def test_get_jobs_stats(self, zclient):
     ifaces.init(zclient)
     control_iface = ifaces.JobsControl(zclient)
     assert control_iface.get_jobs_stats()["awaiting"] == 0
     for count in range(5):
         control_iface.add_job(self._make_job_state())
         assert control_iface.get_jobs_stats()["awaiting"] == count + 1
コード例 #3
0
    def test_delete_wait(self, zclient):
        ifaces.init(zclient)
        control_iface = ifaces.JobsControl(zclient)
        process_iface = ifaces.JobsProcess(zclient)
        gc_iface = ifaces.JobsGc(zclient)

        job = self._make_job_state()
        control_iface.add_job(job)
        assert len(control_iface.get_job_info(job.job_id)) > 0
        assert not process_iface.is_deleted_job(job.job_id)

        assert process_iface.has_awaiting_jobs()
        ready_job = process_iface.get_job()
        assert job.job_id == ready_job.job_id

        def remove_job():
            time.sleep(3)
            gc_iface.remove_job_data(job.job_id)

        remover = threading.Thread(target=remove_job)
        remover.daemon = True
        remover.start()

        before = time.time()
        with pytest.raises(backends.DeleteTimeoutError):
            control_iface.delete_job(job.job_id, timeout=1)
        control_iface.delete_job(job.job_id, timeout=30)
        assert time.time() - before >= 3
        assert control_iface.get_job_info(job.job_id) is None
コード例 #4
0
    def test_replace_versioned(self, zclient):
        ifaces.init(zclient)
        cas_storage = ifaces.CasStorage(zclient)

        (old, write_ok) = cas_storage.replace_value("/foo/bar", value=1, version=0, default=0)
        assert old.value == 0
        assert old.version is None
        assert write_ok is True

        (old, write_ok) = cas_storage.replace_value("/foo/bar", value=2, version=1, default=0)
        assert old.value == 1
        assert old.version == 0
        assert write_ok is True

        with pytest.raises(backends.CasVersionError):
            cas_storage.replace_value("/foo/bar", value=3, version=0, default=0)

        (old, write_ok) = cas_storage.replace_value("/foo/bar", value=3, version=0, default=0, fatal_write=False)
        assert old.value == 2
        assert old.version == 1
        assert write_ok is False

        (old, write_ok) = cas_storage.replace_value("/foo/bar", value=3, version=2, default=0)
        assert old.value == 2
        assert old.version == 1
        assert write_ok is True
コード例 #5
0
 def test_head_cycle(self, zclient):
     ifaces.init(zclient)
     rules_iface = ifaces.Rules(zclient)
     assert rules_iface.get_head() is None
     for count in range(5):
         rules_iface.set_head("foobar{}".format(count))
         assert rules_iface.get_head() == "foobar{}".format(count)
コード例 #6
0
 def test_get_input_size(self, zclient):
     ifaces.init(zclient)
     control_iface = ifaces.JobsControl(zclient)
     assert control_iface.get_input_size() == 0
     for count in range(5):
         control_iface.add_jobs(self.func_head, [self.fresh_job])
         assert control_iface.get_input_size() == count + 1
コード例 #7
0
    def test_delete_wait(self, zclient):
        ifaces.init(zclient)
        control_iface = ifaces.JobsControl(zclient)
        process_iface = ifaces.JobsProcess(zclient)
        gc_iface = ifaces.JobsGc(zclient)

        job_id = control_iface.add_jobs(self.func_head, [self.fresh_job])[0]
        assert len(control_iface.get_job_info(job_id)) > 0
        assert not process_iface.is_deleted_job(job_id)

        ready_job = next(process_iface.get_ready_jobs())
        assert job_id == ready_job.job_id
        process_iface.associate_job(job_id)

        def remove_job():
            time.sleep(3)
            gc_iface.remove_job_data(job_id)

        remover = threading.Thread(target=remove_job)
        remover.daemon = True
        remover.start()

        before = time.time()
        with pytest.raises(backends.DeleteTimeoutError):
            control_iface.delete_job(job_id, timeout=1)
        control_iface.delete_job(job_id)
        assert time.time() - before >= 3
        assert control_iface.get_job_info(job_id) is None
コード例 #8
0
 def test_head_cycle(self, zclient):
     ifaces.init(zclient)
     scripts_iface = ifaces.Scripts(zclient)
     assert scripts_iface.get_head() is None
     for count in range(5):
         scripts_iface.set_head("foobar{}".format(count))
         assert scripts_iface.get_head() == "foobar{}".format(count)
コード例 #9
0
 def test_head_cycle(self, zclient):
     ifaces.init(zclient)
     scripts_iface = ifaces.Scripts(zclient)
     assert scripts_iface.get_head() is None
     for count in range(5):
         scripts_iface.set_head("foobar{}".format(count))
         assert scripts_iface.get_head() == "foobar{}".format(count)
コード例 #10
0
    def test_delete_wait(self, zclient):
        ifaces.init(zclient)
        control_iface = ifaces.JobsControl(zclient)
        process_iface = ifaces.JobsProcess(zclient)
        gc_iface = ifaces.JobsGc(zclient)

        job = self._make_job_state()
        control_iface.add_job(job)
        assert len(control_iface.get_job_info(job.job_id)) > 0
        assert not process_iface.is_deleted_job(job.job_id)

        assert process_iface.has_awaiting_jobs()
        ready_job = process_iface.get_job()
        assert job.job_id == ready_job.job_id

        def remove_job():
            time.sleep(3)
            gc_iface.remove_job_data(job.job_id)

        remover = threading.Thread(target=remove_job)
        remover.daemon = True
        remover.start()

        before = time.time()
        with pytest.raises(backends.DeleteTimeoutError):
            control_iface.delete_job(job.job_id, timeout=1)
        control_iface.delete_job(job.job_id, timeout=30)
        assert time.time() - before >= 3
        assert control_iface.get_job_info(job.job_id) is None
コード例 #11
0
    def _test_process(self, client, ok, with_save):
        ifaces.init(client)
        control_iface = ifaces.JobsControl(client)
        process_iface = ifaces.JobsProcess(client)
        gc_iface = ifaces.JobsGc(client)

        job = self._make_job_state()
        control_iface.add_job(job)
        assert isinstance(job.job_id, str)
        assert len(job.job_id) > 0
        assert control_iface.get_jobs_list() == [job.job_id]

        job_info = control_iface.get_job_info(job.job_id)
        self._assert_job_info_new(job_info)

        count = 0
        while process_iface.has_awaiting_jobs():
            ready_job = process_iface.get_job()
            assert ready_job.job_id == job.job_id
            assert ready_job.head == self.func_head
            assert ready_job.state == self.func_state

            job_info = control_iface.get_job_info(job.job_id)
            self._assert_job_info_taken(job_info)

            if with_save:
                process_iface.save_job_state(job.job_id, b"fictive state",
                                             ["fictive", "stack"])
                job_info = control_iface.get_job_info(job.job_id)
                self._assert_job_info_in_progress(job_info)

            if ok:
                process_iface.done_job(ready_job.job_id, retval=True, exc=None)
            else:
                process_iface.done_job(
                    ready_job.job_id,
                    retval=None,
                    exc="Traceback (most recent call last):\n")

            job_info = control_iface.get_job_info(job.job_id)
            self._assert_job_info_finished(job_info, ok)
            control_iface.delete_job(job.job_id)

            count += 1
        assert count == 1

        count = 0
        for (job_id, done) in gc_iface.get_jobs():
            assert done
            gc_iface.remove_job_data(job_id)
            count += 1
        assert count == 1

        assert control_iface.get_jobs_list() == []
コード例 #12
0
    def test_state_cycle(self, zclient):
        ifaces.init(zclient)
        apps_state_iface = ifaces.AppsState(zclient)

        assert apps_state_iface.get_full_state() == {}
        apps_state_iface.set_state("foo", 1)
        apps_state_iface.set_state("bar", 2)
        apps_state_iface.set_state("baz", 3)

        apps_state = apps_state_iface.get_full_state()
        node_name = tools.get_node_name()
        assert isinstance(apps_state["foo"][node_name], dict)
        assert isinstance(apps_state["bar"][node_name], dict)
        assert isinstance(apps_state["baz"][node_name], dict)
コード例 #13
0
    def _test_process(self, client, ok, with_save):
        ifaces.init(client)
        control_iface = ifaces.JobsControl(client)
        process_iface = ifaces.JobsProcess(client)
        gc_iface = ifaces.JobsGc(client)

        job_id = control_iface.add_jobs(self.func_head, [self.fresh_job])[0]
        assert isinstance(job_id, str)
        assert len(job_id) > 0
        assert control_iface.get_jobs_list() == [job_id]

        job_info = control_iface.get_job_info(job_id)
        self._assert_job_info_new(job_info)

        count = 0
        for ready_job in process_iface.get_ready_jobs():
            assert ready_job.job_id == job_id
            assert ready_job.head == self.func_head
            assert ready_job.state == self.func_state

            job_info = control_iface.get_job_info(job_id)
            self._assert_job_info_taken(job_info)

            process_iface.associate_job(job_id)

            if with_save:
                process_iface.save_job_state(job_id, b"fictive state", ["fictive", "stack"])
                job_info = control_iface.get_job_info(job_id)
                self._assert_job_info_in_progress(job_info)

            if ok:
                process_iface.done_job(ready_job.job_id, retval=True, exc=None)
            else:
                process_iface.done_job(ready_job.job_id, retval=None, exc="Traceback (most recent call last):\n")

            job_info = control_iface.get_job_info(job_id)
            self._assert_job_info_finished(job_info, ok)

            count += 1
        assert count == 1

        count = 0
        for (job_id, done) in gc_iface.get_jobs(0):
            assert done
            gc_iface.remove_job_data(job_id)
            control_iface.delete_job(job_id)
            count += 1
        assert count == 1

        assert control_iface.get_jobs_list() == []
コード例 #14
0
    def test_state_cycle(self, zclient):
        ifaces.init(zclient)
        apps_state_iface = ifaces.AppsState(zclient)

        assert apps_state_iface.get_full_state() == {}
        apps_state_iface.set_state("foo", 1)
        apps_state_iface.set_state("bar", 2)
        apps_state_iface.set_state("baz", 3)

        apps_state = apps_state_iface.get_full_state()
        node_name = tools.get_node_name()
        assert isinstance(apps_state["foo"][node_name], dict)
        assert isinstance(apps_state["bar"][node_name], dict)
        assert isinstance(apps_state["baz"][node_name], dict)
コード例 #15
0
    def test_remove_fresh_job(self, zclient):
        ifaces.init(zclient)
        control_iface = ifaces.JobsControl(zclient)
        process_iface = ifaces.JobsProcess(zclient)
        gc_iface = ifaces.JobsGc(zclient)

        job_id = control_iface.add_jobs(self.func_head, [self.fresh_job])[0]
        assert len(control_iface.get_job_info(job_id)) > 0
        assert not process_iface.is_deleted_job(job_id)

        ready_job = next(process_iface.get_ready_jobs())
        assert job_id == ready_job.job_id
        process_iface.associate_job(job_id)

        gc_iface.remove_job_data(job_id)
        assert control_iface.get_job_info(job_id) is None
コード例 #16
0
    def test_remove_fresh_job(self, zclient):
        ifaces.init(zclient)
        control_iface = ifaces.JobsControl(zclient)
        process_iface = ifaces.JobsProcess(zclient)
        gc_iface = ifaces.JobsGc(zclient)

        job = self._make_job_state()
        control_iface.add_job(job)
        assert len(control_iface.get_job_info(job.job_id)) > 0
        assert not process_iface.is_deleted_job(job.job_id)

        assert process_iface.has_awaiting_jobs()
        ready_job = process_iface.get_job()
        assert job.job_id == ready_job.job_id

        gc_iface.remove_job_data(job.job_id)
        assert control_iface.get_job_info(job.job_id) is None
コード例 #17
0
    def test_remove_fresh_job(self, zclient):
        ifaces.init(zclient)
        control_iface = ifaces.JobsControl(zclient)
        process_iface = ifaces.JobsProcess(zclient)
        gc_iface = ifaces.JobsGc(zclient)

        job = self._make_job_state()
        control_iface.add_job(job)
        assert len(control_iface.get_job_info(job.job_id)) > 0
        assert not process_iface.is_deleted_job(job.job_id)

        assert process_iface.has_awaiting_jobs()
        ready_job = process_iface.get_job()
        assert job.job_id == ready_job.job_id

        gc_iface.remove_job_data(job.job_id)
        assert control_iface.get_job_info(job.job_id) is None
コード例 #18
0
    def test_replace_versioned(self, zclient):
        ifaces.init(zclient)
        cas_storage = ifaces.CasStorage(zclient)

        (old, write_ok) = cas_storage.replace_value("/foo/bar",
                                                    value=1,
                                                    version=0,
                                                    default=0)
        assert old.value == 0
        assert old.version is None
        assert write_ok is True

        (old, write_ok) = cas_storage.replace_value("/foo/bar",
                                                    value=2,
                                                    version=1,
                                                    default=0)
        assert old.value == 1
        assert old.version == 0
        assert write_ok is True

        with pytest.raises(backends.CasVersionError):
            cas_storage.replace_value("/foo/bar",
                                      value=3,
                                      version=0,
                                      default=0)

        (old, write_ok) = cas_storage.replace_value("/foo/bar",
                                                    value=3,
                                                    version=0,
                                                    default=0,
                                                    fatal_write=False)
        assert old.value == 2
        assert old.version == 1
        assert write_ok is False

        (old, write_ok) = cas_storage.replace_value("/foo/bar",
                                                    value=3,
                                                    version=2,
                                                    default=0)
        assert old.value == 2
        assert old.version == 1
        assert write_ok is True
コード例 #19
0
    def test_replace(self, zclient):
        ifaces.init(zclient)
        cas_storage = ifaces.CasStorage(zclient)

        with pytest.raises(backends.CasNoValueError):
            cas_storage.replace_value("/foo/bar")
        (old, write_ok) = cas_storage.replace_value("/foo/bar", default="test")
        assert old.value == "test"
        assert old.version is None
        assert write_ok is None

        (old, write_ok) = cas_storage.replace_value("/foo/bar", value=1, default=0)
        assert old.value == 0
        assert old.version is None
        assert write_ok is True

        (old, write_ok) = cas_storage.replace_value("/foo/bar", value=2, default=0)
        assert old.value == 1
        assert old.version is None
        assert write_ok is True
コード例 #20
0
    def test_get_set(self, zclient):
        ifaces.init(zclient)
        cas_storage = ifaces.CasStorage(zclient)

        with pytest.raises(backends.CasNoValueError):
            cas_storage.get_value("/foo/bar")

        result = cas_storage.get_value("/foo/bar", default="test")
        assert result.value == "test"
        assert result.version is None

        assert cas_storage.set_value("/foo/bar", value=1, version=0) is True
        result = cas_storage.get_value("/foo/bar")
        assert result.value == 1
        assert result.version == 0

        assert cas_storage.set_value("/foo/bar", value=2, version=0) is False

        assert cas_storage.set_value("/foo/bar", value=2, version=1) is True
        result = cas_storage.get_value("/foo/bar")
        assert result.value == 2
        assert result.version == 1
コード例 #21
0
    def test_get_set(self, zclient):
        ifaces.init(zclient)
        cas_storage = ifaces.CasStorage(zclient)

        with pytest.raises(backends.CasNoValueError):
            cas_storage.get_value("/foo/bar")

        result = cas_storage.get_value("/foo/bar", default="test")
        assert result.value == "test"
        assert result.version is None

        assert cas_storage.set_value("/foo/bar", value=1, version=0) is True
        result = cas_storage.get_value("/foo/bar")
        assert result.value == 1
        assert result.version == 0

        assert cas_storage.set_value("/foo/bar", value=2, version=0) is False

        assert cas_storage.set_value("/foo/bar", value=2, version=1) is True
        result = cas_storage.get_value("/foo/bar")
        assert result.value == 2
        assert result.version == 1
コード例 #22
0
    def test_replace(self, zclient):
        ifaces.init(zclient)
        cas_storage = ifaces.CasStorage(zclient)

        with pytest.raises(backends.CasNoValueError):
            cas_storage.replace_value("/foo/bar")
        (old, write_ok) = cas_storage.replace_value("/foo/bar", default="test")
        assert old.value == "test"
        assert old.version is None
        assert write_ok is None

        (old, write_ok) = cas_storage.replace_value("/foo/bar",
                                                    value=1,
                                                    default=0)
        assert old.value == 0
        assert old.version is None
        assert write_ok is True

        (old, write_ok) = cas_storage.replace_value("/foo/bar",
                                                    value=2,
                                                    default=0)
        assert old.value == 1
        assert old.version is None
        assert write_ok is True
コード例 #23
0
 def test_init(self, zclient):
     ifaces.init(zclient)
     ifaces.init(zclient)
コード例 #24
0
 def test_init(self, zclient):
     ifaces.init(zclient)
     ifaces.init(zclient)