Changing total_seconds in timefuncs, fixing _execute in ec, adding unittest
authorLucia Guevgeozian Odizzio <lucia.guevgeozian_odizzio@inria.fr>
Thu, 27 Feb 2014 12:48:30 +0000 (13:48 +0100)
committerLucia Guevgeozian Odizzio <lucia.guevgeozian_odizzio@inria.fr>
Thu, 27 Feb 2014 12:48:30 +0000 (13:48 +0100)
src/nepi/execution/ec.py
src/nepi/util/timefuncs.py
test/lib/test_utils.py
test/util/timefuncs.py [new file with mode: 0755]

index 7147823..21caac0 100644 (file)
@@ -956,11 +956,10 @@ class ExperimentController(object):
             :type task: Task
 
         """
-        # Invoke callback
-        task.status = TaskStatus.DONE
-
         try:
+            # Invoke callback
             task.result = task.callback()
+            task.status = TaskStatus.DONE
         except:
             import traceback
             err = traceback.format_exc()
index 1a8e102..3d7c366 100644 (file)
@@ -56,13 +56,16 @@ def tdiff(date1, date2):
     """
     return date1 - date2
 
+def _get_total_seconds(td): 
+    return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 1e6) / 1e6
+
 def tdiffsec(date1, date2):
     """ Returns the date difference ( date1 - date2 ) in seconds,
     where date1 and date 2 are datetime objects 
     
     """
     diff = tdiff(date1, date2)
-    return diff.total_seconds()
+    return _get_total_seconds(diff)
 
 def stabsformat(sdate, dbase = None):
     """ Constructs a datetime object from a string date.
index 447c703..57050f3 100644 (file)
@@ -20,6 +20,7 @@
 from nepi.resources.linux.node import LinuxNode
 
 import os
+import sys
 
 class DummyEC(object):
     @property
@@ -96,3 +97,14 @@ def skipIfNotPLCredentials(func):
 
     return wrapped
 
+def skipIfNotPythonVersion(func):
+    name = func.__name__
+    def wrapped(*args, **kwargs):
+        if sys.version_info < 2.7:
+            print "*** WARNING: Skipping test %s: total_seconds() method doesn't exist\n" % name
+            return
+
+        return func(*args, **kwargs)
+
+    return wrapped
+
diff --git a/test/util/timefuncs.py b/test/util/timefuncs.py
new file mode 100755 (executable)
index 0000000..8836c79
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+# Author: Lucia Guevgeozian <lucia.guevgeozian_odizzio@inria.fr>
+
+from test_utils import skipIfNotPythonVersion
+
+import datetime
+import unittest
+
+def _get_total_seconds(td):
+    return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 1e6) / 1e6
+
+class TimeFuncTestCase(unittest.TestCase):
+
+    @skipIfNotPythonVersion
+    def test_total_seconds(self):
+        date = datetime.timedelta(2, 468, 506260)
+        seconds1 = _get_total_seconds(date)
+        seconds2 = date.total_seconds()
+
+        self.assertEquals(seconds1, seconds2)
+
+
+if __name__ == '__main__':
+    unittest.main()
+
+