replacing assertEquals into assertEqual
[nepi.git] / test / execution / ec.py
index fba3cd5..ff7a8fa 100755 (executable)
@@ -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 <http://www.gnu.org/licenses/>.
+#
+# Author: Alina Quereilhac <alina.quereilhac@inria.fr>
+
+
+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()