X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=test%2Fexecution%2Fec.py;h=03040146fbc9ac26bedc6a81843730efc37232d1;hb=268bdb7e842f5e1dddfbd9f7269f4522db5f5d38;hp=fba3cd5be83c7e7d75d8c66355e747654015d4de;hpb=02ff35b09ad8054fa4f9b8c19555b4dc480f7585;p=nepi.git diff --git a/test/execution/ec.py b/test/execution/ec.py index fba3cd5b..03040146 100755 --- a/test/execution/ec.py +++ b/test/execution/ec.py @@ -1,7 +1,26 @@ #!/usr/bin/env python - -from neco.execution.ec import ExperimentController -from neco.execution.scheduler import TaskStatus +# +# NEPI, a framework to manage network experiments +# Copyright (C) 2013 INRIA +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Alina Quereilhac + + +from nepi.execution.ec import ExperimentController, ECState +from nepi.execution.scheduler import TaskStatus import datetime import time @@ -13,21 +32,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,26 +52,43 @@ 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(): + # When this task is executed and the error raise, + # the FailureManager should set its failure level to + # TASK_FAILURE + raise RuntimeError, "NOT A REAL ERROR. JUST TESTING!" + + ec = ExperimentController() + + tid = ec.schedule("2s", raise_error, track = True) + + while True: + task = ec.get_task(tid) + if task.status != TaskStatus.NEW: + break - finally: - ec.shutdown() + time.sleep(1) + self.assertEquals(task.status, TaskStatus.ERROR) if __name__ == '__main__': unittest.main()