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:
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
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
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:
Checkout the aether-system-tests repo:
git clone "ssh://$GIT_USER@gerrit.opencord.org:29418/aether-system-tests"
Go to the repo directory:
cd aether-system-tests
Install the requirements and create a virtual environment:
make ast-venv
source ast-venv/bin/activate
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
Go to the directory that contains the test files:
cd tests/api/3_0_0
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:
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
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
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
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
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:
Checkout the aether-system-tests repo:
git clone "ssh://$GIT_USER@gerrit.opencord.org:29418/aether-system-tests"
Go to the repo directory:
cd aether-system-tests
Install the requirements and create a virtual environment:
make ast-venv
source ast-venv/bin/activate
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
Go to the directory that contains the test files:
cd tests/gui/3_0_0
Create a folder for the logs and the output files from the tests:
mkdir results
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.