def test_end_to_end(self): tc = {0: ts.TaskClient(self.dbi, 'localhost')} s = ts.Scheduler(tc, actions_per_still=1) thd = threading.Thread(target=s.start, args=(self.dbi, ), kwargs={ 'ActionClass': ts.Action, 'action_args': (tc, ), 'sleeptime': 0 }) thd.start() try: def all_done(): for f in self.dbi.files: if self.dbi.get_obs_status(f) != 'COMPLETE': return False return True while not all_done(): time.sleep(.1) finally: s.quit() thd.join() for i in self.dbi.files: self.assertEqual(self.dbi.get_obs_status(i), 'COMPLETE')
def test_many_stills(self): dbi = FakeDataBaseInterface() try: os.mkdir('still0') os.mkdir('still1') except (OSError): pass ts0 = ts.TaskServer(dbi, data_dir='still0', port=4441) ts1 = ts.TaskServer(dbi, data_dir='still1', port=4442) ts0_thd = threading.Thread(target=ts0.start) ts1_thd = threading.Thread(target=ts1.start) tc = { 0: ts.TaskClient(dbi, 'localhost', port=4441), 1: ts.TaskClient(dbi, 'localhost', port=4442) } s = ts.Scheduler(tc, actions_per_still=2, blocksize=2) s_thd = threading.Thread(target=s.start, args=(dbi, ), kwargs={ 'ActionClass': ts.Action, 'action_args': (tc, 30), 'sleeptime': 0 }) ts0_thd.start() ts1_thd.start() s_thd.start() try: def all_done(): for f in dbi.files: if dbi.get_obs_status(f) != 'COMPLETE': return False return True while not all_done(): time.sleep(.1) finally: s.quit() ts0.shutdown() ts1.shutdown() s_thd.join() ts0_thd.join() ts1_thd.join() for i in dbi.files: self.assertEqual(dbi.get_obs_status(i), 'COMPLETE')
def test_gen_args(self): tc = ts.TaskClient(self.dbi, 'localhost') for task in sch.FILE_PROCESSING_STAGES[2:-1]: args = tc.gen_args(task, 2) if task in ['UVCRE','UVCRRE']: self.assertEqual(len(args), 3) elif task in ['UVC','CLEAN_UV','CLEAN_UVC','NPZ','UVCRR', 'CLEAN_UVCRE','CLEAN_UVCRR','CLEAN_NPZ','CLEAN_UVCR', 'CLEAN_UVCRRE']: self.assertEqual(len(args), 1) elif task in ['ACQUIRE_NEIGHBORS','CLEAN_NEIGHBORS']: self.assertEqual(len(args), 0) elif task in ['UV','NPZ_POT','UVCRRE_POT']: self.assertEqual(len(args), 2)
def test_tx(self): self.pkt = '' class SleepHandler(ts.TaskHandler): def handle(me): self.pkt = me.get_pkt() s = ts.TaskServer(self.dbi, handler=SleepHandler) thd = threading.Thread(target=s.start) thd.start() try: tc = ts.TaskClient(self.dbi, 'localhost') tc.tx('UV', 1) finally: s.shutdown() thd.join() self.assertEqual(self.pkt, ('UV',1,'localhost',['test.uv', 'localhost:./test.uv']))
def test_attributes(self): tc = ts.TaskClient(self.dbi, 'localhost') self.assertEqual(tc.host_port, ('localhost', ts.STILL_PORT))