class TestGearman(GearmanTestCase): def setUp(self): self.start_server() self.last_exception = (None, None) self.worker = GearmanWorker(job_servers) self.worker.register_function("echo", echo) self.worker.register_function("fail", fail) self.worker.register_function("sleep", sleep, timeout=1) self.worker.register_class(ObjectWorker()) self.worker.register_class(ClassWorker()) class Hooks(object): @staticmethod def start(job): pass @staticmethod def complete(job, res): pass @staticmethod def fail(job, exc): self.last_exception = (job.func, exc) import thread self.worker_thread = thread.start_new_thread(self.worker.work, tuple(), dict(hooks=Hooks)) # TODO: Shouldn't use threads.. but we do for now (also, the thread is never terminated) self.client = GearmanClient(job_servers) def tearDown(self): del self.worker del self.client self.stop_server() def testComplete(self): self.failUnlessEqual(self.client.do_task(Task("echo", "bar")), 'bar') def testFail(self): self.failUnlessRaises(self.client.TaskFailed, lambda:self.client.do_task(Task("fail", "bar"))) # self.failUnlessEqual(self.last_exception[0], "fail") def testCompleteAfterFail(self): self.failUnlessRaises(self.client.TaskFailed, lambda:self.client.do_task(Task("fail", "bar"))) self.failUnlessEqual(self.client.do_task(Task("echo", "bar")), 'bar') def testTimeout(self): self.failUnlessEqual(self.client.do_task(Task("sleep", "0.1")), '0.1') self.failUnlessRaises(self.client.TaskFailed, lambda:self.client.do_task(Task("sleep", "1.5"))) def testCall(self): self.failUnlessEqual(self.client("echo", "bar"), 'bar') def testObjectWorker(self): self.failUnlessEqual(self.client("ObjectWorker.echo", "foo"), "foo") def testClassWorker(self): self.failUnlessEqual(self.client("ClassWorker.echo", "foo"), "foo")
def setUp(self): self.start_server() self.last_exception = (None, None) self.worker = GearmanWorker(job_servers) self.worker.register_function("echo", echo) self.worker.register_function("fail", fail) self.worker.register_function("sleep", sleep, timeout=1) self.worker.register_class(ObjectWorker()) self.worker.register_class(ClassWorker()) class Hooks(object): @staticmethod def start(job): pass @staticmethod def complete(job, res): pass @staticmethod def fail(job, exc): self.last_exception = (job.func, exc) import thread self.worker_thread = thread.start_new_thread(self.worker.work, tuple(), dict(hooks=Hooks)) # TODO: Shouldn't use threads.. but we do for now (also, the thread is never terminated) self.client = GearmanClient(job_servers)