add router package to implement url-2-XXXHandlers mappings in testAPI project 51/14951/2
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 1 Jun 2016 09:00:11 +0000 (17:00 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 1 Jun 2016 09:11:05 +0000 (17:11 +0800)
and eliminate flake8 violation

JIRA: FUNCTEST-285

Change-Id: I15b568a97279032549f24ff81520220e271f3488
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/test/result_collection_api/opnfv_testapi/cmd/result_collection_api.py [deleted file]
utils/test/result_collection_api/opnfv_testapi/cmd/server.py [new file with mode: 0644]
utils/test/result_collection_api/opnfv_testapi/router/__init__.py [new file with mode: 0644]
utils/test/result_collection_api/opnfv_testapi/router/url_mappings.py [new file with mode: 0644]
utils/test/result_collection_api/opnfv_testapi/tests/unit/test_base.py
utils/test/result_collection_api/opnfv_testapi/tests/unit/test_result.py
utils/test/result_collection_api/setup.cfg
utils/test/result_collection_api/setup.py

diff --git a/utils/test/result_collection_api/opnfv_testapi/cmd/result_collection_api.py b/utils/test/result_collection_api/opnfv_testapi/cmd/result_collection_api.py
deleted file mode 100644 (file)
index e59e28c..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-##############################################################################
-# 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 :
-  - logging
-  - json args validation with schemes
-  - POST/PUT/DELETE for PODs
-  - POST/PUT/GET/DELETE for installers, platforms (enrich results info)
-  - count cases for GET on projects
-  - count results for GET on cases
-  - include objects
-  - swagger documentation
-  - setup file
-  - results pagination
-  - unit tests
-
-"""
-
-import argparse
-
-import tornado.ioloop
-import motor
-
-from opnfv_testapi.resources.handlers import VersionHandler
-from opnfv_testapi.resources.testcase_handlers import TestcaseCLHandler, \
-    TestcaseGURHandler
-from opnfv_testapi.resources.pod_handlers import PodCLHandler, PodGURHandler
-from opnfv_testapi.resources.project_handlers import ProjectCLHandler, \
-    ProjectGURHandler
-from opnfv_testapi.resources.result_handlers import ResultsCLHandler, \
-    ResultsGURHandler
-from opnfv_testapi.resources.dashboard_handlers import DashboardHandler
-from opnfv_testapi.common.config import APIConfig
-from opnfv_testapi.tornado_swagger_ui.tornado_swagger import swagger
-
-# optionally get config file from command line
-parser = argparse.ArgumentParser()
-parser.add_argument("-c", "--config-file", dest='config_file',
-                    help="Config file location")
-args = parser.parse_args()
-CONF = APIConfig().parse(args.config_file)
-
-# connecting to MongoDB server, and choosing database
-client = motor.MotorClient(CONF.mongo_url)
-db = client[CONF.mongo_dbname]
-
-
-def make_app():
-    return swagger.Application(
-        [
-            # GET /version => GET API version
-            (r"/versions", VersionHandler),
-
-            # few examples:
-            # GET /api/v1/pods => Get all pods
-            # GET /api/v1/pods/1 => Get details on POD 1
-            (r"/api/v1/pods", PodCLHandler),
-            (r"/api/v1/pods/([^/]+)", PodGURHandler),
-
-            # few examples:
-            # GET /projects
-            # GET /projects/yardstick
-            (r"/api/v1/projects", ProjectCLHandler),
-            (r"/api/v1/projects/([^/]+)", ProjectGURHandler),
-
-            # few examples
-            # GET /projects/qtip/cases => Get cases for qtip
-            (r"/api/v1/projects/([^/]+)/cases", TestcaseCLHandler),
-            (r"/api/v1/projects/([^/]+)/cases/([^/]+)", TestcaseGURHandler),
-
-            # 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)
-            (r"/api/v1/results", ResultsCLHandler),
-            (r"/api/v1/results/([^/]+)", ResultsGURHandler),
-
-            # Method to manage Dashboard ready results
-            # GET /dashboard?project=functest&case=vPing&pod=opnfv-jump2
-            #  => get results in dasboard ready format
-            # get /dashboard
-            #  => get the list of project with dashboard ready results
-            (r"/dashboard/v1/results", DashboardHandler),
-        ],
-        db=db,
-        debug=CONF.api_debug_on,
-    )
-
-
-def main():
-    application = make_app()
-    application.listen(CONF.api_port)
-    tornado.ioloop.IOLoop.current().start()
-
-
-if __name__ == "__main__":
-    main()
diff --git a/utils/test/result_collection_api/opnfv_testapi/cmd/server.py b/utils/test/result_collection_api/opnfv_testapi/cmd/server.py
new file mode 100644 (file)
index 0000000..1031fbb
--- /dev/null
@@ -0,0 +1,68 @@
+##############################################################################
+# 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 :
+  - logging
+  - json args validation with schemes
+  - POST/PUT/DELETE for PODs
+  - POST/PUT/GET/DELETE for installers, platforms (enrich results info)
+  - count cases for GET on projects
+  - count results for GET on cases
+  - include objects
+  - swagger documentation
+  - setup file
+  - results pagination
+  - unit tests
+
+"""
+
+import argparse
+
+import tornado.ioloop
+import motor
+
+from opnfv_testapi.common.config import APIConfig
+from opnfv_testapi.tornado_swagger_ui.tornado_swagger import swagger
+from opnfv_testapi.router import url_mappings
+
+# optionally get config file from command line
+parser = argparse.ArgumentParser()
+parser.add_argument("-c", "--config-file", dest='config_file',
+                    help="Config file location")
+args = parser.parse_args()
+CONF = APIConfig().parse(args.config_file)
+
+# connecting to MongoDB server, and choosing database
+client = motor.MotorClient(CONF.mongo_url)
+db = client[CONF.mongo_dbname]
+
+
+def make_app():
+    return swagger.Application(
+        url_mappings.mappings,
+        db=db,
+        debug=CONF.api_debug_on,
+    )
+
+
+def main():
+    application = make_app()
+    application.listen(CONF.api_port)
+    tornado.ioloop.IOLoop.current().start()
+
+
+if __name__ == "__main__":
+    main()
diff --git a/utils/test/result_collection_api/opnfv_testapi/router/__init__.py b/utils/test/result_collection_api/opnfv_testapi/router/__init__.py
new file mode 100644 (file)
index 0000000..3ed9fd0
--- /dev/null
@@ -0,0 +1 @@
+__author__ = 'root'
diff --git a/utils/test/result_collection_api/opnfv_testapi/router/url_mappings.py b/utils/test/result_collection_api/opnfv_testapi/router/url_mappings.py
new file mode 100644 (file)
index 0000000..c299ada
--- /dev/null
@@ -0,0 +1,48 @@
+from opnfv_testapi.resources.handlers import VersionHandler
+from opnfv_testapi.resources.testcase_handlers import TestcaseCLHandler, \
+    TestcaseGURHandler
+from opnfv_testapi.resources.pod_handlers import PodCLHandler, PodGURHandler
+from opnfv_testapi.resources.project_handlers import ProjectCLHandler, \
+    ProjectGURHandler
+from opnfv_testapi.resources.result_handlers import ResultsCLHandler, \
+    ResultsGURHandler
+from opnfv_testapi.resources.dashboard_handlers import DashboardHandler
+
+
+mappings = [
+    # GET /versions => GET API version
+    (r"/versions", VersionHandler),
+
+    # few examples:
+    # GET /api/v1/pods => Get all pods
+    # GET /api/v1/pods/1 => Get details on POD 1
+    (r"/api/v1/pods", PodCLHandler),
+    (r"/api/v1/pods/([^/]+)", PodGURHandler),
+
+    # few examples:
+    # GET /projects
+    # GET /projects/yardstick
+    (r"/api/v1/projects", ProjectCLHandler),
+    (r"/api/v1/projects/([^/]+)", ProjectGURHandler),
+
+    # few examples
+    # GET /projects/qtip/cases => Get cases for qtip
+    (r"/api/v1/projects/([^/]+)/cases", TestcaseCLHandler),
+    (r"/api/v1/projects/([^/]+)/cases/([^/]+)", TestcaseGURHandler),
+
+    # 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)
+    (r"/api/v1/results", ResultsCLHandler),
+    (r"/api/v1/results/([^/]+)", ResultsGURHandler),
+
+    # Method to manage Dashboard ready results
+    # GET /dashboard?project=functest&case=vPing&pod=opnfv-jump2
+    #  => get results in dasboard ready format
+    # get /dashboard
+    #  => get the list of project with dashboard ready results
+    (r"/dashboard/v1/results", DashboardHandler),
+]
index 8f0c284..01c43f0 100644 (file)
@@ -3,15 +3,7 @@ import json
 from tornado.web import Application
 from tornado.testing import AsyncHTTPTestCase
 
-from opnfv_testapi.resources.pod_handlers import PodCLHandler, PodGURHandler
-from opnfv_testapi.resources.project_handlers import ProjectCLHandler, \
-    ProjectGURHandler
-from opnfv_testapi.resources.handlers import VersionHandler
-from opnfv_testapi.resources.testcase_handlers import TestcaseCLHandler, \
-    TestcaseGURHandler
-from opnfv_testapi.resources.result_handlers import ResultsCLHandler, \
-    ResultsGURHandler
-from opnfv_testapi.resources.dashboard_handlers import DashboardHandler
+from opnfv_testapi.router import url_mappings
 from opnfv_testapi.resources.models import CreateResponse
 import fake_pymongo
 
@@ -32,19 +24,7 @@ class TestBase(AsyncHTTPTestCase):
 
     def get_app(self):
         return Application(
-            [
-                (r"/versions", VersionHandler),
-                (r"/api/v1/pods", PodCLHandler),
-                (r"/api/v1/pods/([^/]+)", PodGURHandler),
-                (r"/api/v1/projects", ProjectCLHandler),
-                (r"/api/v1/projects/([^/]+)", ProjectGURHandler),
-                (r"/api/v1/projects/([^/]+)/cases", TestcaseCLHandler),
-                (r"/api/v1/projects/([^/]+)/cases/([^/]+)",
-                 TestcaseGURHandler),
-                (r"/api/v1/results", ResultsCLHandler),
-                (r"/api/v1/results/([^/]+)", ResultsGURHandler),
-                (r"/dashboard/v1/results", DashboardHandler),
-            ],
+            url_mappings.mappings,
             db=fake_pymongo,
             debug=True,
         )
index 5e424f8..23a745f 100644 (file)
@@ -7,7 +7,8 @@ from opnfv_testapi.resources.project_models import ProjectCreateRequest
 from opnfv_testapi.resources.testcase_models import TestcaseCreateRequest
 from opnfv_testapi.resources.result_models import ResultCreateRequest, \
     TestResult, TestResults
-from opnfv_testapi.common.constants import HTTP_OK, HTTP_BAD_REQUEST, HTTP_NOT_FOUND
+from opnfv_testapi.common.constants import HTTP_OK, HTTP_BAD_REQUEST, \
+    HTTP_NOT_FOUND
 
 __author__ = '__serena__'
 
index b0e008a..702a41f 100644 (file)
@@ -36,7 +36,7 @@ data_files =
 
 [entry_points]
 console_scripts =
-    opnfv-testapi = opnfv_testapi.cmd.result_collection_api:main
+    opnfv-testapi = opnfv_testapi.cmd.server:main
 
 [egg_info]
 tag_build =
index 6f3b45f..15dda96 100644 (file)
@@ -1,11 +1,8 @@
-__author__ = 'serena'
-
 import setuptools
 
-try:
-    import multiprocessing
-except ImportError:
-    pass
+
+__author__ = 'serena'
+
 
 setuptools.setup(
     setup_requires=['pbr>=1.8'],