Added the possibility to set the custom MTU for the VMs

If "default" is set, the MTU will be set automatically
from the newly created SPT internal networks. The default
value in the networks comes from the Neutron configuration.
In case users want to test the bandwidth with some
specific custom MTU, they can set the value in integer or
string formates like 8950.

This possibility saves the time for QAs in case they want
to test the bandwidth with some specific MTU at VMs. This
also helps when the default Neutron MTU seems to be not
correct and QA needs to verify the bandwidth with some new
value.

Change-Id: I0f93b33c4f530b95a5dc214c02cfb3a9ddbd182b
3 files changed
tree: a60bf8a81a9e283e3fe676431cf12047aa3be211
  1. fixtures/
  2. tests/
  3. utils/
  4. .gitignore
  5. .gitreview
  6. __init__.py
  7. conftest.py
  8. global_config.yaml
  9. pytest.ini
  10. README.md
  11. requirements.txt
README.md

mos-spt

Requirements


At least Python 3.6 is required for the tests.

Installation


cd mos-spt/
virtualenv .venv
. .venv/bin/activate
pip install -r requirements.txt

Configuration


Open global_config.yaml file to override the settings, or export the environment variables.

Settings


The following options can be set in global_config.yaml file, or by exporting the environment variables.

  • test_glance allows next overrides:
Environment VariableDefaultDescription
IMAGE_SIZE_MB9000Specific image size (in MB) to upload/download at Glance
  • test_vm2vm allows next overrides:
Environment VariableDefaultDescription
flavor_namespt-testFlavor name
flavor_ram1536To define RAM allocation for specific flavor, MB
flavor_vcpus1To define a count of vCPU for flavor
flavor_disk5To define a count of disks on flavor, GB
image_nameUbuntu-18.04Cloud Ubuntu image to create VMs
CMP_HOSTS""Pair of compute hosts to create VMs at different hosts. By default, some random pair from nova compute list will be selected. To set some pair, set CMP_HOSTS: ["cmp001", "cmp002"] in global_config.yaml file, or export CMP_HOSTS="cmp001,cmp002".
skipped_nodes""Skip some compute hosts, so they are not selected at CMP_HOSTS pair. To set some nodes to skip, set skipped_nodes: ["cmp003"] in global_config.yaml file, or export skipped_nodes="cmp003".
nova_timeout300Timeout to VM to be ACTIVE, seconds.
external_networkpublicExternal network name to allocate the Floating IPs
custom_mtudefaultThe MTU to set at the VMs. If "default" is set, the MTU will be set automatically from the newly created SPT internal networks. The default value in the networks comes from the Neutron configuration. In case you want to test the bandwidth with some specific custom MTU, set the value like 8950.
ssh_timeout500Timeout to VM to be reachable via SSH, seconds.
iperf_prep_string"sudo /bin/bash -c 'echo "91.189.88.161 archive.ubuntu.com" >> /etc/hosts'"Preparation string to set ubuntu repository host in /etc/hosts of VMs
internet_at_vms'true'In case True, the Internet is present at VMs, and the tests are able to install iperf3 by apt update; apt install iperf3. In case VMs have no Internet, set 'false' and the iperf3 will be installed from offline *.deb packages.
iperf_deb_package_dir_path/opt/packages/Path to the local directory where the iperf3 *.deb packages are present. In the toolset offline images they are located at /opt/packages. Or you can download iperf3 deb package and its dependencies and put them at some custom folder.
iperf_time60iperf3 -t option value: time in seconds to transmit for (iperf -t option).

In case internet_at_vms=false, please make sure that iperf_deb_package_dir_path is set correctly and has iperf3 deb package and its dependencies.

Executing tests


Run tests:

pytest -sv --tb=short tests/

In case the test is skipped and you want to know the reason, use python -rs option:

pytest -rs --tb=short tests/

Enable logging


In case something went wrong, use -o log_cli=true option to see detailed logs:

pytest -sv --tb=short -o log_cli=true tests/

By default, the log level is INFO log_cli_level=info. In case you want to go deeper for the API requests (with URIs, payloads, etc), set cli_level=debug in pytest.ini file.