Code Changes for querying failed cases and tests run in last x hours

Change-Id: I9f279581eae1bd7227e931ee672835c08a7ba7ad
This commit is contained in:
Anand Shanmugam
2015-10-28 14:44:48 -07:00
parent 5360a8d4db
commit 5b5f88a791
5 changed files with 38 additions and 23 deletions

View File

@@ -128,10 +128,9 @@ class cpulseController(rest.RestController):
_custom_actions = {'detail': ['GET']}
def _get_tests_collection(self, marker, limit,
sort_key, sort_dir, expand=False,
resource_url=None):
def _get_tests_collection(self, marker, limit, sort_key, sort_dir,
expand=False, resource_url=None, failed=None,
period=None):
limit = api_utils.validate_limit(limit)
sort_dir = api_utils.validate_sort_dir(sort_dir)
@@ -142,7 +141,8 @@ class cpulseController(rest.RestController):
tests = pecan.request.rpcapi.test_list(pecan.request.context, limit,
marker_obj, sort_key=sort_key,
sort_dir=sort_dir)
sort_dir=sort_dir,
failed=failed, period=period)
return CpulseCollection.convert_with_links(tests, limit,
url=resource_url,
@@ -150,10 +150,10 @@ class cpulseController(rest.RestController):
sort_key=sort_key,
sort_dir=sort_dir)
@wsme_pecan.wsexpose(CpulseCollection, types.uuid,
types.uuid, int, wtypes.text, wtypes.text)
def get_all(self, test_uuid=None, marker=None, limit=None,
sort_key='id', sort_dir='asc'):
@wsme_pecan.wsexpose(CpulseCollection, types.uuid, types.uuid, int,
wtypes.text, wtypes.text, wtypes.text, int)
def get_all(self, test_uuid=None, marker=None, limit=None, sort_key='id',
sort_dir='asc', failed=None, period=None):
"""Retrieve a list of tests.
:param marker: pagination marker for large data sets.
@@ -161,8 +161,8 @@ class cpulseController(rest.RestController):
:param sort_key: column to sort results by. Default: id.
:param sort_dir: direction to sort. "asc" or "desc". Default: asc.
"""
return self._get_tests_collection(marker, limit, sort_key,
sort_dir)
return self._get_tests_collection(marker, limit, sort_key, sort_dir,
failed=failed, period=period)
@wsme_pecan.wsexpose(Cpulse, types.uuid_or_name)
def get_one(self, test_ident):

View File

@@ -36,8 +36,10 @@ class API(rpc_service.API):
test.create(cpulse_create_timeout)
return test
def test_list(self, context, limit, marker, sort_key, sort_dir):
return objects.Cpulse.list(context, limit, marker, sort_key, sort_dir)
def test_list(self, context, limit, marker, sort_key, sort_dir,
failed=None, period=None):
return objects.Cpulse.list(context, limit, marker, sort_key, sort_dir,
failed=failed, period=period)
def test_delete(self, context, uuid):
# return self._call('cpulse_delete', uuid=uuid)

View File

@@ -42,7 +42,8 @@ class Connection(object):
@abc.abstractmethod
def get_test_list(self, context, columns=None, filters=None, limit=None,
marker=None, sort_key=None, sort_dir=None):
marker=None, sort_key=None, sort_dir=None,
failed=None, period=None):
"""Get specific columns for matching tests.
Return a list of the specified columns for all tess that match the

View File

@@ -22,6 +22,7 @@ from cloudpulse.db.sqlalchemy import models
from cloudpulse.openstack.common._i18n import _
from cloudpulse.openstack.common import log
from cloudpulse.scenario import base
from datetime import timedelta
from oslo_config import cfg
from oslo_db import exception as db_exc
from oslo_db.sqlalchemy import session as db_session
@@ -125,11 +126,23 @@ class Connection(api.Connection):
return query
def _add_test_failed_filter(self, query, failed):
if failed and failed == 'True':
query = query.filter_by(state='failed')
return query
def _add_test_period_filter(self, query, period):
if period:
query_time = timeutils.utcnow() - timedelta(minutes=period)
query = query.filter(models.cpulse.created_at >= query_time)
return query
def get_test_list(self, context, filters=None, limit=None, marker=None,
sort_key=None, sort_dir=None):
# query = model_query(models.cpulse)
sort_key=None, sort_dir=None, failed=None, period=None):
query = model_query(models.cpulse)
query = self._add_tests_filters(query, filters)
query = self._add_test_period_filter(query, period)
query = self._add_test_failed_filter(query, failed)
return _paginate_query(models.cpulse, limit, marker,
sort_key, sort_dir, query)

View File

@@ -117,8 +117,8 @@ class Cpulse(base.CloudpulsePersistentObject, base.CloudpulseObject,
return test
@base.remotable_classmethod
def list(cls, context, limit=None, marker=None,
sort_key=None, sort_dir=None, filters=None):
def list(cls, context, limit=None, marker=None, sort_key=None,
sort_dir=None, filters=None, failed=None, period=None):
"""Return a list of Cpulse objects.
:param context: Security context.
@@ -129,11 +129,10 @@ class Cpulse(base.CloudpulsePersistentObject, base.CloudpulseObject,
:returns: a list of :class:`Cpulse` object.
"""
db = cls.dbapi.get_test_list(context, limit=limit,
marker=marker,
sort_key=sort_key,
sort_dir=sort_dir,
filters=filters)
db = cls.dbapi.get_test_list(context, limit=limit, marker=marker,
sort_key=sort_key, sort_dir=sort_dir,
filters=filters, failed=failed,
period=period)
return Cpulse._from_db_object_list(db, cls, context)
@base.remotable