# 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 and all VirtIO interfaces will be named virtio. 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/vm/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/vm/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 configured before starting the VM when using Vhost-user interfaces.