[LNT] r275096 - Optionally limit the number of samples returned in the graph API

Chris Matthews via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 11 13:01:03 PDT 2016


Author: cmatthews
Date: Mon Jul 11 15:01:02 2016
New Revision: 275096

URL: http://llvm.org/viewvc/llvm-project?rev=275096&view=rev
Log:
Optionally limit the number of samples returned in the graph API

Modified:
    lnt/trunk/lnt/server/ui/api.py
    lnt/trunk/tests/server/ui/test_api.py

Modified: lnt/trunk/lnt/server/ui/api.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/api.py?rev=275096&r1=275095&r2=275096&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/api.py (original)
+++ lnt/trunk/lnt/server/ui/api.py Mon Jul 11 15:01:02 2016
@@ -180,12 +180,18 @@ class Graph(Resource):
             .filter(ts.Run.machine_id == machine.id) \
             .filter(ts.Sample.test == test) \
             .filter(field.column != None) \
-            .order_by(ts.Order.llvm_project_revision)
+            .order_by(ts.Order.llvm_project_revision.desc())
 
         if field.status_field:
             q = q.filter((field.status_field.column == PASS) |
                          (field.status_field.column == None))
-        samples = [[rev, val, {'label': rev, 'date': str(time), 'runID': str(rid)}] for val, rev, time, rid in q.all()]
+        
+        limit = request.args.get('limit', None)
+        if limit:
+            limit = int(limit)
+            q = q.limit(limit)
+        
+        samples = [[rev, val, {'label': rev, 'date': str(time), 'runID': str(rid)}] for val, rev, time, rid in q.all()[::-1]]
 
         return samples
 

Modified: lnt/trunk/tests/server/ui/test_api.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/server/ui/test_api.py?rev=275096&r1=275095&r2=275096&view=diff
==============================================================================
--- lnt/trunk/tests/server/ui/test_api.py (original)
+++ lnt/trunk/tests/server/ui/test_api.py Mon Jul 11 15:01:02 2016
@@ -62,9 +62,18 @@ order_expected_response = {u'id': 1,
                            u'previous_order_id': 2}
 
 graph_data = [[u'152292', 1.0,
-               {u'date': u'2012-05-01 16:28:23', u'label': u'152292', u'runID': u'5'}],
+               {u'date': u'2012-05-01 16:28:23',
+                u'label': u'152292',
+                u'runID': u'5'}],
               [u'152293', 10.0,
-               {u'date': u'2012-05-03 16:28:24', u'label': u'152293', u'runID': u'6'}]]
+               {u'date': u'2012-05-03 16:28:24',
+                u'label': u'152293',
+                u'runID': u'6'}]]
+
+graph_data2 = [[u'152293', 10.0,
+               {u'date': u'2012-05-03 16:28:24',
+                u'label': u'152293',
+                u'runID': u'6'}]]
 
 
 class JSONAPITester(unittest.TestCase):
@@ -108,8 +117,13 @@ class JSONAPITester(unittest.TestCase):
     def test_graph_api(self):
         """Check that /graph/x/y/z returns what we expect."""
         client = self.client
+
         j = check_json(client, 'api/db_default/v4/nts/graph/2/4/3')
         self.assertEqual(graph_data, j)
+        
+        # Now check that limit works.
+        j2 = check_json(client, 'api/db_default/v4/nts/graph/2/4/3?limit=1')
+        self.assertEqual(graph_data2, j2)
 
 if __name__ == '__main__':
     unittest.main(argv=[sys.argv[0], ])




More information about the llvm-commits mailing list