summaryrefslogtreecommitdiffstats
path: root/testapi
diff options
context:
space:
mode:
authorSerena Feng <feng.xiaowei@zte.com.cn>2017-08-18 01:00:25 +0000
committerGerrit Code Review <gerrit@opnfv.org>2017-08-18 01:00:25 +0000
commit1d05aa834b397df4156c064b9eeabf012f944250 (patch)
tree21892daf5e2de75b91af715d0a21c5947c5fb357 /testapi
parent92e9fbf344e049b815486540b0cb5c4f28e0a778 (diff)
parent3266befc00ba36e71d29dbf3784437e0857d90f0 (diff)
Merge "bugfix: testapi is killed because of oom_kill"
Diffstat (limited to 'testapi')
-rw-r--r--testapi/opnfv_testapi/resources/handlers.py32
-rw-r--r--testapi/opnfv_testapi/resources/result_handlers.py4
2 files changed, 19 insertions, 17 deletions
diff --git a/testapi/opnfv_testapi/resources/handlers.py b/testapi/opnfv_testapi/resources/handlers.py
index 8a3a2db..474a203 100644
--- a/testapi/opnfv_testapi/resources/handlers.py
+++ b/testapi/opnfv_testapi/resources/handlers.py
@@ -106,16 +106,22 @@ class GenericApiHandler(web.RequestHandler):
per_page = kwargs.get('per_page', 0)
if query is None:
query = {}
+ pipelines = list()
+ pipelines.append({'$match': query})
total_pages = 0
if page > 0:
cursor = dbapi.db_list(self.table, query)
records_count = yield cursor.count()
- total_pages = self._calc_total_pages(records_count,
- last,
- page,
- per_page)
- pipelines = self._set_pipelines(query, sort, last, page, per_page)
+ total_pages, return_nr = self._calc_total_pages(records_count,
+ last,
+ page,
+ per_page)
+ pipelines = self._set_pipelines(pipelines,
+ sort,
+ return_nr,
+ page,
+ per_page)
cursor = dbapi.db_aggregate(self.table, pipelines)
data = list()
while (yield cursor.fetch_next):
@@ -145,21 +151,17 @@ class GenericApiHandler(web.RequestHandler):
if page > 1 and page > total_pages:
raises.BadRequest(
'Request page > total_pages [{}]'.format(total_pages))
- return total_pages
+ return total_pages, records_nr
@staticmethod
- def _set_pipelines(query, sort, last, page, per_page):
- pipelines = list()
- if query:
- pipelines.append({'$match': query})
+ def _set_pipelines(pipelines, sort, return_nr, page, per_page):
if sort:
pipelines.append({'$sort': sort})
- if page > 0:
- pipelines.append({'$skip': (page - 1) * per_page})
- pipelines.append({'$limit': per_page})
- elif last > 0:
- pipelines.append({'$limit': last})
+ over = (page - 1) * per_page
+ left = return_nr - over
+ pipelines.append({'$skip': over})
+ pipelines.append({'$limit': per_page if per_page < left else left})
return pipelines
diff --git a/testapi/opnfv_testapi/resources/result_handlers.py b/testapi/opnfv_testapi/resources/result_handlers.py
index 2bf1792..9389d26 100644
--- a/testapi/opnfv_testapi/resources/result_handlers.py
+++ b/testapi/opnfv_testapi/resources/result_handlers.py
@@ -155,7 +155,7 @@ class ResultsCLHandler(GenericResultHandler):
@type last: L{string}
@in last: query
@required last: False
- @param page: which page to list
+ @param page: which page to list, default to 1
@type page: L{int}
@in page: query
@required page: False
@@ -180,7 +180,7 @@ class ResultsCLHandler(GenericResultHandler):
return self.get_int('last', self.get_query_argument('last', 0))
def page_limit():
- return self.get_int('page', self.get_query_argument('page', 0))
+ return self.get_int('page', self.get_query_argument('page', 1))
limitations = {
'sort': {'_id': descend_limit()},