Esempio n. 1
0
 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)())
Esempio n. 2
0
    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)())
Esempio n. 3
0
    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()
Esempio n. 4
0
 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()
Esempio n. 5
0
    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))
Esempio n. 6
0
    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))
Esempio n. 7
0
    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))
Esempio n. 8
0
    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))
Esempio n. 9
0
    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()
Esempio n. 10
0
    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()
Esempio n. 11
0
    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))
Esempio n. 12
0
    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))
Esempio n. 13
0
    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))
Esempio n. 14
0
    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))
Esempio n. 15
0
    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()
Esempio n. 16
0
    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()
Esempio n. 17
0
    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
Esempio n. 18
0
    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
Esempio n. 19
0
                    '\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)