aboutsummaryrefslogtreecommitdiffstats
path: root/docs/development.rst
blob: d1029b32d989f3908f4cc5cd0ba3a7564a0a123e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Development
############



Setting up development environment
----------------------------------
Before you start, ensure you have Python installation in version 3.7 or higher.
Please see the official Python documentation_ in case you have to upgrade or install
certain Python version.

.. _documentation: https://docs.python.org/3/using/index.html

Clone the project. Inside the project folder create a new virtual environment and activate
it:

.. code:: shell

    $ python -m venv env
    $ source env/bin/activate

On Windows, activate by executing the following:

.. code:: powershell

    $ .\env\Scripts\activate

When your virtual environment is ready, install required dependencies:

.. code:: shell

    $ pip install -r requirements.txt

Developing
----------

To use library functions directly from the source code, execute the following
to point to the source folder in *PYTHONPATH* variable and run the interpreter:


.. code:: shell

    $ PYTHONPATH=$PYTHONPATH:src/ python


On Windows:

.. code:: powershell

    $ $env:PYTHONPATH='src\';python

Verify that packages are accessible:

.. code:: python

    >>> import onapsdk

You can then start working with library functions as needed.

New ONAP component package
--------------------------

When you create a new ONAP component package and wants to use Jinja templates you need to create `templates` directory
to store them in a newly created package. Furthermore you need to add a `PackageLoader` in `utils.jinja` module.

Testing
-------

Install tox:

.. code:: shell

    $ pip install tox

To run all unit test, lint and docstyle checks, inside the project folder simply
execute *tox*:

.. code:: shell

    $ tox

Please note that the above runs unit tests on all major versions of Python available on your
OS (3.7, 3.8, 3.9). To limit execution to only specific version of Python Interpreter,
use the following example:

.. code:: shell

    $ tox -e py37

Integration testing
-------------------

It is possible to run integration tests using mock-servers_ project.

.. _mock-servers: https://gitlab.com/Orange-OpenSource/lfn/onap/mock_servers

Make sure Docker Compose is available on your system. Install required dependencies:

.. code:: shell

    $ pip install pytest mock

Go to *integration_tests/* directory and execute:

.. code:: shell

    $ docker-compose up

Please note that *docker-compose* attempts to create subnet 172.20.0.0/24, so it can not be run if the scope is already allocated.
Also, containers are not reachable by their IP addresses on Windows host since
Docker for Windows does not support bridged network interface for Linux containers.
For reference, please see Docker docs_.

.. _docs: https://docs.docker.com/docker-for-windows/networking/#known-limitations-use-cases-and-workarounds

Once containers are running, execute the following in the project's directory:

.. code:: shell

    $ PYTHONPATH=$PYTHONPATH:integration_tests/:src/ ONAP_PYTHON_SDK_SETTINGS="local_urls" pytest -c /dev/null --verbose --junitxml=pytest-integration.xml integration_tests

Please make sure all the test are passing before creating merge request.