Overview
---
Utility scripts for automated FIO tests of virtual machines.
Virtualization is done using QEMU software.

Requirements
---
- 'fio' and 'perf' packages must be installed in order for tests to run
- Installed fio version must be the same as fio installed on qemu guest
  systems. Another solution is to provide the path to a FIO binary
  in arguments for testing scripts. If fio versions are different tests will not run.
- All dependency packages for building QEMU.
- QEMU source package. By default it is expected to be in the "qemu" directory in the
  root dir of the main spdk directory.
- a qemu-compatible VM image.
- RSA key for VM SSH access in $HOME/.ssh/spdk_vhost_id_rsa or in a different
  directory specified by $SPDK_VHOST_SSH_KEY_FILE global variable.

Files:
---
common.sh
	Header file to be included in other files.

autotest.sh
	Script to perform automated fio test with given number of virtual machines
	and given scenario type (virtio / kernel vhost / spdk vhost).
	Can run an end-to-end test or with "--dry-run" option can just enable
	virtual machines and leave them for user's manual tests.

run_vhost.sh
	Run single instance of vhost application. Useful during development.
	See 'run_vhost.sh --help'

run_fio.py
	Script used to run fio utility on group of virtual machines
	using default configuration or with parameters specified for
	autotest.sh execution.
	Script can also be executed with manually input parameters, resulting
	in launching multiple fio jobs which are then combinations of all
	parameters.
	See 'python run_fio.py --help'

vm_setup.sh
	Utility script used to create a virtual machine
	with spcified disk/block device and cache type for tests.
	Useful during development.
	See 'vm_setup.sh --help'

vm_run.sh
	Utility script used to enable selected virtual machines.
	Can enable all or specific virtual machines from  directory.
	Before running this script make sure that there was at least 1
	virtual machine created using vm_setup.sh script.
	Useful during development.
	See 'vm_run.sh --help'

vm_shutdown.sh
	Utility script used to shut down all or specific virtual machines
	if any remain active after test run.
	Useful during development.
	See 'vm_shutdown.sh --help'

vm_ssh.sh
	Utility script used to connect to specific virtual machine via ssh.
	Useful during development.
	See 'vm_ssh.sh --help'

Examples:
---

--- Example 1, simple run:

In spdk directory execute:
./test/vhost/autotest.sh --vm=0,<path to VM image>,<device> --fio-bin=<path to fio bin>

<device> 				- backend used for testing, e.g. Malloc0, Nvme0n1...
<path to fio bin> 		- path to FIO binary

This runs tests for 1 VM using spdk vhost.
By default all jobs defined in test/vhost/fiotest/fio_jobs/ are executed sequentially.

--- Example 2, multiple VMs:

./test/vhost/autotest.sh --vm=0,<path to VM image>,<device> --vm=1,<path to VM image 2>,<device 2>
Same configuration as Example 1 but fio runs in parallel on 2 VMs
