aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/bash/config/config7
-rw-r--r--resources/libraries/bash/config/defaults7
-rwxr-xr-xresources/libraries/bash/qemu_build.sh86
-rw-r--r--resources/libraries/bash/shell/qemu_utils.sh38
-rw-r--r--resources/libraries/python/QemuUtils.py4
-rw-r--r--resources/libraries/robot/performance/performance_configuration.robot227
6 files changed, 195 insertions, 174 deletions
diff --git a/resources/libraries/bash/config/config b/resources/libraries/bash/config/config
index 2b71edcc49..42f23bdaf8 100644
--- a/resources/libraries/bash/config/config
+++ b/resources/libraries/bash/config/config
@@ -1,5 +1,8 @@
-QEMU_INSTALL_DIR=/opt
+QEMU_INSTALL_DIR=/opt/qemu-2.5.0
QEMU_INSTALL_VERSION=qemu-2.5.0
+QEMU_PATCH=false
+QEMU_FORCE_INSTALL=false
+QEMU_TARGET_LIST=x86_64-softmmu
DPDK_INSTALL_DIR=/opt
-DPDK_INSTALL_VERSION=dpdk-17.11 \ No newline at end of file
+DPDK_INSTALL_VERSION=dpdk-17.11
diff --git a/resources/libraries/bash/config/defaults b/resources/libraries/bash/config/defaults
index 1547452982..a70add12b1 100644
--- a/resources/libraries/bash/config/defaults
+++ b/resources/libraries/bash/config/defaults
@@ -2,11 +2,14 @@
typeset -A cfg
cfg=( # set default values in config array
- [QEMU_INSTALL_DIR]="/opt"
+ [QEMU_INSTALL_DIR]="/opt/qemu-2.5.0"
[QEMU_INSTALL_VERSION]="qemu-2.5.0"
+ [QEMU_PATCH]=false
+ [QEMU_FORCE_INSTALL]=false
+ [QEMU_TARGET_LIST]=x86_64-softmmu
[DPDK_INSTALL_DIR]=/opt
[DPDK_INSTALL_VERSION]=dpdk-17.11
[K8S_CALICO]="${SCRIPT_DIR}/../../templates/kubernetes/calico_v2.6.3.yaml"
[K8S_CONTIV_VPP]="https://raw.githubusercontent.com/contiv/vpp/master/k8s/contiv-vpp.yaml"
[K8S_CSIT]="${SCRIPT_DIR}/../../templates/kubernetes/csit.yaml"
-) \ No newline at end of file
+)
diff --git a/resources/libraries/bash/qemu_build.sh b/resources/libraries/bash/qemu_build.sh
index 57520a9b5e..4638ec1bcb 100755
--- a/resources/libraries/bash/qemu_build.sh
+++ b/resources/libraries/bash/qemu_build.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2018 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:
@@ -12,81 +12,47 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-QEMU_VERSION="qemu-2.5.0"
-QEMU_DOWNLOAD_REPO="http://download.qemu-project.org/"
-QEMU_DOWNLOAD_PACKAGE="${QEMU_VERSION}.tar.xz"
-QEMU_PACKAGE_URL="${QEMU_DOWNLOAD_REPO}${QEMU_DOWNLOAD_PACKAGE}"
-QEMU_INSTALL_DIR="/opt/${QEMU_VERSION}"
+set -x
+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-TARGET_LIST="x86_64-softmmu"
+# Include
+source ${SCRIPT_DIR}/config/defaults
+source ${SCRIPT_DIR}/shell/qemu_utils.sh
+
+# Read configuration
+while read line
+do
+ if echo $line | grep -F = &>/dev/null
+ then
+ varname=$(echo "$line" | cut -d '=' -f 1)
+ cfg[$varname]=$(echo "$line" | cut -d '=' -f 2-)
+ fi
+done < ${SCRIPT_DIR}/config/config
+
+# Read parameters
for i in "$@"; do
case $i in
--version=*)
- QEMU_VERSION="${i#*=}"
+ cfg['QEMU_INSTALL_VERSION']="${i#*=}"
shift ;;
--directory=*)
- QEMU_INSTALL_DIR="${i#*=}"
+ cfg['QEMU_INSTALL_DIR']="${i#*=}"
shift ;;
--patch)
- PATCH=1
+ cfg['QEMU_PATCH']=true
shift ;;
--force)
- FORCE=1
+ cfg['QEMU_FORCE_INSTALL']=true
shift ;;
--target-list)
- TARGET_LIST="${i#*=}"
+ cfg['QEMU_TARGET_LIST']="${i#*=}"
shift ;;
*)
;;
esac
done
-if test "$(id -u)" -ne 0
-then
- echo "Please use root or sudo to be able to install into: ${QEMU_INSTALL_DIR}"
- exit 1
-fi
-
-WORKING_DIR=$(mktemp -d) || \
- { echo "Failed to create temporary working dir"; exit 1; }
-trap "rm -r ${WORKING_DIR}" EXIT
-
-if [ $FORCE ]
-then
- rm -rf ${QEMU_INSTALL_DIR}
-else
- test -d ${QEMU_INSTALL_DIR} && \
- { echo "Qemu already installed: ${QEMU_INSTALL_DIR}"; exit 0; }
-fi
-
-# Download QEMU source code if no local copy exists
-if [ ! -f /opt/${QEMU_DOWNLOAD_PACKAGE} ]; then
- wget -P /opt -q ${QEMU_PACKAGE_URL} || \
- { echo "Failed to download ${QEMU_VERSION}"; exit 1; }
-fi
-
-# Extract archive into temp directory
-tar --strip-components 1 -xf /opt/${QEMU_DOWNLOAD_PACKAGE} -C ${WORKING_DIR} || \
- { echo "Failed to extract ${QEMU_VERSION}.tar.xz"; exit 1; }
-
-cd ${WORKING_DIR}
-mkdir ${QEMU_INSTALL_DIR} || \
- { echo "Failed to create ${QEMU_INSTALL_DIR}"; exit 1; }
-
-# Apply additional patches
-if [ $PATCH ]
-then
- chmod +x ${SCRIPT_DIR}/qemu_patches/${QEMU_VERSION}/*
- run-parts --verbose --report ${SCRIPT_DIR}/qemu_patches/${QEMU_VERSION}
-fi
-
-# Build
-./configure --target-list=${TARGET_LIST} --prefix=${QEMU_INSTALL_DIR} || \
- { echo "Failed to configure ${QEMU_VERSION}"; exit 1; }
-make -j`nproc` || \
- { echo "Failed to compile ${QEMU_VERSION}"; exit 1; }
-make install || \
- { echo "Failed to install ${QEMU_VERSION}"; exit 1; }
-
-echo QEMU ${QEMU_VERSION} ready
+# Install qemu
+qemu_utils.qemu_install ${cfg[QEMU_INSTALL_DIR]} ${cfg[QEMU_INSTALL_VERSION]} \
+ ${cfg[QEMU_PATCH]} ${cfg[QEMU_FORCE_INSTALL]} ${cfg[QEMU_TARGET_LIST]}
diff --git a/resources/libraries/bash/shell/qemu_utils.sh b/resources/libraries/bash/shell/qemu_utils.sh
index 510d9f2838..cabf93d978 100644
--- a/resources/libraries/bash/shell/qemu_utils.sh
+++ b/resources/libraries/bash/shell/qemu_utils.sh
@@ -15,47 +15,47 @@
function qemu_utils.qemu_delete {
# Deletes the QEMU directory
# QEMU install directory
- qemu_install_dir=$1
- # QEMU install version
- qemu_install_ver=$2
+ local qemu_install_dir=$1
- [ -d ${qemu_install_dir}/${qemu_install_ver} ] && \
- sudo rm -r ${qemu_install_dir}/${qemu_install_ver} && \
- echo "${qemu_install_dir}/${qemu_install_ver} removed"
+ [ -d ${qemu_install_dir} ] && \
+ sudo rm -r ${qemu_install_dir} && \
+ echo "${qemu_install_dir} removed"
}
function qemu_utils.qemu_install {
# Downloads and installs QEMU
# QEMU install directory
- qemu_install_dir=$1
+ local qemu_install_dir=$1
# QEMU install version
- qemu_install_ver=$2
+ local qemu_install_ver=$2
# QEMU patch
- qemu_patch=$3
+ local qemu_patch=${3:-false}
# Force install (if true then remove previous installation; default false)
- force_install=${4:-false}
+ local force_install=${4:-false}
# QEMU repo URL
- qemu_package_url="http://download.qemu-project.org/${qemu_install_ver}.tar.xz"
+ local qemu_package_url="http://download.qemu-project.org/${qemu_install_ver}.tar.xz"
+ # QEMU target arch
+ local qemu_target_list=${5:-x86_64-softmmu}
- if [ $force_install ]; then
+ if [ $force_install = true ]; then
# Cleanup QEMU dir
- qemu_utils.qemu_delete $qemu_install_dir $qemu_install_ver
+ qemu_utils.qemu_delete $qemu_install_dir
else
# Test if QEMU was installed previously
test -d $qemu_install_dir && \
{ echo "Qemu already installed: $qemu_install_dir"; exit 0; }
fi
- tmp_dir=$(mktemp -d) || \
+ local tmp_dir=$(mktemp -d) || \
{ echo "Failed to create temporary working dir"; exit 1; }
- trap "rm -r ${tmp_dir}" EXIT
+ trap "sudo rm -r ${tmp_dir}" EXIT
# Download QEMU source code if no local copy exists
if [ ! -f /opt/${qemu_install_ver}.tar.xz ]; then
sudo wget -e use_proxy=yes -P /opt -q ${qemu_package_url} || \
{ echo "Failed to download ${qemu_install_ver}"; exit 1; }
fi
- tar --strip-components 1 -xvJf ${tmp_dir}/${qemu_install_ver}.tar.xz -C ${tmp_dir} && \
+ tar --strip-components 1 -xf /opt/${qemu_install_ver}.tar.xz -C ${tmp_dir} || \
{ echo "Failed to exctract ${qemu_install_ver}.tar.xz"; exit 1; }
cd ${tmp_dir}
@@ -63,14 +63,14 @@ function qemu_utils.qemu_install {
{ echo "Failed to create ${qemu_install_dir}"; exit 1; }
# Apply additional patches
- if [ $qemu_patch ]
+ if [ $qemu_patch = true ]
then
chmod +x ${SCRIPT_DIR}/qemu_patches/${qemu_install_ver}/*
run-parts --verbose --report ${SCRIPT_DIR}/qemu_patches/${qemu_install_ver}
fi
# Build
- sudo ./configure --target-list=x86_64-softmmu --prefix=${qemu_install_dir}/${qemu_install_ver} || \
+ sudo ./configure --target-list=${qemu_target_list} --prefix=${qemu_install_dir} || \
{ echo "Failed to configure ${qemu_install_ver}"; exit 1; }
sudo make -j`nproc` || \
{ echo "Failed to compile ${qemu_install_ver}"; exit 1; }
@@ -78,4 +78,4 @@ function qemu_utils.qemu_install {
{ echo "Failed to install ${qemu_install_ver}"; exit 1; }
echo "QEMU ${qemu_install_ver} ready"
-} \ No newline at end of file
+}
diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py
index 6426394bf4..ecce4e7a8b 100644
--- a/resources/libraries/python/QemuUtils.py
+++ b/resources/libraries/python/QemuUtils.py
@@ -677,6 +677,10 @@ class QemuUtils(object):
ssh.connect(node)
directory = ' --directory={0}'.format(Constants.QEMU_INSTALL_DIR)
+ if apply_patch:
+ directory += '-patch'
+ else:
+ directory += '-base'
version = ' --version={0}'.format(Constants.QEMU_INSTALL_VERSION)
force = ' --force' if force_install else ''
patch = ' --patch' if apply_patch else ''
diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot
index 542583d1bd..e544cdd3a3 100644
--- a/resources/libraries/robot/performance/performance_configuration.robot
+++ b/resources/libraries/robot/performance/performance_configuration.robot
@@ -890,40 +890,40 @@
| | ${port_limit}= | Set Variable | ${65535}
| | ${acl}= | Set Variable | ipv4 permit
| | :FOR | ${nr} | IN RANGE | 0 | ${no_hit_aces_number}
-| | | ${src_ip_int} = | Evaluate | $src_ip_int + $ip_step
-| | | ${dst_ip_int} = | Evaluate | $dst_ip_int + $ip_step
-| | | ${sport}= | Evaluate | $sport + $port_step
-| | | ${dport}= | Evaluate | $dport + $port_step
-| | | ${ipv4_limit_reached}= | Set Variable If
-| | | ... | $src_ip_int > $ip_limit_int or $src_ip_int > $ip_limit_int
-| | | ... | ${True}
-| | | ${udp_limit_reached}= | Set Variable If
-| | | ... | $sport > $port_limit or $dport > $port_limit | ${True}
-| | | Run Keyword If | $ipv4_limit_reached is True | Log
-| | | ... | Can't do more iterations - IPv4 address limit has been reached.
-| | | ... | WARN
-| | | Run Keyword If | $udp_limit_reached is True | Log
-| | | ... | Can't do more iterations - UDP port limit has been reached.
-| | | ... | WARN
-| | | ${src_ip} = | Run Keyword If | $ipv4_limit_reached is True
-| | | ... | Set Variable | ${ip_limit}
-| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($src_ip_int))
-| | | ... | modules=ipaddress
-| | | ${dst_ip} = | Run Keyword If | $ipv4_limit_reached is True
-| | | ... | Set Variable | ${ip_limit}
-| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($dst_ip_int))
-| | | ... | modules=ipaddress
-| | | ${sport}= | Set Variable If | ${sport} > $port_limit | $port_limit
-| | | ... | ${sport}
-| | | ${dport}= | Set Variable If | ${dport} > $port_limit | $port_limit
-| | | ... | ${dport}
-| | | ${acl}= | Catenate | ${acl} | src ${src_ip}/32 dst ${dst_ip}/32
-| | | ... | sport ${sport} | dport ${dport},
-| | | Exit For Loop If
-| | | ... | $ipv4_limit_reached is True or $udp_limit_reached is True
+| | | ${src_ip_int} = | Evaluate | $src_ip_int + $ip_step
+| | | ${dst_ip_int} = | Evaluate | $dst_ip_int + $ip_step
+| | | ${sport}= | Evaluate | $sport + $port_step
+| | | ${dport}= | Evaluate | $dport + $port_step
+| | | ${ipv4_limit_reached}= | Set Variable If
+| | | ... | $src_ip_int > $ip_limit_int or $src_ip_int > $ip_limit_int
+| | | ... | ${True}
+| | | ${udp_limit_reached}= | Set Variable If
+| | | ... | $sport > $port_limit or $dport > $port_limit | ${True}
+| | | Run Keyword If | $ipv4_limit_reached is True | Log
+| | | ... | Can't do more iterations - IPv4 address limit has been reached.
+| | | ... | WARN
+| | | Run Keyword If | $udp_limit_reached is True | Log
+| | | ... | Can't do more iterations - UDP port limit has been reached.
+| | | ... | WARN
+| | | ${src_ip} = | Run Keyword If | $ipv4_limit_reached is True
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($src_ip_int))
+| | | ... | modules=ipaddress
+| | | ${dst_ip} = | Run Keyword If | $ipv4_limit_reached is True
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($dst_ip_int))
+| | | ... | modules=ipaddress
+| | | ${sport}= | Set Variable If | ${sport} > $port_limit | $port_limit
+| | | ... | ${sport}
+| | | ${dport}= | Set Variable If | ${dport} > $port_limit | $port_limit
+| | | ... | ${dport}
+| | | ${acl}= | Catenate | ${acl} | src ${src_ip}/32 dst ${dst_ip}/32
+| | | ... | sport ${sport} | dport ${dport},
+| | | Exit For Loop If
+| | | ... | $ipv4_limit_reached is True or $udp_limit_reached is True
| | ${acl}= | Catenate | ${acl}
-| | ... | ipv4 ${acl_action} src ${trex_stream1_subnet},
-| | ... | ipv4 ${acl_action} src ${trex_stream2_subnet}
+| | ... | ipv4 ${acl_action} src ${trex_stream1_subnet},
+| | ... | ipv4 ${acl_action} src ${trex_stream2_subnet}
| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
| | @{acl_list}= | Create List | ${0}
| | Run Keyword If | 'input' in $acl_apply_type and $dut_if1 is not None
@@ -1433,6 +1433,8 @@
| | ... | Type: integer
| | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node.
| | ... | Type: integer
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
| | ...
| | ... | *Example:*
| | ...
@@ -1444,7 +1446,7 @@
| | ... | \| qemu_id=${2} \|
| | ...
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6}
-| | ... | ${count}=${5} | ${qemu_id}=${1}
+| | ... | ${count}=${5} | ${qemu_id}=${1} | ${jumbo_frames}=${False}
| | ...
| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
| | ... | WITH NAME | ${vm_name}
@@ -1458,12 +1460,17 @@
| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
| | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
| | ... | ${True}
-| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
-| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | ${perf_qemu_path}= | Set Variable If | ${apply_patch}
+| | ... | ${perf_qemu_path}-patch/bin/
+| | ... | ${perf_qemu_path}-base/bin/
+| | Run Keyword If | ${qemu_build} | ${vm_name}.Build QEMU | ${dut_node}
+| | ... | apply_patch=${apply_patch}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
@@ -1471,9 +1478,11 @@
| | ${vm}= | Run keyword | ${vm_name}.Qemu Start
| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
| | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4
| | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True}
| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
| | Return From Keyword | ${vm}
| Configure '${nr}' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology
@@ -1488,10 +1497,12 @@
| | ... | - ${system_cpus} - Number of CPUs allocated for OS itself.
| | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP.
| | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance.
+| | ... | - ${jumbo_frames} - Jumbo frames are used (True) or are not used
+| | ... | (False) in the test.
| | ...
| | ... | *Example:*
| | ...
-| | ... | \| Configure '2' guest VMs with dpdk-testpmd connected via vhost-user \
+| | ... | \| Configure '2' guest VMs with dpdk-testpmd connected via vhost-user\
| | ... | in 3-node circular topology \|
| | ...
| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
@@ -1501,13 +1512,13 @@
| | | ${vm1}= | Configure guest VM with dpdk-testpmd connected via vhost-user
| | | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM${number}
| | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
| | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1}
| | | ${vm2}= | Configure guest VM with dpdk-testpmd connected via vhost-user
| | | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM${number}
| | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
| | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2}
-| | | Run Keyword Unless | ${qemu_built} | Set Suite Variable | ${qemu_built}
-| | | ... | ${True}
| Configure guest VM with dpdk-testpmd using SMT connected via vhost-user
| | [Documentation]
@@ -1524,6 +1535,8 @@
| | ... | - vm_name - QemuUtil instance name. Type: string
| | ... | - skip - number of cpus which will be skipped. Type: int
| | ... | - count - number of cpus which will be allocated for qemu. Type: int
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
| | ...
| | ... | *Example:*
| | ...
@@ -1532,7 +1545,7 @@
| | ... | \| ${6} \| ${5} \|
| | ...
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6}
-| | ... | ${count}=${5}
+| | ... | ${count}=${5} | ${jumbo_frames}=${False}
| | ...
| | Import Library | resources.libraries.python.QemuUtils
| | ... | WITH NAME | ${vm_name}
@@ -1541,12 +1554,17 @@
| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
| | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
| | ... | ${True}
-| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
-| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | ${perf_qemu_path}= | Set Variable If | ${apply_patch}
+| | ... | ${perf_qemu_path}-patch/bin/
+| | ... | ${perf_qemu_path}-base/bin/
+| | Run Keyword If | ${qemu_build} | ${vm_name}.Build QEMU | ${dut_node}
+| | ... | apply_patch=${apply_patch}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
@@ -1554,9 +1572,11 @@
| | ${vm}= | Run keyword | ${vm_name}.Qemu Start
| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
| | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4
| | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True}
| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
| | Return From Keyword | ${vm}
| Configure guest VM with dpdk-testpmd-mac connected via vhost-user
@@ -1579,6 +1599,8 @@
| | ... | Type: integer
| | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node.
| | ... | Type: integer
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
| | ...
| | ... | *Example:*
| | ...
@@ -1592,7 +1614,7 @@
| | ...
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name}
| | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5}
-| | ... | ${qemu_id}=${1}
+| | ... | ${qemu_id}=${1} | ${jumbo_frames}=${False}
| | ...
| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
| | ... | WITH NAME | ${vm_name}
@@ -1606,12 +1628,17 @@
| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
| | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
| | ... | ${True}
-| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
-| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | ${perf_qemu_path}= | Set Variable If | ${apply_patch}
+| | ... | ${perf_qemu_path}-patch/bin/
+| | ... | ${perf_qemu_path}-base/bin/
+| | Run Keyword If | ${qemu_build} | ${vm_name}.Build QEMU | ${dut_node}
+| | ... | apply_patch=${apply_patch}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
@@ -1619,10 +1646,12 @@
| | ${vm}= | Run keyword | ${vm_name}.Qemu Start
| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
| | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f
| | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac}
| | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True}
| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
| | Return From Keyword | ${vm}
| Configure '${nr}' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology
@@ -1638,10 +1667,12 @@
| | ... | - ${system_cpus} - Number of CPUs allocated for OS itself.
| | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP.
| | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance.
+| | ... | - ${jumbo_frames} - Jumbo frames are used (True) or are not used
+| | ... | (False) in the test.
| | ...
| | ... | *Example:*
| | ...
-| | ... | \| Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user \
+| | ... | \| Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user\
| | ... | in 3-node circular topology \|
| | ...
| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
@@ -1654,6 +1685,7 @@
| | | ... | ${dut1-vhost-${number}-if1_mac}
| | | ... | ${dut1-vhost-${number}-if2_mac} | skip=${skip_cpus}
| | | ... | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
| | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1}
| | | ${vm2}=
| | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user
@@ -1661,9 +1693,8 @@
| | | ... | ${dut2-vhost-${number}-if1_mac}
| | | ... | ${dut2-vhost-${number}-if2_mac} | skip=${skip_cpus}
| | | ... | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
| | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2}
-| | | Run Keyword Unless | ${qemu_built} | Set Suite Variable | ${qemu_built}
-| | | ... | ${True}
| Configure guest VM with dpdk-testpmd-mac using SMT connected via vhost-user
| | [Documentation]
@@ -1682,6 +1713,8 @@
| | ... | - eth1_mac - MAC address of second Vhost interface. Type: string
| | ... | - skip - number of cpus which will be skipped. Type: int
| | ... | - count - number of cpus which will be allocated for qemu. Type: int
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
| | ...
| | ... | *Example:*
| | ...
@@ -1691,6 +1724,7 @@
| | ...
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name}
| | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5}
+| | ... | ${jumbo_frames}=${False}
| | ...
| | Import Library | resources.libraries.python.QemuUtils
| | ... | WITH NAME | ${vm_name}
@@ -1699,12 +1733,17 @@
| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
| | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
| | ... | ${True}
-| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
-| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | ${perf_qemu_path}= | Set Variable If | ${apply_patch}
+| | ... | ${perf_qemu_path}-patch/bin/
+| | ... | ${perf_qemu_path}-base/bin/
+| | Run Keyword If | ${qemu_build} | ${vm_name}.Build QEMU | ${dut_node}
+| | ... | apply_patch=${apply_patch}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
@@ -1712,10 +1751,12 @@
| | ${vm}= | Run keyword | ${vm_name}.Qemu Start
| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
| | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f
| | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac}
| | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True}
| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
| | Return From Keyword | ${vm}
| Configure guest VM with linux bridge connected via vhost-user
@@ -1750,9 +1791,12 @@
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
| | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
| | ... | ${True}
-| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
-| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | ${perf_qemu_path}= | Set Variable If | ${apply_patch}
+| | ... | ${perf_qemu_path}-patch/bin/
+| | ... | ${perf_qemu_path}-base/bin/
+| | Run Keyword If | ${qemu_build} | ${vm_name}.Build QEMU | ${dut_node}
+| | ... | apply_patch=${apply_patch}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
@@ -1800,9 +1844,12 @@
| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
| | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
| | ... | ${True}
-| | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
-| | ... | force_install=${True} | apply_patch=${apply_patch}
-| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin}
+| | ${perf_qemu_path}= | Set Variable If | ${apply_patch}
+| | ... | ${perf_qemu_path}-patch/bin/
+| | ... | ${perf_qemu_path}-base/bin/
+| | Run Keyword If | ${qemu_build} | ${vm_name}.Build QEMU | ${dut_node}
+| | ... | apply_patch=${apply_patch}
+| | Run keyword | ${vm_name}.Qemu Set Path | ${perf_qemu_path}
| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node}
| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1
| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048
@@ -2092,8 +2139,7 @@
| | ...
| | ... | *Note:*
| | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${number}-1
-| | ... | - /tmp/memif-${number}-2
+| | ... | - /tmp/memif-DUT1_VNF${number}-${sid}
| | ...
| | ... | *Example:*
| | ...
@@ -2104,29 +2150,29 @@
| | Set Interface State | ${dut2} | ${dut2_if1} | up
| | Set Interface State | ${dut2} | ${dut2_if2} | up
| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
-| | | ${sock1}= | Set Variable | /tmp/memif-DUT1_VNF${number}-1
-| | | ${sock2}= | Set Variable | /tmp/memif-DUT1_VNF${number}-2
-| | | ${prev_index}= | Evaluate | ${number}-1
-| | | Set up memif interfaces on DUT node | ${dut1}
-| | | ... | ${sock1} | ${sock2} | ${number} | dut1-memif-${number}-if1
-| | | ... | dut1-memif-${number}-if2
-| | | ${dut1_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1}
-| | | ... | ${dut1-memif-${prev_index}-if2}
-| | | Configure L2XC | ${dut1} | ${dut1_xconnect_if1}
-| | | ... | ${dut1-memif-${number}-if1}
-| | | ${sock1}= | Set Variable | /tmp/memif-DUT2_VNF${number}-1
-| | | ${sock2}= | Set Variable | /tmp/memif-DUT2_VNF${number}-2
-| | | Set up memif interfaces on DUT node | ${dut2}
-| | | ... | ${sock1} | ${sock2} | ${number} | dut2-memif-${number}-if1
-| | | ... | dut2-memif-${number}-if2
-| | | ${dut2_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1}
-| | | ... | ${dut2-memif-${prev_index}-if2}
-| | | Configure L2XC | ${dut2} | ${dut2_xconnect_if1}
-| | | ... | ${dut2-memif-${number}-if1}
-| | | Run Keyword If | ${number}==${nr} | Configure L2XC
-| | | ... | ${dut1} | ${dut1-memif-${number}-if2} | ${dut1_if2}
-| | | Run Keyword If | ${number}==${nr} | Configure L2XC
-| | | ... | ${dut2} | ${dut2-memif-${number}-if2} | ${dut2_if2}
+| | | ${sock1}= | Set Variable | memif-DUT1_VNF
+| | | ${sock2}= | Set Variable | memif-DUT1_VNF
+| | | ${prev_index}= | Evaluate | ${number}-1
+| | | Set up memif interfaces on DUT node | ${dut1}
+| | | ... | ${sock1} | ${sock2} | ${number} | dut1-memif-${number}-if1
+| | | ... | dut1-memif-${number}-if2
+| | | ${dut1_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1}
+| | | ... | ${dut1-memif-${prev_index}-if2}
+| | | Configure L2XC | ${dut1} | ${dut1_xconnect_if1}
+| | | ... | ${dut1-memif-${number}-if1}
+| | | ${sock1}= | Set Variable | memif-DUT2_VNF
+| | | ${sock2}= | Set Variable | memif-DUT2_VNF
+| | | Set up memif interfaces on DUT node | ${dut2}
+| | | ... | ${sock1} | ${sock2} | ${number} | dut2-memif-${number}-if1
+| | | ... | dut2-memif-${number}-if2
+| | | ${dut2_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1}
+| | | ... | ${dut2-memif-${prev_index}-if2}
+| | | Configure L2XC | ${dut2} | ${dut2_xconnect_if1}
+| | | ... | ${dut2-memif-${number}-if1}
+| | | Run Keyword If | ${number}==${nr} | Configure L2XC
+| | | ... | ${dut1} | ${dut1-memif-${number}-if2} | ${dut1_if2}
+| | | Run Keyword If | ${number}==${nr} | Configure L2XC
+| | | ... | ${dut2} | ${dut2-memif-${number}-if2} | ${dut2_if2}
| Initialize L2 Bridge Domain for '${nr}' memif pairs in 3-node circular topology
| | [Documentation]
@@ -2139,8 +2185,7 @@
| | ...
| | ... | *Note:*
| | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${number}-1
-| | ... | - /tmp/memif-${number}-2
+| | ... | - /tmp/memif-DUT1_VNF${number}-${sid}
| | ...
| | ... | *Example:*
| | ...
@@ -2153,8 +2198,8 @@
| | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${1}
| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
-| | | ${sock1}= | Set Variable | /tmp/memif-DUT1_VNF${number}-1
-| | | ${sock2}= | Set Variable | /tmp/memif-DUT1_VNF${number}-2
+| | | ${sock1}= | Set Variable | memif-DUT1_VNF
+| | | ${sock2}= | Set Variable | memif-DUT1_VNF
| | | Set up memif interfaces on DUT node | ${dut1}
| | | ... | ${sock1} | ${sock2} | ${number} | dut1-memif-${number}-if1
| | | ... | dut1-memif-${number}-if2
@@ -2163,8 +2208,8 @@
| | | ... | ${dut1-memif-${number}-if1} | ${number}
| | | Add interface to bridge domain | ${dut1}
| | | ... | ${dut1-memif-${number}-if2} | ${bd_id2}
-| | | ${sock1}= | Set Variable | /tmp/memif-DUT2_VNF${number}-1
-| | | ${sock2}= | Set Variable | /tmp/memif-DUT2_VNF${number}-2
+| | | ${sock1}= | Set Variable | memif-DUT2_VNF
+| | | ${sock2}= | Set Variable | memif-DUT2_VNF
| | | Set up memif interfaces on DUT node | ${dut2}
| | | ... | ${sock1} | ${sock2} | ${number} | dut2-memif-${number}-if1
| | | ... | dut2-memif-${number}-if2