summaryrefslogtreecommitdiffstats
path: root/utils/test/result_collection_api/result_collection_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/test/result_collection_api/result_collection_api.py')
-rw-r--r--utils/test/result_collection_api/result_collection_api.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/utils/test/result_collection_api/result_collection_api.py b/utils/test/result_collection_api/result_collection_api.py
new file mode 100644
index 000000000..71b3267c2
--- /dev/null
+++ b/utils/test/result_collection_api/result_collection_api.py
@@ -0,0 +1,83 @@
+##############################################################################
+# Copyright (c) 2015 Orange
+# guyrodrigue.koffi@orange.com / koffirodrigue@gmail.com
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+"""
+Pre-requisites:
+ pip install motor
+ pip install tornado
+
+We can launch the API with this file
+
+TODOS :
+ - json args validation with schemes
+ - count cases for GET on test_projects
+ - count results for GET on cases
+ - add meta object to json response
+ - provide filtering on requests
+ - include objects
+
+"""
+
+import tornado.ioloop
+import motor
+
+from resources.handlers import VersionHandler, PodHandler, \
+ TestProjectHandler, TestCasesHandler, TestResultsHandler
+from common.constants import API_LISTENING_PORT, MONGO_URL
+
+# connecting to MongoDB server, and choosing database
+db = motor.MotorClient(MONGO_URL).test_results_collection
+
+
+def make_app():
+ return tornado.web.Application(
+ [
+ # GET /version => GET API version
+ (r"/version", VersionHandler),
+
+ # few examples:
+ # GET /pods => Get all pods
+ # GET /pods/1 => Get details on POD 1
+ (r"/pods", PodHandler),
+ (r"/pods/(\d*)", PodHandler),
+
+ # few examples:
+ # GET /test_projects
+ # GET /test_projects/yardstick
+ (r"/test_projects", TestProjectHandler),
+ (r"/test_projects/([^/]+)", TestProjectHandler),
+
+ # few examples
+ # GET /test_projects/qtip/cases => Get cases for qtip
+ #
+ (r"/test_projects/([^/]+)/cases", TestCasesHandler),
+ (r"/test_projects/([^/]+)/cases/([^/]+)", TestCasesHandler),
+ # (r"/test_cases/([^/]+)", TestCasesHandler),
+
+ # new path to avoid a long depth
+ # GET /results?project=functest&case=keystone.catalog&pod=1
+ # => get results with optional filters
+ # POST /results =>
+ # Push results with mandatory request payload parameters
+ # (project, case, and pod_id)
+ (r"/results([^/]*)", TestResultsHandler),
+ (r"/results/([^/]*)", TestResultsHandler),
+ ],
+ db=db,
+ debug=True,
+ )
+
+
+def main():
+ application = make_app()
+ application.listen(API_LISTENING_PORT)
+ tornado.ioloop.IOLoop.current().start()
+
+if __name__ == "__main__":
+ main()