From 7d32f7713668e69c89f0cb9fdd0fe2d5c293280b Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Fri, 20 Oct 2017 17:39:54 +0800 Subject: add develop guide for testapi Change-Id: Iaa9c15092aafda2024f08c467eea2f3ab9cddd96 Signed-off-by: SerenaFeng --- testapi/docs/developer/devguide/api.rst | 10 ++ testapi/docs/developer/devguide/framework.rst | 101 +++++++++++++++++++++ testapi/docs/developer/devguide/index.rst | 18 ++++ testapi/docs/developer/devguide/overview.rst | 98 ++++++++++++++++++++ testapi/docs/developer/devguide/swagger-ui.rst | 10 ++ testapi/docs/developer/devguide/testapi-client.rst | 10 ++ testapi/docs/developer/devguide/web-portal.rst | 10 ++ 7 files changed, 257 insertions(+) create mode 100644 testapi/docs/developer/devguide/api.rst create mode 100644 testapi/docs/developer/devguide/framework.rst create mode 100644 testapi/docs/developer/devguide/index.rst create mode 100644 testapi/docs/developer/devguide/overview.rst create mode 100644 testapi/docs/developer/devguide/swagger-ui.rst create mode 100644 testapi/docs/developer/devguide/testapi-client.rst create mode 100644 testapi/docs/developer/devguide/web-portal.rst (limited to 'testapi/docs/developer') diff --git a/testapi/docs/developer/devguide/api.rst b/testapi/docs/developer/devguide/api.rst new file mode 100644 index 0000000..cd2ca27 --- /dev/null +++ b/testapi/docs/developer/devguide/api.rst @@ -0,0 +1,10 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corp. + +============ +Restful APIs +============ + +.. toctree:: + :maxdepth: 2 diff --git a/testapi/docs/developer/devguide/framework.rst b/testapi/docs/developer/devguide/framework.rst new file mode 100644 index 0000000..f7a7605 --- /dev/null +++ b/testapi/docs/developer/devguide/framework.rst @@ -0,0 +1,101 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corp. + + +.. toctree:: + :maxdepth: 2 + +========= +Framework +========= + +**Test Results Collector of OPNFV Test Projects**: + +This project aims to provide a common way of gathering all the test results for OPNFV +testing projects into a single place, and a unified way of getting those results for +testing analysis projects, such as Reporting/Bitergia Dashboard/Qtip. It exposes +Restful APIs for collecting results and pushing them into a MongoDB database. + +If you are interested in how TestAPI looks like, please visit OPNFV's official `TestAPI Server`__ + +.. __: http://testresults.opnfv.org/test + +Pre-requsites +============= + +TestAPI leverages MongoDB as the data warehouse, in order to let it work +successfully, a MongoDB must be provided, the official MongoDB version in OPNFV +TestAPI is 3.2.6. And the database is **test_results_collection**, the five +collections are *users/pods/projects/testcases/scenarioes/results*. And thanks to +MongoDB's very user-friendly property, they don't need to be created in advance. + +Running locally +=============== + +Requirements +^^^^^^^^^^^^ + +All requirements are listed in requirements.txt and should be +installed by 'pip install': + + *pip install -r requirements.txt* + +Installation +^^^^^^^^^^^^ + + *python setup.py install* + +After installation, configuration file etc/config.ini will be put under +/etc/opnfv_testapi/. And all the web relevant files under 3rd_party/static +will be in /user/local/share/opnfv_testapi as a totality. + +Start Server +^^^^^^^^^^^^ + + *opnfv-testapi [--config-file ]* + +If --config-file is provided, the specified configuration file will be employed +when starting the server, or else /etc/opnfv_testapi/config.ini will be utilized +by default. + +After executing the command successfully, a TestAPI server will be started on +port 8000, to visit web portal, please access http://hostname:8000 + +Regarding swagger-ui website, please visit http://hostname:8000/swagger/spec.html + +Running with container +====================== + +TestAPI has already containerized, the docker image is opnfv/testapi:latest. + +**Running the container not behind nginx:** + +.. code-block:: shell + + docker run -dti --name testapi -p expose_port:8000 + -e "mongodb_url=mongodb://mongodb_ip:27017/" + -e "base_url=http://host_name:expose_port" + opnfv/testapi:latest + +**Running the container behind nginx:** + +.. code-block:: shell + + docker run -dti --name testapi -p expose_port:8000 + -e "mongodb_url=mongodb://mongodb_ip:27017/" + -e "base_url=http://nginx_url" + opnfv/testapi:latest + +Unittest & pep8 +=============== + +All requirements for unit tests are outlined in test-requirements.txt, and in TestAPI project, tox is leveraged to drive the executing of unit tests and pep8 check + +**Running unit tests** + + *tox -e py27* + +**Running pep8 check** + + *tox -e pep8* diff --git a/testapi/docs/developer/devguide/index.rst b/testapi/docs/developer/devguide/index.rst new file mode 100644 index 0000000..7afcd96 --- /dev/null +++ b/testapi/docs/developer/devguide/index.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corp. + + +*********************** +TestAPI Developer Guide +*********************** + +.. toctree:: + :maxdepth: 2 + + overview.rst + framework.rst + api.rst + swagger-ui.rst + web-portal.rst + testapi-client.rst diff --git a/testapi/docs/developer/devguide/overview.rst b/testapi/docs/developer/devguide/overview.rst new file mode 100644 index 0000000..b6475f3 --- /dev/null +++ b/testapi/docs/developer/devguide/overview.rst @@ -0,0 +1,98 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corporation + + +******** +Overview +******** + +TestAPI uses Python as primary programming language and build the framework from the following packages + +======== =============================================================================================================== +Module Package +======== =============================================================================================================== +api `Tornado-Motor`_ - API applications using Motor with tornado +swagger `tornado-swagger`_ - a wrapper for tornado which enables swagger-ui-v1.2 support +web `angular`_ - a superheroic JavaScript MVW framework, the version is AngularJS v1.3.15 +docs `sphinx`_ - a tool that makes it easy to create intelligent and beautiful documentation +testing `pytest`_ - a mature full-featured Python testing tool that helps you write better programs +======== =============================================================================================================== + + +Source Code +=========== + +The structure of repository is based on the recommended sample in `The Hitchhiker's Guide to Python`_ + +========================== ==================================================================================================== +Path Content +========================== ==================================================================================================== +``./3rd_party/`` third part included in TestAPI project +``./docker/`` configuration for building Docker image for TestAPI deployment +``./docs/`` user and developer documentation, design proposals +``./etc/`` configuration files used to install opnfv-testapi +``./opnfv_testapi/`` the actual package +``./opnfv_testapi/tests/`` package functional and unit tests +``./opts/`` optional components, e.g. one click deployment script +========================== ==================================================================================================== + + +Coding Style +============ + +TestAPI follows `OpenStack Style Guidelines`_ for source code and commit message. + +Specially, it is recommended to link each patch set with a JIRA issue. Put:: + + JIRA: RELENG-n + +in commit message to create an automatic link. + + +Testing +======= + +All testing related code are stored in ``./opnfv_testapi/tests/`` + +================== ==================================================================================================== +Path Content +================== ==================================================================================================== +``./tests/unit/`` unit test for each module, follow the same layout as ./opnfv_testapi/ +``./conftest.py`` pytest configuration in project scope +================== ==================================================================================================== + +`tox`_ is used to automate the testing tasks + +.. code-block:: shell + + cd + pip install tox + tox + +The test cases are written in `pytest`_. You may run it selectively with + +.. code-block:: shell + + pytest opnfv_testapi/tests/unit/common/test_config.py + + +Branching +========= + +Currently, no branching for TestAPI, only master branch + + +Releasing +========= + +Currently, TestAPI does not follow community's milestones and releases + +.. _Tornado-Motor: https://motor.readthedocs.io/en/stable/tutorial-tornado.html +.. _tornado-swagger: https://github.com/SerenaFeng/tornado-swagger +.. _angular: https://code.angularjs.org/1.3.15/docs/guide +.. _sphinx: http://www.sphinx-doc.org/en/stable/ +.. _pytest: http://doc.pytest.org/ +.. _OpenStack Style Guidelines: http://docs.openstack.org/developer/hacking/ +.. _The Hitchhiker's Guide to Python: http://python-guide-pt-br.readthedocs.io/en/latest/writing/structure/ +.. _tox: https://tox.readthedocs.io/ diff --git a/testapi/docs/developer/devguide/swagger-ui.rst b/testapi/docs/developer/devguide/swagger-ui.rst new file mode 100644 index 0000000..7f53047 --- /dev/null +++ b/testapi/docs/developer/devguide/swagger-ui.rst @@ -0,0 +1,10 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corp. + +============ +Swagger page +============ + +.. toctree:: + :maxdepth: 2 diff --git a/testapi/docs/developer/devguide/testapi-client.rst b/testapi/docs/developer/devguide/testapi-client.rst new file mode 100644 index 0000000..ab4c8e8 --- /dev/null +++ b/testapi/docs/developer/devguide/testapi-client.rst @@ -0,0 +1,10 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corp. + +============== +TestAPI client +============== + +.. toctree:: + :maxdepth: 2 diff --git a/testapi/docs/developer/devguide/web-portal.rst b/testapi/docs/developer/devguide/web-portal.rst new file mode 100644 index 0000000..62b2f17 --- /dev/null +++ b/testapi/docs/developer/devguide/web-portal.rst @@ -0,0 +1,10 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2017 ZTE Corp. + +========== +Web portal +========== + +.. toctree:: + :maxdepth: 2 -- cgit 1.2.3-korg