Example #1
0
 def testBasic(self):
     global ELAPSED
     # setup
     timeout = (5,30)
     watchdog = WatchDog(journal=Journal(self.jdir))
     # tracking
     watchdog.track(SN, REPLYTO, ANY, timeout)
     path = os.path.join(self.jdir, '%s.jnl' % SN)
     self.assertTrue(os.path.exists(path))
     envelope = json.load(open(path))
     self.assertEquals(envelope['sn'], SN)
     self.assertEquals(envelope['idx'], 0)
     self.assertEquals(envelope['ts'][0], NOW+timeout[0])
     self.assertEquals(envelope['ts'][1], NOW+timeout[1])
     self.assertEquals(envelope['ts'][envelope['idx']], NOW+timeout[0])
     self.assertEquals(envelope['replyto'], REPLYTO)
     self.assertEquals(envelope['any'], ANY)
     # started
     watchdog.started(SN)
     envelope = json.load(open(path))
     self.assertEquals(envelope['sn'], SN)
     self.assertEquals(envelope['idx'], 1)
     self.assertEquals(envelope['ts'][0], NOW+timeout[0])
     self.assertEquals(envelope['ts'][1], NOW+timeout[1])
     self.assertEquals(envelope['ts'][envelope['idx']], NOW+timeout[1])
     self.assertEquals(envelope['replyto'], REPLYTO)
     self.assertEquals(envelope['any'], ANY)
     # progress
     watchdog.progress(SN)
     envelope = json.load(open(path))
     self.assertEquals(envelope['sn'], SN)
     self.assertEquals(envelope['idx'], 1)
     self.assertEquals(envelope['ts'][0], NOW+timeout[0])
     self.assertEquals(envelope['ts'][1], NOW+timeout[1])
     self.assertEquals(envelope['ts'][envelope['idx']], NOW+timeout[1])
     self.assertEquals(envelope['replyto'], REPLYTO)
     self.assertEquals(envelope['any'], ANY)
     # progress (with 5 of timeout)
     ELAPSED = 28
     watchdog.progress(SN)
     envelope = json.load(open(path))
     self.assertEquals(envelope['sn'], SN)
     self.assertEquals(envelope['idx'], 1)
     self.assertEquals(envelope['ts'][0], NOW+timeout[0])
     self.assertEquals(envelope['ts'][1], now()+5)
     self.assertEquals(envelope['ts'][envelope['idx']], now()+5)
     # completed
     watchdog.completed(SN)
     path = os.path.join(self.jdir, '%s.jnl' % SN)
     self.assertFalse(os.path.exists(path))
Example #2
0
class WatchDog:
    
    def __init__(self):
        jdir = cfg.journal.dir
        self.__impl = Impl(journal=Journal(jdir))
    
    @remote
    def track(self, sn, replyto, any, timeout):
        return self.__impl.track(sn, replyto, any, timeout)
    
    @remote
    def hack(self, sn):
        return self.__impl.hack(sn)
    
    @remote
    @action(seconds=1)
    def process(self):
        self.__impl.process()