Update Qemu library
[csit.git] / docs / qemu_vpp_vm
diff --git a/docs/qemu_vpp_vm b/docs/qemu_vpp_vm
new file mode 100644 (file)
index 0000000..4b47f90
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+QEMU is used for VPP-VM testing enviroment. You need to run qemu-2.2.1 or newer
+in order to Vhos-user support. In CSIT VIRL setup DUT has preinstalled QEMU and
+have small VM image "/var/lib/vm/vhost-nested.img". QEMU binary path must
+be "/opt/qemu/bin/qemu-system-x86_64". You can use following script to replicate
+QEMU setup on DUT "resources/libraries/bash/qemu_build.sh" for local testing,
+out of LF's VM setup. VM image must have installed at least qemu-guest-agent,
+sshd, bridge-utils and VirtIO support. Note that VPP must be installed before
+starting QEMU, because VPP will do the hugepages configuration as part of it's
+installation process. Username/password for the VM must be cisco/cisco and
+NOPASSWD sudo access. The interface naming is based on driver (management
+interface type is Intel E1000), all E1000 interfaces will be named mgmt<n> and
+all VirtIO interfaces will be named virtio<n>. In VM
+"/etc/init.d/qemu-guest-agent" you must set "TRANSPORT=isa-serial:/dev/ttyS1"
+because ttyS0 is used by serial console and ttyS1 is dedicated for
+qemu-guest-agent in QEMU setup.
+There is python library for QEMU setup, start and some utilities
+"resources/libraries/python/QemuUtils.py" and keyword "Stop and Clear QEMU" for
+teardown in resources/libraries/robot/qemu.robot. "Qemu Start" setup one
+management interface by default. You can add Vhost-user interfaces by
+"Qemu Add Vhost User If" keyword.
+Example usage in robot framework test:
+
+*** Settings ***
+| Resource | resources/libraries/robot/qemu.robot
+
+*** Test Cases ***
+| VM test
+| | [Tags] | VPP_VM_ENV
+| | Qemu Set Node | ${nodes['DUT1']}
+| | Qemu Add Vhost User If | /tmp/vhost_sock
+| | ${vm}= | Set Variable | ${None}
+| | ${vm}= | Qemu Start
+| | [Teardown] | Stop and Clear QEMU | ${dut1} | ${vm}
+
+Note that VPP must be started and cofigured before starting the VM when using
+Vhost-user interfaces.