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