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:
parent
359a71e0b0
commit
b9be56f209
@ -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',
|
||||
|
@ -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,
|
||||
|
@ -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])
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user