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).

Additionally, it is necessary to add the SD-RAN chart repo with the following command:

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:

helm -n micro-onos install aether-roc-umbrella aether/aether-roc-umbrella
  1. Check if all pods are in a Running state:

kubectl -n micro-onos get pods

This should print a table like the one below:

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
  1. Once all pods are in a Running state, port-forward to port 8181 with the following command:

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:

git clone "ssh://$GIT_USER@gerrit.opencord.org:29418/aether-system-tests"
  1. Go to the repo directory:

cd aether-system-tests
  1. Install the requirements and create a virtual environment:

make ast-venv
source ast-venv/bin/activate
  1. Go to the roc folder and generate the ROC API test framework and test files:

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
  1. Go to the directory that contains the test files:

cd tests/api/3_0_0
  1. Create a folder for the logs and the output files from the tests:

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.

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.

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:

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
  1. Check if all pods are in a Running state:

kubectl -n micro-onos get pods

This should print a table like the one below:

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
  1. Once all pods are in a Running state, port-forward to port 8183 to access the ROC GUI:

kubectl -n micro-onos port-forward $(kubectl -n micro-onos get pods -l type=arg -o name) 8183:80
  1. Port-forward to port 8181 to access the ROC API (which is necessary for some test cases):

kubectl -n micro-onos port-forward $(kubectl -n micro-onos get pods -l type=api -o name) 8181
  1. Finally, port-forward the Dex service to port 5556:

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:

git clone "ssh://$GIT_USER@gerrit.opencord.org:29418/aether-system-tests"
  1. Go to the repo directory:

cd aether-system-tests
  1. Install the requirements and create a virtual environment:

make ast-venv
source ast-venv/bin/activate
  1. Go to the roc folder and generate the ROC GUI test files:

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
  1. Go to the directory that contains the test files:

cd tests/gui/3_0_0
  1. Create a folder for the logs and the output files from the tests:

mkdir results
  1. 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.

robot -d results <model-name>.robot

This will generate test reports and logs in the results directory.