[ONOS-7408] Refactor HA suite to be able to run with trellis

- Better support for dual homed hosts
- Support parsing more types of flows from OVS of1.3 tables
- More specific error handling in Mininet driver
- Only check attachment points if that mapping is provided
- Minor refactoring of link up/down argument names for consistency
- Use list of hosts/switches in mn instead of hard coded ranges
- Add .params.fabric for testing with fabric
- Add .params.intents for testing with intents, classic/default version
  of the tests
- Add support for setting karaf log levels after startup
- Fix malformed command in cell file if no OCN is supplied
- Add back CFG for the ECFlowRuleStore now that it is the default impl
- Check Network config after connecting mininet

TODO:
- Set log levels in ONOS service files so we can set logging during startup
- Make sure we process all treatments in flows. eg drop and
  clear_treatment
- Does the topology come up the same each time?
    - same port numbers, etc...
- Jenkinsfiles
    - use .params.fabric for HA fabric tests

Notes:
- Uses Topology and config from the SegmentRouting tests

Change-Id: I08f08ba1d3d18f710f63a45b28ac3a2868a1a5cf
54 files changed
tree: 5d37851aa03360ed22d8afaf285badc5b35c645e
  1. .gitignore
  2. .gitreview
  3. DELTA/
  4. README.md
  5. Robot/
  6. TestON/
README.md

TestON: Testing Infastructure by Paxterra and Open Networking Foundation

TestON is the testing platform that all the ONOS tests are being run on currently.

Visit the ONOS System Testing Guide on the ONOS Wiki for details about the repo, and our TestON Contribution Guide for how to contribute.

Quick Setup

  1. Clone OnosSystemTest from ONOS Gerrit:

    $ git clone https://gerrit.onosproject.org/OnosSystemTest
    
  2. Run the installation script:

    $ cd OnosSystemTest/TestON
    $ ./install.sh
    

Dependencies

  • ONOS - The system being tested.

  • Mininet - A Network Emulator. NOTE: Some driver functions rely on a modified version of Mininet. These functions are noted in the Mininet driver file. Here's how to checkout this branch from the Mininet folder:

    $ git remote add jhall11 https://github.com/jhall11/mininet.git
    $ git fetch jhall11
    $ git checkout -b dynamic_topo remotes/jhall11/dynamic_topo
    $ git pull
    

    Note that you may need to run sudo make develop if your mnexec.c file changed when switching branches.

  • Linc-OE - Some testcases use this to emulate optical devices.

    Requirements:

    1. Erlang R15B, R16B, R17 - if possible please use R17
    $ sudo apt-get install erlang
    
    1. libpcap-dev package if eth interfaces will be used
    $ sudo apt-get install libpcap-dev
    

    Building and Running:

    $ git clone https://github.com/shivarammysore/LINC-Switch.git linc-oe
    $ cd linc-oe
    $ git checkout tags/oe-0.3
    $ cp rel/files/sys.config.orig rel/files/sys.config
    $ make rel
    

Tests

The tests are all located in TestON/tests/. Each test has its own folder with the following files:

  • .py file:

    • This defines the cases and sequence of events for the test.
  • .topo file:

    • This defines all the components that TestON creates for that test and includes data such as IP address, login info, and device drivers.

    • The components must be defined in this file to be used in the .py files.

  • .params file:

    • Defines all the test-specific variables that are used by the test.

    • NOTE: The variable testcases defines which testcases are run.

Running TestON

  1. TestON must be run from its bin directory:

    $ cd TestON/bin
    
  2. To run a test:

    $ ./cli.py run SAMPstartTemplate_1node
    

Code Style

At Open Networking Foundation, we have adopted the Mininet Python Style formatting for our drivers and testcases. The one exception is that TestON does not correctly parse multiline comments in testcases when the ending triple double quotes are on the same line as the comment. Therefore, in the testcases, the ending triple double quotes must be on it's own line.

Troubleshooting

  • Double check the topo file for that specific test the nodes must be able to run that specific component (Mininet IP is targetting the machine with Mininet installed).

  • Enable passwordless logins between your nodes and the TestON node.

  • Visit our FAQ/Troubleshooting page on the ONOS Wiki.