Merge "Validation for messages returned by queue/stats"
This commit is contained in:
commit
d8c26e5648
@ -17,6 +17,8 @@
|
||||
import abc
|
||||
import multiprocessing
|
||||
|
||||
|
||||
from marconi.openstack.common import timeutils
|
||||
from marconi.queues import bootstrap
|
||||
# NOTE(flaper87): This is necessary to register,
|
||||
# wsgi configs and won't be permanent. It'll be
|
||||
@ -112,6 +114,52 @@ class FunctionalTestBase(testing.TestBase):
|
||||
self.assertEqual(result_json['messages']['total'],
|
||||
total)
|
||||
|
||||
if 'oldest' in result_json['messages']:
|
||||
oldest_message = result_json['messages']['oldest']
|
||||
self.verify_message_stats(oldest_message)
|
||||
|
||||
newest_message = result_json['messages']['newest']
|
||||
self.verify_message_stats(newest_message)
|
||||
|
||||
def verify_message_stats(self, message):
|
||||
"""Verifies the oldest & newest message stats
|
||||
|
||||
:param message: oldest (or) newest message returned by
|
||||
queue_name/stats.
|
||||
"""
|
||||
expected_keys = ['age', 'created', 'href']
|
||||
|
||||
response_keys = message.keys()
|
||||
response_keys.sort()
|
||||
self.assertEqual(response_keys, expected_keys)
|
||||
|
||||
# Verify that age has valid values
|
||||
age = message['age']
|
||||
self.assertTrue(0 <= age <= self.limits.message_ttl_max,
|
||||
msg='Invalid Age {0}'.format(age))
|
||||
|
||||
# Verify that GET on href returns 200
|
||||
path = message['href']
|
||||
result = self.client.get(path)
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
# Verify that created time falls within the last 10 minutes
|
||||
# NOTE(malini): The messages are created during the test.
|
||||
created_time = message['created']
|
||||
created_time = timeutils.normalize_time(
|
||||
timeutils.parse_isotime(created_time))
|
||||
now = timeutils.utcnow()
|
||||
|
||||
delta = timeutils.delta_seconds(before=created_time, after=now)
|
||||
# NOTE(malini): The 'int()' below is a work around for the small time
|
||||
# difference between julianday & UTC.
|
||||
# (needed to pass this test on sqlite driver)
|
||||
delta = int(delta)
|
||||
|
||||
msg = 'Invalid Time Delta {0}, Created time {1}, Now {2}' \
|
||||
.format(delta, created_time, now)
|
||||
self.assertTrue(0 <= delta <= 6000, msg)
|
||||
|
||||
|
||||
class Server(object):
|
||||
|
||||
|
@ -77,6 +77,7 @@ class TestInsertQueue(base.FunctionalTestBase):
|
||||
self.header = helpers.create_marconi_headers(self.cfg)
|
||||
self.headers_response_empty = set(['location'])
|
||||
self.client.set_base_url(self.base_url)
|
||||
self.header = helpers.create_marconi_headers(self.cfg)
|
||||
|
||||
@ddt.data('qtestqueue', 'TESTqueue', 'hyphen-name', '_undersore',
|
||||
annotated('test_insert_queue_long_name', 'i' * 64))
|
||||
@ -254,12 +255,12 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
def setUp(self):
|
||||
super(TestQueueMisc, self).setUp()
|
||||
|
||||
self.base_url = '{0}/{1}'.format(self.cfg.marconi.url,
|
||||
self.cfg.marconi.version)
|
||||
|
||||
self.base_url = self.cfg.marconi.url
|
||||
self.client.set_base_url(self.base_url)
|
||||
|
||||
self.queue_url = self.base_url + '/queues/{0}'.format(uuid.uuid1())
|
||||
self.queue_url = self.base_url + '/{0}/queues/{1}' \
|
||||
.format(self.cfg.marconi.version,
|
||||
uuid.uuid1())
|
||||
|
||||
def test_list_queues(self):
|
||||
"""List Queues."""
|
||||
@ -267,7 +268,8 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
self.client.put(self.queue_url)
|
||||
self.addCleanup(self.client.delete, self.queue_url)
|
||||
|
||||
result = self.client.get('/queues')
|
||||
result = self.client.get('/{0}/queues'
|
||||
.format(self.cfg.marconi.version))
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
response_keys = result.json().keys()
|
||||
@ -283,7 +285,9 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
self.addCleanup(self.client.delete, self.queue_url)
|
||||
|
||||
params = {'detailed': True}
|
||||
result = self.client.get('/queues', params=params)
|
||||
result = self.client.get('/{0}/queues'
|
||||
.format(self.cfg.marconi.version),
|
||||
params=params)
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
response_keys = result.json()['queues'][0].keys()
|
||||
@ -297,7 +301,9 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
"""List Queues with a limit value that is not allowed."""
|
||||
|
||||
params = {'limit': limit}
|
||||
result = self.client.get('/queues', params=params)
|
||||
result = self.client.get('/{0}/queues'
|
||||
.format(self.cfg.marconi.version),
|
||||
params=params)
|
||||
self.assertEqual(result.status_code, 400)
|
||||
|
||||
test_list_queue_invalid_limit.tags = ['negative']
|
||||
@ -305,7 +311,8 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
def test_check_health(self):
|
||||
"""Test health endpoint."""
|
||||
|
||||
result = self.client.get('/health')
|
||||
result = self.client.get('/{0}/health'
|
||||
.format(self.cfg.marconi.version))
|
||||
self.assertEqual(result.status_code, 204)
|
||||
|
||||
test_check_health.tags = ['positive']
|
||||
@ -325,7 +332,7 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
|
||||
def test_check_queue_exists_negative(self):
|
||||
"""Checks non-existing queue."""
|
||||
path = '/queues/nonexistingqueue'
|
||||
path = '/{0}/queues/nonexistingqueue'.format(self.cfg.marconi.version)
|
||||
result = self.client.get(path)
|
||||
self.assertEqual(result.status_code, 404)
|
||||
|
||||
@ -337,8 +344,8 @@ class TestQueueMisc(base.FunctionalTestBase):
|
||||
def test_get_queue_malformed_marker(self):
|
||||
"""List queues with invalid marker."""
|
||||
|
||||
url = self.base_url + '/queues?marker=zzz'
|
||||
result = self.client.get(url)
|
||||
path = '/{0}/queues?marker=zzz'.format(self.cfg.marconi.version)
|
||||
result = self.client.get(path)
|
||||
self.assertEqual(result.status_code, 204)
|
||||
|
||||
test_get_queue_malformed_marker.tags = ['negative']
|
||||
|
Loading…
x
Reference in New Issue
Block a user