There are two set of test cases in Voltha:
For now, this document focuses on running the integration tests only.
This section provides the high level details on how to execute the Voltha integration tests when running inside a Vagrant box. They may need to be adjusted when run in a different environment.
cd /cord/incubator/voltha . ./env.sh nosetests -s tests/itests/docutests/build_md_test.py
cd /cord/incubator/voltha . ./env.sh nosetests -s tests/itests/ofagent/test_ofagent_multicontroller_failover.py
cd /cord/incubator/voltha . ./env.sh nosetests -s tests/itests/ofagent/test_ofagent_recovery.py
cd /cord/incubator/voltha . ./env.sh make run-as-root-tests
cd /cord/incubator/voltha . ./env.sh
To run the test in the docker-compose environment:
docker-compose -f compose/docker-compose-system-test.yml up -d nosetests -s tests/itests/voltha/test_cold_activation_sequence.py
To run the test in a single-node Docker swarm environment (see document voltha/DOCKER_BUILD.md):
VOLTHA_BUILD=docker make start nosetests -s tests/itests/voltha/test_cold_activation_sequence.py --tc-file=tests/itests/env/swarm-consul.ini
To run the test in a single-node Kubernetes environment (see document voltha/BUILD.md):
./tests/itests/env/voltha-k8s-start.sh nosetests -s tests/itests/voltha/test_cold_activation_sequence.py --tc-file=tests/itests/env/k8s-consul.ini
To run the test in the docker-compose environment, first start the Voltha ensemble:
cd /cord/incubator/voltha . ./env.sh docker-compose -f compose/docker-compose-system-test.yml up -d
Then start PONSIM in a separate window:
sudo -s . ./env.sh ./ponsim/main.py -v -o 4
Run the test:
cd /cord/incubator/voltha . ./env.sh nosetests -s tests/itests/voltha/test_device_state_changes.py
To set up the test in a single-node Kubernetes environment (see document voltha/BUILD.md):
. ./env.sh ./tests/itests/env/voltha-k8s-start.sh
Refer to the Kubernetes section in document voltha/ponsim/v2/README.md to set up the node for PONSIM. To install the CNI plugin, you may enter:
kubectl apply -f k8s/genie-cni-1.8.yml
To run the test:
nosetests -s tests/itests/voltha/test_device_state_changes.py --tc-file=tests/itests/env/k8s-consul.ini
During this test, the user will be prompted to start ponsim. Use these commands to run ponsim with 1 OLT and 4 ONUs. This will also enable alarm at a frequency of 5 seconds:
sudo -s . ./env.sh ./ponsim/main.py -v -o 4 -a -f 5
The user will also be prompted to enable port forwarding on ponmgmt bridge. Use these commands:
sudo -s echo 8 > /sys/class/net/ponmgmt/bridge/group_fwd_mask
Run the test:
cd /cord/incubator/voltha . ./env.sh nosetests -s tests/itests/voltha/test_persistence.py
cd /cord/incubator/voltha . ./env.sh
To run the test in the docker-compose environment:
docker-compose -f compose/docker-compose-system-test.yml up -d nosetests -s tests/itests/voltha/test_voltha_rest_apis.py
To run the test in a single-node Docker swarm environment (see document voltha/DOCKER_BUILD.md):
VOLTHA_BUILD=docker make start nosetests -s tests/itests/voltha/test_voltha_rest_apis.py --tc-file=tests/itests/env/swarm-consul.ini
To run the test in a single-node Kubernetes environment (see document voltha/BUILD.md):
./tests/itests/env/voltha-k8s-start.sh nosetests -s tests/itests/voltha/test_voltha_rest_apis.py --tc-file=tests/itests/env/k8s-consul.ini
The test will first verify that the kafka alarm topic exists. It will then create a simulated_olt device and verify that alarms are generated by the device.
To run the test in the docker-compose environment, start the Voltha ensemble and then execute the test:
cd /cord/incubator/voltha . ./env.sh docker-compose -f compose/docker-compose-system-test.yml down docker-compose -f compose/docker-compose-system-test.yml up -d nosetests -s tests/itests/voltha/test_voltha_alarm_events.py
To run the test in a single-node Kubernetes environment (see document voltha/BUILD.md), start the Voltha ensemble:
./tests/itests/env/voltha-k8s-stop.sh ./tests/itests/env/voltha-k8s-start.sh
Wait until all the Voltha pods are in the Running state and take note of Kafka's pod IP address. Enter the following line into the /etc/hosts file:
<kafka-pod-IP-address> kafka-0.kafka.voltha.svc.cluster.local
The test invokes the kafkacat client which complains that it can't resolve kafka-0.kafka.voltha.svc.cluster.local. This domain name is only accessible from within pods deployed to the Kubernetes cluster. The test, however, runs outside the cluster. There may be another solution to this problem, but for now, this may have to do. Once the test is fully automated, /etc/hosts can be modified by the test itself.
To run the test:
nosetests -s tests/itests/voltha/test_voltha_alarm_events.py --tc-file=tests/itests/env/k8s-consul.ini
The test will first verify that the kafka alarm topic exists. It will then create two devices along with a filter against one of the devices. The test will validate that alarms are received for the unfiltered device and alarms will be suppressed for the filtered device.
To run the test in the docker-compose environment, start the Voltha ensemble and then execute the test:
cd /cord/incubator/voltha . ./env.sh docker-compose -f compose/docker-compose-system-test.yml down docker-compose -f compose/docker-compose-system-test.yml up -d nosetests -s tests/itests/voltha/test_voltha_alarm_filters.py
To run the test in a single-node Kubernetes environment (see document voltha/BUILD.md), start the Voltha ensemble:
./tests/itests/env/voltha-k8s-stop.sh ./tests/itests/env/voltha-k8s-start.sh
Wait until all the Voltha pods are in the Running state and take note of Kafka's pod IP address (See description for Voltha_alarm_events test). Enter the following line into the /etc/hosts file:
<kafka-pod-IP-address> kafka-0.kafka.voltha.svc.cluster.local
To run the test:
nosetests -s tests/itests/voltha/test_voltha_alarm_filters.py --tc-file=tests/itests/env/k8s-consul.ini
To run the test in the docker-compose environment:
cd /cord/incubator/voltha . ./env.sh nosetests -s tests/itests/voltha/test_dispatcher.py
During the test, the user will be prompted to start ponsim. Use these commands to run ponsim with 1 OLT and 4 ONUs.
sudo -s . ./env.sh ./ponsim/main.py -v -o 4
The user will also be prompted to enable port forwarding on ponmgmt bridge. Use these commands:
sudo -s echo 8 > /sys/class/net/ponmgmt/bridge/group_fwd_mask
To run the test in Kubernetes, set up a single-node environment by following document voltha/BUILD.md. The test is fully automated; simply execute:
nosetests -s tests/itests/voltha/test_dispatcher.py --tc-file=tests/itests/env/k8s-consul.ini
First start the Voltha ensemble:
cd /cord/incubator/voltha . ./env.sh docker-compose -f compose/docker-compose-system-test.yml up -d
Then start PONSIM in a separate window:
sudo -s cd /cord/incubator/voltha . ./env.sh ./ponsim/main.py -v
Now Run the test in the first window:
nosetests -s tests/itests/voltha/test_voltha_xpon.py