X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=test%2Fexecution%2Fec.py;h=ff7a8fa7df095885672edb49157390f78eb7943c;hb=1d2350d56f314a6e3de43517a66f7e2f48128d44;hp=fba3cd5be83c7e7d75d8c66355e747654015d4de;hpb=02ff35b09ad8054fa4f9b8c19555b4dc480f7585;p=nepi.git diff --git a/test/execution/ec.py b/test/execution/ec.py index fba3cd5b..ff7a8fa7 100755 --- a/test/execution/ec.py +++ b/test/execution/ec.py @@ -1,7 +1,25 @@ #!/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 version 2 as +# published by the Free Software Foundation; +# +# 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 +31,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.assertEqual('hola!', task.result) - finally: - ec.shutdown() + ec.shutdown() def test_schedule_date(self): def get_time(): @@ -35,26 +51,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.assertEqual(task.status, TaskStatus.ERROR) if __name__ == '__main__': unittest.main()