This test is designed to verify that an ONOS cluster behaves correctly when some
ONOS nodes are upgrade. Then test will initilize the upgrade then stop, upgrade,
and restart a minority of the nodes in the cluster. Then we will start the first
phase of the upgrade process to transfer to the new version. Then we will upgrade
and restart the rest of the cluster. After that the test will verify everything
works and commit the upgrade.

As written, the test only supports an ONOS cluster of 3, 5, or 7 nodes.
This is because the test doesn't apply to a single node cluster and ONOS clusters
should be deployed in odd numbers.

The gerneral structure for the test:
- Startup
- Assign switches
- Verify ONOS state and functionality
    - Device mastership
    - Intents
    - Leadership election
    - Distributed Primitives
- Initialize an upgrade
- Upgrade some ONOS nodes
- Verify ONOS state and functionality
- Transfer to new version
- Upgrade the rest of the nodes
- Verify ONOS state and functionality
- Commit the upgrade
- Dataplane failures
    - link down and up
    - switch down and up
