...
The generated documentation is also wrapped into a gzipped tar archive and placed under /tmp with the naming convention onos-apidocs-<onos-version>.<user>.tar.gz.
Test Environment Setup
Testing a distributed platform like ONOS can become a cumbersome task. ONOS, being an SDN controller authored in Java, can run on a variety of platforms. However, in the interest of focus, the project engages primarily in testing on Ubuntu server distributions, specifically Ubuntu Server 14.04* LTS 64-bit, using the Oracle Java 8 JRE.
in order to simplify testing and to make it more repeatable, a number of assets, including the aforementioned ONOS scripts, have been developed to make the developer’s and tester’s lives easier. These are located under onos/tools/test/, and Appendix A of this Guide provides a listing of available utilities.
Overview
An ONOS developer's environment may include the following:
- Development/build machine : for actual code development e.g. running the IDE and building/packaging/deploying ONOS.
- One or more test deployment VMs : for running ONOS instances
- A Mininet VM : for emulating networks to test with ONOS
In the above case, the ONOS scripts are run from the development machine, and are directed towards VMs running on a hypervisor (which can also be on the same machine, or elsewhere). Since a developer may want to test different scenarios against different sets of VMs or servers, ONOS provides the notion of test cells.
Test Cells
A test cell refers to a specific controller cluster environment designated for testing. This can mean a set of bare-metal servers, or a set of VMs running on developer’s laptop. Cell definition files are bash snippets that export a few environment variables into the developer’s (or tester’s) shell. These variables are then used by a number of the ONOS test and utility scripts. This allows the scripts and test scenarios to be independent to a specific test bench setup.
Using cells
Cell definitions are loaded into the shell environment with the cell
utility. This utility takes the name of a cell definition file as the argument. For example:
Code Block | ||
---|---|---|
| ||
$ cell local
ONOS_CELL=local
OCI=192.168.56.101
OC1=192.168.56.101
OC2=192.168.56.102
OCN=192.168.56.103
ONOS_FEATURES=webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-gui,onos-rest,onos-app-fwd,onos-app-proxyarp,onos-app-tvue
ONOS_NIC=192.168.56.* |
cell
echoes back with the key environment variables understood by the ONOS scripts:
- OCI : the default target node IP. This is an alias for OC1.
- OC[1-3] : IP addresses of the VMs hosting ONOS instances. More OC instances may be set, if necessary.
- OCN : IP address of the VM with Mininet
- ONOS_FEATURES : a comma-separated list of bundle names, loaded at startup by an ONOS instance within this cell
- ONOS_NIC : The address block used amongst ONOS instances for inter-controller (clustering) and OpenFlow communication
Once a cell definition is exported, utilities such as onos
will fall back to using the value set in OCI
(192.168.56.101 for above) if not given any parameters.
The utility script cells
can be used to view all available cell definitions. Without parameters, cell
will list the values associated with the current cell in use.
Cell Definition Files
A cell definition file defines values for the aforementioned environment variables. A cell definition file may look like the following:
Code Block | ||
---|---|---|
| ||
# Default ONOS Controller VM instances 1,2,3 and a Mininet VM
export OC1="192.168.56.101"
export OC2="192.168.56.102"
export OC3="192.168.56.104"
export OCN="192.168.56.103" # Mininet VM
# for node clustering
export ONOS_NIC=”192.168.56.*”
# ONOS features to load
export ONOS_FEATURES="webconsole,onos-api,onos-core-trivial,onos-cli" |
These files are located in ONOS_ROOT/tools/test/cells/.
Creating custom cell definitions
Custom cell definition files may be added to ONOS_ROOT/tools/test/cells/, which enables them to be loaded and listed with cell
and cells.