Validation for messages returned by queue/stats

This patch updates the  queue/stats tests to include validation for message age
(0 <= age <= message_ttl_max), href & created time.

Tests Bug: #1237620

Change-Id: I7c6dfd10b94c8ac64247d687ac31783522b8f3d0
This commit is contained in:
Malini Kamalambal 2013-10-10 13:45:30 -04:00
parent 33f75cd592
commit 2f844e1ef9
2 changed files with 67 additions and 12 deletions

View File

@ -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
@ -109,6 +111,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):

View File

@ -74,6 +74,7 @@ class TestInsertQueue(base.FunctionalTestBase):
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))
@ -251,12 +252,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."""
@ -264,7 +265,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()
@ -280,7 +282,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()
@ -289,12 +293,14 @@ class TestQueueMisc(base.FunctionalTestBase):
test_list_queues_detailed.tags = ['smoke', 'positive']
@ddt.data(0, -1, 30)
@ddt.data(0, -1, 1001)
def test_list_queue_invalid_limit(self, limit):
"""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']
@ -302,7 +308,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']
@ -322,7 +329,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)
@ -334,8 +341,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']