test APi evolution add filter to retrieve last results 63/15163/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Sat, 4 Jun 2016 06:58:14 +0000 (14:58 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Sat, 4 Jun 2016 07:13:14 +0000 (15:13 +0800)
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 <feng.xiaowei@zte.com.cn>
utils/test/result_collection_api/opnfv_testapi/resources/handlers.py
utils/test/result_collection_api/opnfv_testapi/resources/result_handlers.py
utils/test/result_collection_api/opnfv_testapi/tests/unit/fake_pymongo.py

index 3d39502..df920c4 100644 (file)
@@ -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:
index 473a38d..0a4c0db 100644 (file)
@@ -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):
index e556968..9b4d120 100644 (file)
@@ -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):