blob: 257fb6d0aee5218ae6eba2a7f3961ef2f8c94076 [file] [log] [blame]
ROC Testing
===========
The REST API and the GUI of the Aether ROC is tested utilizing the Robot Framework.
The tests are located inside the aether-system-tests repository and they are run nightly using
a Jenkins job.
Development Prerequisites
-------------------------
To access the ROC from a local system, it is necessary to deploy the components of ยตONOS.
This can be done with the use of Helm (see instructions on
`this page <https://docs.onosproject.org/onos-docs/docs/content/developers/deploy_with_helm/>`_).
Additionally, it is necessary to add the SD-RAN chart repo with the following command:
.. code-block:: shell
helm repo add sdran --username USER --password PASSWORD https://sdrancharts.onosproject.org
where USER and PASSWORD can be obtained from the Aether Login Information file,
which is accessible to the ``onfstaff`` group.
Finally, the ROC GUI tests are running on the Firefox browser, so it is
necessary to have the Firefox browser and the Firefox web driver
(``geckodriver``) installed on the system in order to run these tests.
Running the ROC API tests
-------------------------
Follow the steps below to access the ROC API:
1. Deploy the ``aether-roc-umbrella`` chart from the Aether repo with the following command:
.. code-block:: shell
helm -n micro-onos install aether-roc-umbrella aether/aether-roc-umbrella
2. Check if all pods are in a Running state:
.. code-block:: shell
kubectl -n micro-onos get pods
This should print a table like the one below:
.. code-block:: shell
NAME READY STATUS RESTARTS AGE
aether-roc-api-df499d585-7xmt5 2/2 Running 0 2m52s
aether-roc-gui-56bfb5fc67-sgxh7 1/1 Running 0 2m52s
aether-roc-umbrella-grafana-6b4d4b55c-4mdww 1/1 Running 0 2m52s
aether-roc-umbrella-prometheus-alertmanager-694c449885-8fsbs 2/2 Running 0 2m52s
aether-roc-umbrella-prometheus-server-59c974f84-d56td 2/2 Running 0 2m52s
aether-roc-umbrella-sdcore-test-dummy-7f4895c59c-4pvdg 1/1 Running 0 2m52s
onos-cli-846d9c8df6-njqgs 1/1 Running 0 2m52s
onos-config-759fff55f-k9fzr 5/5 Running 0 2m52s
onos-consensus-store-1-0 1/1 Running 0 2m50s
onos-topo-56b687f77b-9l8ns 3/3 Running 0 2m52s
sdcore-adapter-v21-5688b8d458-5sn67 1/1 Running 0 2m52s
sdcore-adapter-v3-56667fd848-9szt5 2/2 Running 0 2m52s
3. Once all pods are in a Running state, port-forward to port 8181 with the following command:
.. code-block:: shell
kubectl -n micro-onos port-forward $(kubectl -n micro-onos get pods -l type=api -o name) 8181
Now that we have access to the ROC API, we can proceed with running the ROC API tests from the ``aether-system-tests``
repository:
1. Checkout the aether-system-tests repo:
.. code-block:: shell
git clone "ssh://$GIT_USER@gerrit.opencord.org:29418/aether-system-tests"
2. Go to the repo directory:
.. code-block:: shell
cd aether-system-tests
3. Install the requirements and create a virtual environment:
.. code-block:: shell
make ast-venv
source ast-venv/bin/activate
4. Go to the ``roc`` folder and generate the ROC API test framework and test files:
.. code-block:: shell
cd roc
python libraries/api/codegen/class_generator.py \
--models=variables/3_0_0_model_list.json \
--template=libraries/api/codegen/templates/class_template.py.tmpl \
--common_files_directory=libraries/api/codegen/common \
--target_directory=libraries/api/
python tests/api/codegen/tests_generator.py \
--models=variables/3_0_0_model_list.json \
--template=tests/api/codegen/templates/tests_template.robot.tmpl \
--target_directory=tests/api
5. Go to the directory that contains the test files:
.. code-block:: shell
cd tests/api/3_0_0
6. Create a folder for the logs and the output files from the tests:
.. code-block:: shell
mkdir results
7. Run any Robot Framework test file from the ``3_0_0`` directory.
Each test file corresponds to one of the Aether 3.0.0 models.
.. code-block:: shell
robot -d results <model-name>.robot
This will generate test reports and logs in the ``results`` directory.
Running the ROC GUI tests
-------------------------
We test the ROC GUI by installing the ROC on a local Dex server. To install the
Dex server, please follow the steps under the "Helm install" section of the
readme file in `this repository
<https://github.com/onosproject/onos-helm-charts/tree/master/dex-ldap-umbrella>`_.
Once that you have installed the ``dex-ldap-umbrella`` chart, follow the steps
below to install the ROC on a local Dex server:
1. Deploy the ``aether-roc-umbrella`` chart from the Aether repo with the
following command:
.. code-block:: shell
helm -n micro-onos install aether-roc-umbrella aether/aether-roc-umbrella --set onos-config.openidc.issuer=http://dex-ldap-umbrella:5556 --set aether-roc-gui-v3.openidc.issuer=http://dex-ldap-umbrella:5556 --set import.sdcore-adapter.v2_1.enabled=false
2. Check if all pods are in a Running state:
.. code-block:: shell
kubectl -n micro-onos get pods
This should print a table like the one below:
.. code-block:: shell
NAME READY STATUS RESTARTS AGE
aether-roc-api-df499d585-srf4c 2/2 Running 0 3m36s
aether-roc-gui-799d57456-smx6r 1/1 Running 0 3m36s
aether-roc-umbrella-grafana-55cccb986c-t47gz 1/1 Running 0 3m37s
aether-roc-umbrella-prometheus-alertmanager-694c449885-rk47g 2/2 Running 0 3m36s
aether-roc-umbrella-prometheus-server-59c974f84-97z5t 2/2 Running 0 3m36s
aether-roc-umbrella-sdcore-test-dummy-7f4895c59c-cv6j7 1/1 Running 0 3m36s
dex-ldap-umbrella-75bbc9d676-wfvcb 1/1 Running 0 8m36s
dex-ldap-umbrella-openldap-fc47667c8-9s7q4 1/1 Running 0 8m36s
dex-ldap-umbrella-phpldapadmin-b899f9966-rzwkr 1/1 Running 0 8m36s
onos-cli-846d9c8df6-kf2xk 1/1 Running 0 3m37s
onos-config-5568487f84-dwfs8 5/5 Running 0 3m37s
onos-consensus-store-1-0 1/1 Running 0 3m35s
onos-topo-56b687f77b-vb2sx 3/3 Running 0 3m36s
sdcore-adapter-v3-56667fd848-g7dh2 2/2 Running 0 3m37s
3. Once all pods are in a Running state, port-forward to port 8183 to access the ROC GUI:
.. code-block:: shell
kubectl -n micro-onos port-forward $(kubectl -n micro-onos get pods -l type=arg -o name) 8183:80
3. Port-forward to port 8181 to access the ROC API (which is necessary for some test cases):
.. code-block:: shell
kubectl -n micro-onos port-forward $(kubectl -n micro-onos get pods -l type=api -o name) 8181
3. Finally, port-forward the Dex service to port 5556:
.. code-block:: shell
DEX_POD_NAME=$(kubectl -n micro-onos get pods -l "app.kubernetes.io/name=dex,app.kubernetes.io/instance=dex-ldap-umbrella" -o jsonpath="{.items[0].metadata.name}") &&
kubectl -n micro-onos port-forward $DEX_POD_NAME 5556:5556
Now that we have access to the ROC API and GUI, we can proceed with running the ROC GUI tests from the
``aether-system-tests`` repository:
1. Checkout the aether-system-tests repo:
.. code-block:: shell
git clone "ssh://$GIT_USER@gerrit.opencord.org:29418/aether-system-tests"
2. Go to the repo directory:
.. code-block:: shell
cd aether-system-tests
3. Install the requirements and create a virtual environment:
.. code-block:: shell
make ast-venv
source ast-venv/bin/activate
4. Go to the ``roc`` folder and generate the ROC GUI test files:
.. code-block:: shell
cd roc
python tests/gui/codegen/tests_generator.py \
--models=variables/3_0_0_model_list.json \
--template=tests/gui/codegen/templates/tests_template.robot.tmpl \
--target_directory=tests/gui
5. Go to the directory that contains the test files:
.. code-block:: shell
cd tests/gui/3_0_0
6. Create a folder for the logs and the output files from the tests:
.. code-block:: shell
mkdir results
7. Run any Robot Framework test file from the ``3_0_0`` directory. Each test
file corresponds to one of the Aether 3.0.0 models.
.. code-block:: shell
robot -d results <model-name>.robot
This will generate test reports and logs in the ``results`` directory.