Пример #1
0
    def test_basicWork(self):
        """
        Verify that an L{TestWork} item can be enqueued and executed.
        """

        # do FindMinValidRevisionWork
        yield TestWork.schedule(self.storeUnderTest(), 0, 1, 2, 3)

        work = yield TestWork.all(self.transactionUnderTest())
        self.assertEqual(len(work), 1)
        self.assertEqual(work[0].delay, 3)
        job = yield JobItem.querysimple(self.transactionUnderTest(), jobID=work[0].jobID)
        self.assertEqual(len(job), 1)
        self.assertEqual(job[0].priority, 1)
        self.assertEqual(job[0].weight, 2)
        yield self.commit()

        yield JobItem.waitEmpty(self.storeUnderTest().newTransaction, reactor, 60)
Пример #2
0
    def test_basicWork(self):
        """
        Verify that an L{TestWork} item can be enqueued and executed.
        """

        # do FindMinValidRevisionWork
        yield TestWork.schedule(self.storeUnderTest(), 0, 1, 2, 3)

        work = yield TestWork.all(self.transactionUnderTest())
        self.assertEqual(len(work), 1)
        self.assertEqual(work[0].delay, 3)
        job = yield JobItem.querysimple(self.transactionUnderTest(),
                                        jobID=work[0].jobID)
        self.assertEqual(len(job), 1)
        self.assertEqual(job[0].priority, 1)
        self.assertEqual(job[0].weight, 2)
        yield self.commit()

        yield JobItem.waitEmpty(self.storeUnderTest().newTransaction, reactor,
                                60)
Пример #3
0
    def data_test_work(self):
        """
        Return the number of TEST_WORK items in the job queue.

        @return: a string containing the JSON result.
        @rtype: L{str}
        """

        results = {}
        if self.factory.store:
            txn = self.factory.store.newTransaction()
            results["queued"] = yield TestWork.count(txn)
            results["assigned"] = yield JobItem.count(txn, where=(JobItem.assigned != None))
            results["completed"] = WorkerConnectionPool.completed.get(TestWork.workType(), 0)
            yield txn.commit()
        else:
            results["queued"] = 0
            results["assigned"] = 0
            results["completed"] = 0

        returnValue(results)
Пример #4
0
    def action_testwork(self, j):
        """
        Wait for all schedule queue items to complete.
        """

        try:
            when = j["when"]
        except KeyError:
            when = 0
        try:
            priority = j["priority"]
        except KeyError:
            priority = WORK_PRIORITY_HIGH
        try:
            weight = j["weight"]
        except KeyError:
            weight = WORK_WEIGHT_1
        try:
            delay = j["delay"]
        except KeyError:
            delay = 0
        try:
            jobs = j["jobs"]
        except KeyError:
            jobs = 1

        start_time = time.time()
        for _ in range(jobs):
            effective_when = max(when - (time.time() - start_time), 0)
            yield TestWork.schedule(
                self._store,
                effective_when,
                priority,
                weight,
                delay,
            )

        returnValue(self._ok("ok", "Test work scheduled"))
Пример #5
0
    def action_testwork(self, j):
        """
        Wait for all schedule queue items to complete.
        """

        try:
            when = j["when"]
        except KeyError:
            when = 0
        try:
            priority = j["priority"]
        except KeyError:
            priority = WORK_PRIORITY_HIGH
        try:
            weight = j["weight"]
        except KeyError:
            weight = WORK_WEIGHT_1
        try:
            delay = j["delay"]
        except KeyError:
            delay = 0
        try:
            jobs = j["jobs"]
        except KeyError:
            jobs = 1

        for _ in range(jobs):
            yield TestWork.schedule(
                self._store,
                when,
                priority,
                weight,
                delay,
            )

        returnValue(self._ok("ok", "Test work scheduled"))