def testRecursive(self): #non-recursive local = TaskLocal() local.piet = 20 def t(): try: local.piet self.fail('expected attr error') except AttributeError: pass Tasklet.join(Tasklet.new(t)()) #recursive local = TaskLocal(True) local.piet = 30 def t(): self.assertEquals(30, local.piet) Tasklet.join(Tasklet.new(t)())
def testInterval(self): count = [] def ival(): count.append(1) #test non immediate ival_task = Tasklet.interval(1.0, ival, False)() try: Tasklet.join(ival_task, 3.0) except TimeoutError: #expect 2 counts, because interval started after 1 second self.assertEquals(2, len(count)) except: self.fail('expected timeout, got %s' % sys.exc_type) finally: ival_task.kill() #test immediate count = [] ival_task = Tasklet.interval(1.0, ival, True)() try: Tasklet.join(ival_task, 3.0) except TimeoutError: #expect 3 counts, because interval started immediately self.assertEquals(3, len(count)) except: self.fail('expected timeout') finally: ival_task.kill()
def testJoinResult(self): """test normal join and checks that parent will get child result""" def child(i): return i ch1 = Tasklet.new(child)(1) ch2 = Tasklet.new(child)(2) self.assertEquals(1, Tasklet.join(ch1)) self.assertEquals(2, Tasklet.join(ch2))
def testJoinAfterExit(self): def child(i): return i ch1 = Tasklet.new(child)(1) ch2 = Tasklet.new(child)(2) Tasklet.yield_() #make sure children are run self.assertEquals(1, Tasklet.join(ch1)) self.assertEquals(2, Tasklet.join(ch2))
def testJoinTimeout(self): """test join where child does not exit within timeout""" def child(): Tasklet.sleep(10.0) ch = Tasklet.new(child)() try: Tasklet.join(ch, 1.0) self.fail('expected timeout error') except TimeoutError: pass #ok except: self.fail('expected timeout error') finally: ch.kill()
def testJoinKill(self): """tests that we can join a tasklet that gets killed""" def child(i): Tasklet.sleep(1000) def killer(t): t.kill() ch1 = Tasklet.new(child)(1) ch2 = Tasklet.later(1, killer)(ch1) try: Tasklet.join(ch1) self.fail('expected join error') except JoinError, e: self.assertEquals(ch1, e.tasklet) self.assertTrue(isinstance(e.cause, TaskletExit))
def testJoinException(self): """test join where child raised exception, checks that parent receives exception""" def sub2(): raise Exception("test_exc") def sub1(): sub2() def child(): sub1() ch = Tasklet.new(child)() try: Tasklet.join(ch) self.fail('expected join error') except JoinError, e: self.assertEquals(ch, e.tasklet) self.assertTrue(isinstance(e.cause, Exception)) self.assertEqual('test_exc', str(e.cause))
def testSendRecv(self): """test simple send and receive on a channel""" def sender(channel): for i in range(3): channel.send(i) def receiver(channel): while True: recvd.append(channel.receive()) recvd = [] test_channel = Channel() send_task = Tasklet.new(sender)(test_channel) recv_task = Tasklet.new(receiver)(test_channel) Tasklet.join(send_task) self.assertEquals([0,1,2], recvd) recv_task.kill()
def testSendRecv(self): """test simple send and receive on a channel""" def sender(channel): for i in range(3): channel.send(i) def receiver(channel): while True: recvd.append(channel.receive()) recvd = [] test_channel = Channel() send_task = Tasklet.new(sender)(test_channel) recv_task = Tasklet.new(receiver)(test_channel) Tasklet.join(send_task) self.assertEquals([0, 1, 2], recvd) recv_task.kill()
def testTaskInstance(self): AdderInstance = TaskInstance(True) try: AdderInstance.sum(10) self.fail('expected attribute error') except AttributeError: pass def t(): return AdderInstance.sum(20) with AdderInstance.set(Adder(10)): self.assertEquals(30, AdderInstance.sum(20)) #check that child task can also find it self.assertEquals(30, Tasklet.join(Tasklet.new(t)())) #should have been unset try: AdderInstance.sum(10) self.fail('expected attribute error') except AttributeError: pass
'\n\nJob status reset to ERROR during workflowengine initialization' ) l = LogObject() l.init(msg, 1) logentry = q.logger._encodeLog(l.getMessageString(), level=1) for jobguid in running_jobs: try: job = q.drp.job.get(jobguid) job.jobstatus = q.enumerators.jobstatus.ERROR job.log = (job.log or "") + logentry q.logger.log( 'Setting running job %s to ERROR' % job.guid, 1) q.drp.job.save(job) except Exception, e: q.logger.log( 'Failed to reset job %s: %s' % (jobguid, ex.message), 1) tasklet = Tasklet.new(clean_jobs)() Tasklet.join(tasklet) #rest_task= RestService(q.workflowengine.jobmanager) #rest_task.start() print "Ready !" if __name__ == '__main__': dispatch(main)