Removes Horizon's "time" module.

The module was an unnecessary hack for lazy test-writing.

Implements blueprint remove-horizon-time-module.

Change-Id: Ibeabd2b1689619a8e00c3346cef9401e5850d375
This commit is contained in:
Gabriel Hurley 2012-06-19 13:29:23 -07:00
parent 359a71e0b0
commit b9be56f209
6 changed files with 19 additions and 93 deletions

View File

@ -34,14 +34,6 @@ INDEX_URL = reverse('horizon:nova:instances_and_volumes:index')
class InstanceViewTests(test.TestCase):
def setUp(self):
super(InstanceViewTests, self).setUp()
self.now = self.override_times()
def tearDown(self):
super(InstanceViewTests, self).tearDown()
self.reset_times()
@test.create_stubs({api: ('server_list',
'flavor_list',
'server_delete',

View File

@ -23,7 +23,6 @@ import datetime
from django import http
from django.core.urlresolvers import reverse
from mox import IsA
from novaclient import exceptions as nova_exceptions
from horizon import api
from horizon import test
@ -34,17 +33,12 @@ INDEX_URL = reverse('horizon:nova:overview:index')
class UsageViewTests(test.TestCase):
def tearDown(self):
super(UsageViewTests, self).tearDown()
self.reset_times() # override_times is called in the tests
def test_usage(self):
now = self.override_times()
now = datetime.datetime.utcnow()
usage_obj = api.nova.Usage(self.usages.first())
self.mox.StubOutWithMock(api, 'usage_get')
api.usage_get(IsA(http.HttpRequest), self.tenant.id,
datetime.datetime(now.year, now.month, 1,
now.hour, now.minute, now.second),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
datetime.datetime(now.year, now.month, now.day, now.hour,
now.minute, now.second)) \
.AndReturn(usage_obj)
@ -56,12 +50,10 @@ class UsageViewTests(test.TestCase):
self.assertContains(res, 'form-horizontal')
def test_usage_csv(self):
now = self.override_times()
now = datetime.datetime.utcnow()
usage_obj = api.nova.Usage(self.usages.first())
self.mox.StubOutWithMock(api, 'usage_get')
timestamp = datetime.datetime(now.year, now.month, 1,
now.hour, now.minute,
now.second)
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
@ -76,10 +68,9 @@ class UsageViewTests(test.TestCase):
self.assertTrue(isinstance(res.context['usage'], usage.TenantUsage))
def test_usage_exception(self):
now = self.override_times()
now = datetime.datetime.utcnow()
self.mox.StubOutWithMock(api, 'usage_get')
timestamp = datetime.datetime(now.year, now.month, 1, now.hour,
now.minute, now.second)
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
@ -93,12 +84,10 @@ class UsageViewTests(test.TestCase):
self.assertEqual(res.context['usage'].usage_list, [])
def test_usage_default_tenant(self):
now = self.override_times()
now = datetime.datetime.utcnow()
usage_obj = api.nova.Usage(self.usages.first())
self.mox.StubOutWithMock(api, 'usage_get')
timestamp = datetime.datetime(now.year, now.month, 1,
now.hour, now.minute,
now.second)
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,

View File

@ -34,20 +34,15 @@ INDEX_URL = reverse('horizon:nova:overview:index')
class UsageViewTests(test.BaseAdminViewTests):
def tearDown(self):
super(UsageViewTests, self).tearDown()
self.reset_times() # override_times is called in the tests
@test.create_stubs({api: ('usage_list',),
api.keystone: ('tenant_list',)})
def test_usage(self):
now = self.override_times()
now = datetime.datetime.utcnow()
usage_obj = api.nova.Usage(self.usages.first())
api.keystone.tenant_list(IsA(http.HttpRequest), admin=True) \
.AndReturn(self.tenants.list())
api.usage_list(IsA(http.HttpRequest),
datetime.datetime(now.year, now.month, 1,
now.hour, now.minute, now.second),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
datetime.datetime(now.year, now.month, now.day, now.hour,
now.minute, now.second)) \
.AndReturn([usage_obj])
@ -71,13 +66,12 @@ class UsageViewTests(test.BaseAdminViewTests):
@test.create_stubs({api: ('usage_list',),
api.keystone: ('tenant_list',)})
def test_usage_csv(self):
now = self.override_times()
now = datetime.datetime.utcnow()
usage_obj = api.nova.Usage(self.usages.first())
api.keystone.tenant_list(IsA(http.HttpRequest), admin=True) \
.AndReturn(self.tenants.list())
api.usage_list(IsA(http.HttpRequest),
datetime.datetime(now.year, now.month, 1,
now.hour, now.minute, now.second),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
datetime.datetime(now.year, now.month, now.day, now.hour,
now.minute, now.second)) \
.AndReturn([usage_obj])

View File

@ -18,7 +18,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import datetime
import os
import cloudfiles as swift_client
@ -41,10 +40,6 @@ from horizon import middleware
from horizon import users
from horizon.tests.test_data.utils import load_test_data
from .time import time
from .time import today
from .time import utcnow
# Makes output of failing mox tests much easier to read.
wsgi.WSGIRequest.__repr__ = lambda self: "<class 'django.http.HttpRequest'>"
@ -156,21 +151,6 @@ class TestCase(django_test.TestCase):
authorized_tenants=authorized_tenants,
request=self.request)
def override_times(self):
""" Overrides the "current" time with immutable values. """
now = datetime.datetime.utcnow()
time.override_time = \
datetime.time(now.hour, now.minute, now.second)
today.override_time = datetime.date(now.year, now.month, now.day)
utcnow.override_time = now
return now
def reset_times(self):
""" Undoes the changes made by ``override_times``. """
time.override_time = None
today.override_time = None
utcnow.override_time = None
def assertRedirectsNoFollow(self, response, expected_url):
"""
Asserts that the given response issued a 302 redirect without

View File

@ -1,28 +0,0 @@
import datetime
def time(hour=0, minute=0, second=0, microsecond=0):
'''Overrideable version of datetime.datetime.today'''
if time.override_time:
return time.override_time
return datetime.time(hour, minute, second, microsecond)
time.override_time = None
def today():
'''Overridable version of datetime.datetime.today'''
if today.override_time:
return today.override_time
return datetime.date.today()
today.override_time = None
def utcnow():
'''Overridable version of datetime.datetime.utcnow'''
if utcnow.override_time:
return utcnow.override_time
return datetime.datetime.utcnow()
utcnow.override_time = None

View File

@ -10,7 +10,6 @@ from django.utils.translation import ugettext as _
from horizon import api
from horizon import exceptions
from horizon import forms
from horizon import time
LOG = logging.getLogger(__name__)
@ -27,15 +26,15 @@ class BaseUsage(object):
@property
def today(self):
return time.today()
return datetime.date.today()
@staticmethod
def get_datetime(date, now=False):
if now:
now = time.utcnow()
current_time = time.time(now.hour, now.minute, now.second)
now = datetime.datetime.utcnow()
current_time = datetime.time(now.hour, now.minute, now.second)
else:
current_time = time.time()
current_time = datetime.time()
return datetime.datetime.combine(date, current_time)
@staticmethod
@ -46,8 +45,8 @@ class BaseUsage(object):
def get_end(year, month, day=1):
period = relativedelta(months=1)
date_end = BaseUsage.get_start(year, month, day) + period
if date_end > time.today():
date_end = time.today()
if date_end > datetime.date.today():
date_end = datetime.date.today()
return date_end
def get_instances(self):
@ -83,7 +82,7 @@ class BaseUsage(object):
raise NotImplementedError("You must define a get_usage method.")
def summarize(self, start, end):
if start <= end <= time.today():
if start <= end <= datetime.date.today():
# Convert to datetime.datetime just for API call.
start = BaseUsage.get_datetime(start)
end = BaseUsage.get_datetime(end, now=True)