V1 - Deploy Voltha and Verify its Vital Signs

Test Objective

  • Purpose of this test is to launch Voltha together with all of its dependencies and verify that all are in working condition,

Test Configuration

  • This test setup requires only the test server and it should have been prepared as described in the preparation section.
  • Voltha has not been running yet (will verify it in the process)
  • Test server has been prepared as above

Test Procedure

  • Login to the test server with standard user credentials
  • Navigate to the Voltha installation directory. For example:
cd cord/incubator/voltha
  • Source the environment:
source env.sh
  • Verify that no docker containers are running on the server:
docker ps -a

This shall show only a title line, but no containers. If any containers are running, you can terminate them as follows:

docker ps -a | grep -v CONT | awk '{print $1}' | xargs docker rm -f
  • Launch Voltha and it companion containers (the "test deployment ensemble")using docker-compose in the background:
docker-compose -f compose/docker-compose-system-test.yml up -d

Note: The expected outcome is show below. Order is not important.

Creating compose_fluentd_1
Creating compose_consul_1
Creating compose_registrator_1
Creating compose_voltha_1
Creating compose_ofagent_1
Creating compose_chameleon_1
Creating compose_netconf_1
Creating compose_zookeeper_1
Creating compose_kafka_1
Creating compose_grafana_1
Creating compose_shovel_1

Note: We need to make sure the ponmgmt bridge can forward multicast mac addresses

echo 8 > /sys/class/net/ponmgmt/bridge/group_fwd_mask

Pass/Fail Criteria (Installation Checkpoint)

  • The installation steps to this point should complete without errors.
  • Please check that docker-compose shows all containers as running. In the same Linux terminal, please issue the following command:
docker-compose -f compose/docker-compose-system-test.yml ps

This shall list all containers being in the "Up" state. Expected output (lines are truncated omitting the long port mapping information):

          Name                       Command               State         ...
-------------------------------------------------------------------------...
compose_chameleon_1     /chameleon/chameleon/main. ...   Up      0.0.0.0:...
compose_consul_1        docker-entrypoint.sh agent ...   Up      0.0.0.0:...
compose_fluentd_1       /bin/sh -c exec fluentd -c ...   Up      0.0.0.0:...
compose_grafana_1       /usr/bin/supervisord             Up      0.0.0.0:...
compose_kafka_1         start-kafka.sh                   Up      0.0.0.0:...
compose_netconf_1       /netconf/netconf/main.py - ...   Up      0.0.0.0:...
compose_ofagent_1       /ofagent/ofagent/main.py - ...   Up
compose_registrator_1   /bin/registrator -ip=10.0. ...   Up
compose_shovel_1        /shovel/shovel/main.py --k ...   Up
compose_voltha_1        /voltha/voltha/main.py -v  ...   Up      0.0.0.0:...
compose_zookeeper_1     /bin/sh -c /usr/sbin/sshd  ...   Up      0.0.0.0:...

Shovel is known to have some startup race condition issues. If it is shown in the "Exited" state, a single attempt can be made to restart it, after which it should be healthy. To restart it, execute:

docker-compose -f compose/docker-compose-system-test.yml scale shovel=1

and repeat the above "ps" command to view the ensemble state:

docker-compose -f compose/docker-compose-system-test.yml ps
  • Point a Web Browser to the Consul UI to verify that all components are properly registered.

Point your browser to <http://:8500/ui> using the actual IP address or valid DNS name of your Voltha server. The expected view is similar to the following:

Consul services view

Here every single exposed service end-point is shown (some components expose multiple end-points, while others expose no public endpoints).

Clicking on any of the items reveal further information like the specific IP address(es) and port number(s) for the service.