summaryrefslogtreecommitdiffstats
path: root/nova/utils.py
diff options
context:
space:
mode:
authorroot <root@ubuntu>2010-12-15 11:23:33 -0800
committerroot <root@ubuntu>2010-12-15 11:23:33 -0800
commitdd4ee43cc2042299ed7a56b4690999fa1df120a1 (patch)
treea168cb90ee2131532a4b9ff8b8b232f20660a2ee /nova/utils.py
parentb0279030127b7fe8df21db12a8727ea623ca46e2 (diff)
downloadnova-dd4ee43cc2042299ed7a56b4690999fa1df120a1.tar.gz
nova-dd4ee43cc2042299ed7a56b4690999fa1df120a1.tar.xz
nova-dd4ee43cc2042299ed7a56b4690999fa1df120a1.zip
clean up tests and add overriden time method to utils
Diffstat (limited to 'nova/utils.py')
-rw-r--r--nova/utils.py42
1 files changed, 40 insertions, 2 deletions
diff --git a/nova/utils.py b/nova/utils.py
index 142584df8..048a9d974 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -21,7 +21,6 @@ System-level utilities and helper functions.
"""
import datetime
-import functools
import inspect
import logging
import os
@@ -29,6 +28,7 @@ import random
import subprocess
import socket
import sys
+import time
from xml.sax import saxutils
from twisted.internet.threads import deferToThread
@@ -165,13 +165,51 @@ def get_my_ip():
return "127.0.0.1"
+def utcnow():
+ """Overridable version of datetime.datetime.utcnow."""
+ if utcnow.override_time:
+ return utcnow.override_time
+ return datetime.datetime.utcnow()
+
+
+utcnow.override_time = None
+
+
+def utcnow_ts():
+ """Timestamp version of our utcnow function."""
+ return time.mktime(utcnow().timetuple())
+
+
+def set_time_override(override_time=datetime.datetime.utcnow()):
+ """Override utils.utcnow to return a constant time."""
+ utcnow.override_time = override_time
+
+
+def advance_time_delta(timedelta):
+ """Advance overriden time using a datetime.timedelta."""
+ assert(not utcnow.override_time is None)
+ utcnow.override_time += timedelta
+
+
+def advance_time_seconds(seconds):
+ """Advance overriden time by seconds."""
+ advance_time_delta(datetime.timedelta(0, seconds))
+
+
+def clear_time_override():
+ """Remove the overridden time."""
+ utcnow.override_time = None
+
+
def isotime(at=None):
+ """Returns iso formatted utcnow."""
if not at:
- at = datetime.datetime.utcnow()
+ at = utcnow()
return at.strftime(TIME_FORMAT)
def parse_isotime(timestr):
+ """Turn an iso formatted time back into a datetime"""
return datetime.datetime.strptime(timestr, TIME_FORMAT)