X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=test%2Fexecution%2Fec.py;h=93225406a99d0e4895c4c0925aa76c5c5d199b85;hb=6337302c0db631641b3e6a47c6e57c4864711acc;hp=fba3cd5be83c7e7d75d8c66355e747654015d4de;hpb=b849b5d9bd2569b1db4dce2a65296e1c619bd0a7;p=nepi.git diff --git a/test/execution/ec.py b/test/execution/ec.py index fba3cd5b..93225406 100755 --- a/test/execution/ec.py +++ b/test/execution/ec.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from neco.execution.ec import ExperimentController +from neco.execution.ec import ExperimentController, ECState from neco.execution.scheduler import TaskStatus import datetime @@ -13,21 +13,19 @@ class ExecuteControllersTestCase(unittest.TestCase): return 'hola!' ec = ExperimentController() + + tid = ec.schedule("0s", myfunc, track=True) - try: - tid = ec.schedule("0s", myfunc, track=True) - - while True: - task = ec.get_task(tid) - if task.status != TaskStatus.NEW: - break + while True: + task = ec.get_task(tid) + if task.status != TaskStatus.NEW: + break - time.sleep(1) + time.sleep(1) - self.assertEquals('hola!', task.result) + self.assertEquals('hola!', task.result) - finally: - ec.shutdown() + ec.shutdown() def test_schedule_date(self): def get_time(): @@ -35,25 +33,36 @@ class ExecuteControllersTestCase(unittest.TestCase): ec = ExperimentController() - try: - schedule_time = datetime.datetime.now() - - tid = ec.schedule("4s", get_time, track=True) + schedule_time = datetime.datetime.now() + + tid = ec.schedule("4s", get_time, track=True) + + while True: + task = ec.get_task(tid) + if task.status != TaskStatus.NEW: + break + + time.sleep(1) - while True: - task = ec.get_task(tid) - if task.status != TaskStatus.NEW: - break + execution_time = task.result + delta = execution_time - schedule_time + self.assertTrue(delta > datetime.timedelta(seconds=4)) + self.assertTrue(delta < datetime.timedelta(seconds=5)) - time.sleep(1) + ec.shutdown() - execution_time = task.result - delta = execution_time - schedule_time - self.assertTrue(delta > datetime.timedelta(seconds=4)) - self.assertTrue(delta < datetime.timedelta(seconds=5)) + def test_schedule_exception(self): + def raise_error(): + raise RuntimeError, "the error" - finally: - ec.shutdown() + ec = ExperimentController() + ec.schedule("2s", raise_error) + + while ec.ecstate not in [ECState.FAILED, ECState.TERMINATED]: + time.sleep(1) + + self.assertEquals(ec.ecstate, ECState.FAILED) + ec.shutdown() if __name__ == '__main__':