From 5c29a70d63cfaaf48b0eadbfdac2de61b3b59ac2 Mon Sep 17 00:00:00 2001 From: Lucia Guevgeozian Odizzio Date: Thu, 27 Feb 2014 13:48:30 +0100 Subject: [PATCH] Changing total_seconds in timefuncs, fixing _execute in ec, adding unittest --- src/nepi/execution/ec.py | 5 ++--- src/nepi/util/timefuncs.py | 5 ++++- test/lib/test_utils.py | 12 +++++++++++ test/util/timefuncs.py | 43 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100755 test/util/timefuncs.py diff --git a/src/nepi/execution/ec.py b/src/nepi/execution/ec.py index 71478233..21caac0e 100644 --- a/src/nepi/execution/ec.py +++ b/src/nepi/execution/ec.py @@ -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() diff --git a/src/nepi/util/timefuncs.py b/src/nepi/util/timefuncs.py index 1a8e102a..3d7c3664 100644 --- a/src/nepi/util/timefuncs.py +++ b/src/nepi/util/timefuncs.py @@ -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. diff --git a/test/lib/test_utils.py b/test/lib/test_utils.py index 447c703f..57050f38 100644 --- a/test/lib/test_utils.py +++ b/test/lib/test_utils.py @@ -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 index 00000000..8836c79b --- /dev/null +++ b/test/util/timefuncs.py @@ -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 . +# +# Author: Lucia Guevgeozian + +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() + + -- 2.43.0