From 5d2050686734a4636efe1bd35221a7d6c60a3d5f Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Sat, 4 Jun 2016 14:58:14 +0800 Subject: test APi evolution add filter to retrieve last results add 'last' query parameter prcess in ResultsCLHandler.get() add 'sort' and 'last' parameters process in GenericApiHandler._list() add sort() and limit() fake in fake_pymongo.py JIRA: FUNCTEST-259 Change-Id: I96c1ff37325c65cf9c421f4277662dde28b1473d Signed-off-by: SerenaFeng --- .../opnfv_testapi/resources/handlers.py | 6 +++++- .../opnfv_testapi/resources/result_handlers.py | 15 +++++++++++++-- .../opnfv_testapi/tests/unit/fake_pymongo.py | 6 ++++++ 3 files changed, 24 insertions(+), 3 deletions(-) (limited to 'utils/test') diff --git a/utils/test/result_collection_api/opnfv_testapi/resources/handlers.py b/utils/test/result_collection_api/opnfv_testapi/resources/handlers.py index 3d39502db..df920c48f 100644 --- a/utils/test/result_collection_api/opnfv_testapi/resources/handlers.py +++ b/utils/test/result_collection_api/opnfv_testapi/resources/handlers.py @@ -106,11 +106,15 @@ class GenericApiHandler(RequestHandler): @asynchronous @gen.coroutine - def _list(self, query=None, res_op=None, *args): + def _list(self, query=None, res_op=None, *args, **kwargs): if query is None: query = {} data = [] cursor = self._eval_db(self.table, 'find', query) + if 'sort' in kwargs: + cursor = cursor.sort(kwargs.get('sort')) + if 'last' in kwargs: + cursor = cursor.limit(kwargs.get('last')) while (yield cursor.fetch_next): data.append(self.format_data(cursor.next_object())) if res_op is None: diff --git a/utils/test/result_collection_api/opnfv_testapi/resources/result_handlers.py b/utils/test/result_collection_api/opnfv_testapi/resources/result_handlers.py index 473a38d06..0a4c0db7b 100644 --- a/utils/test/result_collection_api/opnfv_testapi/resources/result_handlers.py +++ b/utils/test/result_collection_api/opnfv_testapi/resources/result_handlers.py @@ -42,7 +42,7 @@ class GenericResultHandler(GenericApiHandler): query['start_date'] = obj elif k == 'trust_indicator': query[k] = float(v) - else: + elif k != 'last': query[k] = v return query @@ -108,12 +108,23 @@ class ResultsCLHandler(GenericResultHandler): @type period: L{string} @in period: query @required period: False + @param last: last days + @type last: L{string} + @in last: query + @required last: False @param trust_indicator: must be int/long/float @type trust_indicator: L{string} @in trust_indicator: query @required trust_indicator: False """ - self._list(self.set_query()) + last = self.get_query_argument('last', 0) + if last is not None: + try: + last = int(last) + except: + raise HTTPError(HTTP_BAD_REQUEST, 'last must be int') + + self._list(self.set_query(), sort=[{'start_date', -1}], last=last) @swagger.operation(nickname="create") def post(self): diff --git a/utils/test/result_collection_api/opnfv_testapi/tests/unit/fake_pymongo.py b/utils/test/result_collection_api/opnfv_testapi/tests/unit/fake_pymongo.py index e55696890..9b4d1208c 100644 --- a/utils/test/result_collection_api/opnfv_testapi/tests/unit/fake_pymongo.py +++ b/utils/test/result_collection_api/opnfv_testapi/tests/unit/fake_pymongo.py @@ -32,6 +32,12 @@ class MemCursor(object): self.count -= 1 return self.collection.pop() + def sort(self, key_or_list, direction=None): + return self + + def limit(self, limit): + return self + class MemDb(object): -- cgit 1.2.3-korg