Merge pull request #27 from rmsivakanth/master

Added TestPmd DPDK test
This commit is contained in:
Shital Savekar 2018-05-29 13:38:24 -07:00 коммит произвёл GitHub
Родитель c7be65face 9faf919905
Коммит 3a628fbf59
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 948 добавлений и 269 удалений

Просмотреть файл

@ -0,0 +1,194 @@
#!/bin/bash
#
# This script will do setup huge pages and DPDK installation with SRC & DST IPs for DPDk TestPmd test.
# To run this script constants.sh details must.
#
########################################################################################################
HOMEDIR=`pwd`
dpdkSrcLink="https://fast.dpdk.org/rel/dpdk-18.02.1.tar.xz"
dpdkSrcTar="${dpdkSrcLink##*/}"
dpdkversion=`echo $dpdkSrc | grep -Po "(\d+\.)+\d+"`
dpdkSrcDir=""
DPDK_BUILD=x86_64-native-linuxapp-gcc
srcIp=""
dstIp=""
CONSTANTS_FILE="./constants.sh"
ICA_TESTCONFIGURATION="TestConfiguration" # The test configuration is running
ICA_TESTRUNNING="TestRunning" # The test is running
ICA_TESTCOMPLETED="TestCompleted" # The test completed successfully
ICA_TESTABORTED="TestAborted" # Error during the setup of the test
ICA_TESTFAILED="TestFailed" # Error occurred during the test
touch ./dpdkRuntime.log
LogMsg()
{
echo `date "+%b %d %Y %T"` : "${1}" # Add the time stamp to the log message
echo `date "+%b %d %Y %T"` : "${1}" >> $HOMEDIR/dpdkRuntime.log
}
UpdateTestState()
{
echo "${1}" >> $HOMEDIR/state.txt
}
apt-get -y install ifupdown
ifup eth1 && ifup eth2
ssh root@server-vm "apt-get -y install ifupdown"
ssh root@server-vm "ifup eth1 && ifup eth2"
sleep 5
serverIPs=($(ssh root@server-vm "hostname -I | awk '{print $1}'"))
clientIPs=($(ssh root@client-vm "hostname -I | awk '{print $1}'"))
server=${serverIPs[0]}
serverNIC1ip=${serverIPs[1]}
serverNIC2ip=${serverIPs[2]}
client=${clientIPs[0]}
clientNIC1ip=${clientIPs[1]}
clientNIC2ip=${clientIPs[2]}
echo "server-vm : eth0 : ${server} : eth1 : ${serverNIC1ip} eth2 : ${serverNIC2ip}"
echo "client-vm : eth0 : ${client} : eth1 : ${clientNIC1ip} eth2 : ${clientNIC2ip}"
if [ -e ${CONSTANTS_FILE} ]; then
source ${CONSTANTS_FILE}
else
errMsg="Error: missing ${CONSTANTS_FILE} file"
LogMsg "${errMsg}"
UpdateTestState $ICA_TESTABORTED
exit 10
fi
function checkCmdExitStatus ()
{
exit_status=$?
cmd=$1
if [ $exit_status -ne 0 ]; then
echo "$cmd: FAILED (exit code: $exit_status)"
if [ "$2" == "exit" ]
then
exit $exit_status
fi
else
echo "$cmd: SUCCESS"
fi
}
function hugePageSetup ()
{
UpdateTestState "Huge page setup is running"
ssh ${1} "mkdir -p /mnt/huge"
ssh ${1} "mkdir -p /mnt/huge-1G"
ssh ${1} "mount -t hugetlbfs nodev /mnt/huge"
ssh ${1} "mount -t hugetlbfs nodev /mnt/huge-1G -o 'pagesize=1G'"
ssh ${1} "mount -l | grep mnt"
ssh ${1} "grep 'Hugepagesize' /proc/meminfo"
ssh ${1} "echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages"
ssh ${1} "echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages"
ssh ${1} "grep 'Hugepagesize' /proc/meminfo"
}
function installDPDK ()
{
UpdateTestState ICA_TESTCONFIGURATION
DISTRO=`grep -ihs "buntu\|Suse\|Fedora\|Debian\|CentOS\|Red Hat Enterprise Linux\|clear-linux-os" /etc/{issue,*release,*version} /usr/lib/os-release`
srcIp=${2}
dstIp=${3}
if [[ $DISTRO =~ "Ubuntu 18.04" ]];
then
LogMsg "Detected UBUNTU"
LogMsg "Configuring ${1} for DPDK test..."
srcIp=${2}
dstIp=${3}
ssh ${1} "until dpkg --force-all --configure -a; sleep 10; do echo 'Trying again...'; done"
ssh ${1} "add-apt-repository ppa:canonical-server/dpdk-mlx-tech-preview"
ssh ${1} "apt-get update"
LogMsg "Configuring ${1} for DPDK test..."
ssh ${1} "apt-get install -y gcc wget tar make dpdk-doc dpdk-dev libdpdk-dev librdmacm-dev librdmacm1 build-essential libnuma-dev libpcap-dev ibverbs-utils"
elif [[ $DISTRO =~ "Ubuntu 16.04" ]];
then
LogMsg "Detected UBUNTU 16.04"
LogMsg "Configuring ${1} for DPDK test..."
ssh ${1} "wget http://content.mellanox.com/ofed/MLNX_OFED-4.3-1.0.1.0/MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz"
ssh ${1} "tar xvf MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64.tgz"
ssh ${1} "cd MLNX_OFED_LINUX-4.3-1.0.1.0-ubuntu16.04-x86_64 && ./mlnxofedinstall --upstream-libs --guest --dpdk --force"
checkCmdExitStatus "MLX driver install on ${1}"
srcIp=${2}
dstIp=${3}
ssh ${1} "until dpkg --force-all --configure -a; sleep 10; do echo 'Trying again...'; done"
ssh ${1} "add-apt-repository ppa:canonical-server/dpdk-mlx-tech-preview"
ssh ${1} "apt-get update"
LogMsg "Configuring ${1} for DPDK test..."
ssh ${1} "apt-get install -y gcc wget tar make dpdk-doc dpdk-dev libdpdk-dev librdmacm-dev librdmacm1 build-essential libnuma-dev libpcap-dev ibverbs-utils"
elif [[ $DISTRO =~ "CentOS Linux release 7" ]] || [[ $DISTRO =~ "Red Hat Enterprise Linux Server release 7" ]]; then
LogMsg "Detected RHEL/CENTOS 7.x"
ssh ${1} "yum -y groupinstall 'Infiniband Support'"
ssh ${1} "yum install -y kernel-devel-`uname -r` gcc make numactl-devel.x86_64 numactl-debuginfo.x86_64 numad.x86_64 numactl.x86_64 numactl-libs.x86_64 libpcap-devel librdmacm-devel librdmacm dpdk-doc dpdk-devel librdmacm-utils libibcm libibverbs-utils libibverbs"
ssh ${1} "dracut --add-drivers 'mlx4_en mlx4_ib mlx5_ib' -f "
ssh ${1} "systemctl enable rdma"
dpdkSrcLink="https://dpdk.org/browse/dpdk/snapshot/dpdk-18.05-rc2.tar.gz"
dpdkSrcTar="${dpdkSrcLink##*/}"
dpdkversion=`echo $dpdkSrc | grep -Po "(\d+\.)+\d+"`
else
LogMsg "Unknown Distro"
UpdateTestState "TestAborted"
UpdateSummary "Unknown Distro, test aborted"
return 1
fi
LogMsg "Installing DPDK from source file $dpdkSrcTar"
ssh ${1} "wget $dpdkSrcLink -P /tmp"
ssh ${1} "tar xvf /tmp/$dpdkSrcTar"
dpdkSrcDir=`ls | grep dpdk-`
LogMsg "dpdk source on ${1} $dpdkSrcDir"
if [ ! -z "$srcIp" -a "$srcIp" != " " ];
then
LogMsg "dpdk build with NIC SRC IP $srcIp ADDR on ${1}"
srcIpArry=( `echo $srcIp | sed "s/\./ /g"` )
srcIpAddrs="define IP_SRC_ADDR ((${srcIpArry[0]}U << 24) | (${srcIpArry[1]} << 16) | ( ${srcIpArry[2]} << 8) | ${srcIpArry[3]})"
srcIpConfigCmd="sed -i 's/define IP_SRC_ADDR.*/$srcIpAddrs/' $HOMEDIR/$dpdkSrcDir/app/test-pmd/txonly.c"
LogMsg "ssh ${1} $srcIpConfigCmd"
ssh ${1} $srcIpConfigCmd
checkCmdExitStatus "SRC IP configuration on ${1}"
else
LogMsg "dpdk build with default DST IP ADDR on ${1}"
fi
if [ ! -z "$dstIp" -a "$dstIp" != " " ];
then
LogMsg "dpdk build with NIC DST IP $dstIp ADDR on ${1}"
dstIpArry=( `echo $dstIp | sed "s/\./ /g"` )
dstIpAddrs="define IP_DST_ADDR ((${dstIpArry[0]}U << 24) | (${dstIpArry[1]} << 16) | (${dstIpArry[2]} << 8) | ${dstIpArry[3]})"
dstIpConfigCmd="sed -i 's/define IP_DST_ADDR.*/$dstIpAddrs/' $HOMEDIR/$dpdkSrcDir/app/test-pmd/txonly.c"
LogMsg "ssh ${1} $dstIpConfigCmd"
ssh ${1} $dstIpConfigCmd
checkCmdExitStatus "DST IP configuration on ${1}"
else
LogMsg "dpdk build with default DST IP ADDR on ${1}"
fi
LogMsg "MLX_PMD flag enabling on ${1}"
ssh ${1} "sed -i 's/^CONFIG_RTE_LIBRTE_MLX4_PMD=n/CONFIG_RTE_LIBRTE_MLX4_PMD=y/g' $HOMEDIR/$dpdkSrcDir/config/common_base"
checkCmdExitStatus "${1} CONFIG_RTE_LIBRTE_MLX4_PMD=y"
ssh ${1} "cd $HOMEDIR/$dpdkSrcDir && make config O=$DPDK_BUILD T=$DPDK_BUILD"
ssh ${1} "cd $HOMEDIR/$dpdkSrcDir/$DPDK_BUILD && make -j8"
checkCmdExitStatus "dpdk build on ${1}"
}
# Script start from here
LogMsg "*********INFO: Script execution Started********"
LogMsg "*********INFO: Starting Huge page configuration*********"
LogMsg "INFO: Configuring huge pages on client ${client}..."
hugePageSetup ${client}
LogMsg "INFO: Configuring huge pages on server ${server}..."
hugePageSetup ${server}
LogMsg "*********INFO: Starting setup & configuration of DPDK*********"
LogMsg "INFO: Installing DPDK on client ${client}..."
installDPDK ${client} ${clientNIC1ip} ${serverNIC1ip}
LogMsg "INFO: Installing DPDK on server ${server}..."
installDPDK ${server} ${serverNIC1ip} ${clientNIC1ip}
LogMsg "*********INFO: DPDK setup script execution reach END. Completed !!!*********"

Просмотреть файл

@ -0,0 +1,222 @@
#!/bin/bash
#
# This script will run DPDk TestPmd test and generate report in .csv file.
# To run this script constants.sh details must.
#
########################################################################################################
HOMEDIR=`pwd`
LOGDIR="${HOMEDIR}/DpdkTestPmdLogs"
dpdkSrcLink="https://fast.dpdk.org/rel/dpdk-18.02.1.tar.xz"
dpdkSrcTar="${dpdkSrcLink##*/}"
dpdkversion=`echo $dpdkSrc | grep -Po "(\d+\.)+\d+"`
dpdkSrcDir=""
DPDK_BUILD=x86_64-native-linuxapp-gcc
srcIp=""
dstIp=""
CONSTANTS_FILE="./constants.sh"
ICA_TESTCONFIGURATION="TestConfiguration" # The test configuration is running
ICA_TESTRUNNING="TestRunning" # The test is running
ICA_TESTCOMPLETED="TestCompleted" # The test completed successfully
ICA_TESTABORTED="TestAborted" # Error during the setup of the test
ICA_TESTFAILED="TestFailed" # Error occurred during the test
touch ./dpdkRuntime.log
LogMsg()
{
echo `date "+%b %d %Y %T"` : "${1}" # Add the time stamp to the log message
echo `date "+%b %d %Y %T"` : "${1}" >> $HOMEDIR/dpdkRuntime.log
}
UpdateTestState()
{
echo "${1}" >> $HOMEDIR/state.txt
}
apt-get -y install ifupdown
ifup eth1 && ifup eth2
ssh root@server-vm "apt-get -y install ifupdown"
ssh root@server-vm "ifup eth1 && ifup eth2"
sleep 5
serverIPs=($(ssh root@server-vm "hostname -I | awk '{print $1}'"))
clientIPs=($(ssh root@client-vm "hostname -I | awk '{print $1}'"))
rxonly_mode=""
io_mode=""
server=${serverIPs[0]}
serverNIC1ip=${serverIPs[1]}
serverNIC2ip=${serverIPs[2]}
client=${clientIPs[0]}
clientNIC1ip=${clientIPs[1]}
clientNIC2ip=${clientIPs[2]}
echo "server-vm : eth0 : ${server} : eth1 : ${serverNIC1ip} eth2 : ${serverNIC2ip}"
echo "client-vm : eth0 : ${client} : eth1 : ${clientNIC1ip} eth2 : ${clientNIC2ip}"
if [ -e ${CONSTANTS_FILE} ]; then
source ${CONSTANTS_FILE}
else
errMsg="Error: missing ${CONSTANTS_FILE} file"
LogMsg "${errMsg}"
UpdateTestState $ICA_TESTABORTED
exit 10
fi
function checkCmdExitStatus ()
{
exit_status=$?
cmd=$1
if [ $exit_status -ne 0 ]; then
echo "$cmd: FAILED (exit code: $exit_status)"
if [ "$2" == "exit" ]
then
exit $exit_status
UpdateTestState ICA_TESTFAILED
fi
else
echo "$cmd: SUCCESS"
fi
}
runTestPmd()
{
UpdateTestState ICA_TESTRUNNING
mkdir -p $LOGDIR
ssh ${server} "mkdir -p $LOGDIR"
dpdkSrcDir=`ls | grep dpdk-`
testDuration=60
for testmode in $modes; do
LogMsg "Configure huge pages on ${server}"
ssh ${server} "mkdir -p /mnt/huge; mkdir -p /mnt/huge-1G; mount -t hugetlbfs nodev /mnt/huge && mount -t hugetlbfs nodev /mnt/huge-1G -o 'pagesize=1G' && echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && grep -i hug /proc/meminfo"
LogMsg "TestPmd is starting on ${serverNIC1ip} with ${testmode} mode, duration ${testDuration} secs"
vdevOption="'net_vdev_netvsc0,iface=$interfaceName,force=1'"
serverTestPmdCmd="echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && mount -a && modprobe -a ib_uverbs mlx4_en mlx4_core mlx4_ib;cd $HOMEDIR/$dpdkSrcDir/x86_64-native-linuxapp-gcc/app && timeout ${testDuration} ./testpmd -l 1-3 -n 2 -w 0002:00:02.0 --vdev='net_vdev_netvsc0,iface=eth1,force=1' -- --port-topology=chained --nb-cores 1 --forward-mode=${testmode} --stats-period 1"
echo $serverTestPmdCmd
ssh ${server} $serverTestPmdCmd >> $LOGDIR/dpdk-testpmd-${testmode}-receiver.log &
checkCmdExitStatus "TestPmd started on ${serverNIC1ip} with ${testmode} mode, duration ${testDuration} secs"
LogMsg "Configure huge pages on ${client}"
mkdir -p /mnt/huge; mkdir -p /mnt/huge-1G; mount -t hugetlbfs nodev /mnt/huge && mount -t hugetlbfs nodev /mnt/huge-1G -o 'pagesize=1G' && echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && grep -i hug /proc/meminfo
LogMsg "TestPmd is starting on ${clientNIC1ip} with txonly mode, duration ${testDuration} secs"
echo "echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && modprobe -a ib_uverbs mlx4_en mlx4_core mlx4_ib;cd $HOMEDIR/$dpdkSrcDir/x86_64-native-linuxapp-gcc/app && timeout ${testDuration} ./testpmd -l 1-3 -n 2 -w 0002:00:02.0 --vdev='net_vdev_netvsc0,iface=eth1,force=1' -- --port-topology=chained --nb-cores 1 --forward-mode=txonly --stats-period 1 >> $LOGDIR/dpdk-testpmd-${testmode}-sender.log &"
echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && modprobe -a ib_uverbs mlx4_en mlx4_core mlx4_ib;cd $HOMEDIR/$dpdkSrcDir/x86_64-native-linuxapp-gcc/app && timeout ${testDuration} ./testpmd -l 1-3 -n 2 -w 0002:00:02.0 --vdev='net_vdev_netvsc0,iface=eth1,force=1' -- --port-topology=chained --nb-cores 1 --forward-mode=txonly --stats-period 1 >> $LOGDIR/dpdk-testpmd-${testmode}-sender.log &
checkCmdExitStatus "TestPmd started on ${clientNIC1ip} with txonly mode, duration ${testDuration} secs"
sleep ${testDuration}
LogMsg "reset used huge pages"
echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && grep -i hug /proc/meminfo
ssh ${server} "echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages && echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages && grep -i hug /proc/meminfo"
done
}
testPmdParser ()
{
LogMsg "*********INFO: Parser Started*********"
testpmdCsvFile=$HOMEDIR/dpdkTestPmd.csv
logFiles=(`ls $LOGDIR/*.log`)
echo ",TestMode,Tx-pps,Rx-pps,Tx-bytes,Rx-bytes,Tx-packets,Rx-packets,RTx-pps,RTx-bytes,RTx-packets,Tx-pkt-size,Rx-pkt-size" > $testpmdCsvFile
fileCount=0
while [ "x${logFiles[$fileCount]}" != "x" ]
do
LogMsg "collecting results from ${logFiles[$fileCount]}"
if [[ ${logFiles[$fileCount]} =~ "rxonly-receiver" ]];
then
rxonly_mode="rxonly"
rxonly_Rxpps_Max=`cat ${logFiles[$fileCount]} | grep Rx-pps: | awk '{print $2}' | sort -n | tail -1`
rxonly_Rxbytes_Max=`cat ${logFiles[$fileCount]} | grep RX-bytes: | rev | awk '{print $1}' | rev | sort -n | tail -1`
rxonly_Rxpackets_Max=`cat ${logFiles[$fileCount]} | grep RX-packets: | awk '{print $2}' | sort -n | tail -3| head -1`
rxonly_RTxpps_Max=`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}' | sort -n | tail -1`
rxonly_RTxbytes_Max=`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev | sort -n | tail -1`
rxonly_RTxpackets_Max=`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}' | sort -n | tail -1`
rxonly_Rxpps=(`cat ${logFiles[$fileCount]} | grep Rx-pps: | awk '{print $2}'`)
rxonly_Rxpps_Avg=$(($(expr $(printf '%b + ' "${rxonly_Rxpps[@]::${#rxonly_Rxpps[@]}}"\\c))/${#rxonly_Rxpps[@]}))
rxonly_Rxbytes=(`cat ${logFiles[$fileCount]} | grep RX-bytes: | rev | awk '{print $1}' | rev`)
rxonly_Rxbytes_Avg=$(($(expr $(printf '%b + ' "${rxonly_Rxbytes[@]::${#rxonly_Rxbytes[@]}}"\\c))/${#rxonly_Rxbytes[@]}))
rxonly_Rxpackets=(`cat ${logFiles[$fileCount]} | grep RX-packets: | awk '{print $2}'`)
rxonly_Rxpackets_Avg=$(($(expr $(printf '%b + ' "${rxonly_Rxpackets[@]::${#rxonly_Rxpackets[@]}}"\\c))/${#rxonly_Rxpackets[@]}))
rxonly_RTxpps=(`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}'`)
rxonly_RTxpps_Avg=$(($(expr $(printf '%b + ' "${rxonly_RTxpps[@]::${#rxonly_RTxpps[@]}}"\\c))/${#rxonly_RTxpps[@]}))
rxonly_RTxbytes=(`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev`)
rxonly_RTxbytes_Avg=$(($(expr $(printf '%b + ' "${rxonly_RTxbytes[@]::${#rxonly_RTxbytes[@]}}"\\c))/${#rxonly_RTxbytes[@]}))
rxonly_RTxpackets=(`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}'`)
rxonly_RTxpackets_Avg=$(($(expr $(printf '%b + ' "${rxonly_RTxpackets[@]::${#rxonly_RTxpackets[@]}}"\\c))/${#rxonly_RTxpackets[@]}))
elif [[ ${logFiles[$fileCount]} =~ "rxonly-sender" ]];
then
rxonly_mode="rxonly"
rxonly_Txpps_Max=(`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}' | sort -n | tail -1`)
rxonly_Txbytes_Max=(`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev | sort -n | tail -1`)
rxonly_Txpackets_Max=(`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}' | sort -n | tail -1`)
rxonly_Txpps=(`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}'`)
rxonly_Txpps_Avg=$(($(expr $(printf '%b + ' "${rxonly_Txpps[@]::${#rxonly_Txpps[@]}}"\\c))/${#rxonly_Txpps[@]}))
rxonly_Txbytes=(`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev`)
rxonly_Txbytes_Avg=$(($(expr $(printf '%b + ' "${rxonly_Txbytes[@]::${#rxonly_Txbytes[@]}}"\\c))/${#rxonly_Txbytes[@]}))
rxonly_Txpackets=(`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}'`)
rxonly_Txpackets_Avg=$(($(expr $(printf '%b + ' "${rxonly_Txpackets[@]::${#rxonly_Txpackets[@]}}"\\c))/${#rxonly_Txpackets[@]}))
elif [[ ${logFiles[$fileCount]} =~ "io-receiver" ]];
then
io_mode="io"
io_Rxpps_Max=`cat ${logFiles[$fileCount]} | grep Rx-pps: | awk '{print $2}' | sort -n | tail -1`
io_Rxbytes_Max=`cat ${logFiles[$fileCount]} | grep RX-bytes: | rev | awk '{print $1}' | rev | sort -n | tail -1`
io_Rxpackets_Max=`cat ${logFiles[$fileCount]} | grep RX-packets: | awk '{print $2}' | sort -n | tail -3| head -1`
io_RTxpps_Max=`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}' | sort -n | tail -1`
io_RTxbytes_Max=`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev | sort -n | tail -1`
io_RTxpackets_Max=`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}' | sort -n | tail -1`
io_Rxpps=(`cat ${logFiles[$fileCount]} | grep Rx-pps: | awk '{print $2}'`)
io_Rxpps_Avg=$(($(expr $(printf '%b + ' "${io_Rxpps[@]::${#io_Rxpps[@]}}"\\c))/${#io_Rxpps[@]}))
io_Rxbytes=(`cat ${logFiles[$fileCount]} | grep RX-bytes: | rev | awk '{print $1}' | rev`)
io_Rxbytes_Avg=$(($(expr $(printf '%b + ' "${io_Rxbytes[@]::${#io_Rxbytes[@]}}"\\c))/${#io_Rxbytes[@]}))
io_Rxpackets=(`cat ${logFiles[$fileCount]} | grep RX-packets: | awk '{print $2}'`)
io_Rxpackets_Avg=$(($(expr $(printf '%b + ' "${io_Rxpackets[@]::${#io_Rxpackets[@]}}"\\c))/${#io_Rxpackets[@]}))
io_RTxpps=(`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}'`)
io_RTxpps_Avg=$(($(expr $(printf '%b + ' "${io_RTxpps[@]::${#io_RTxpps[@]}}"\\c))/${#io_RTxpps[@]}))
io_RTxbytes=(`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev`)
io_RTxbytes_Avg=$(($(expr $(printf '%b + ' "${io_RTxbytes[@]::${#io_RTxbytes[@]}}"\\c))/${#io_RTxbytes[@]}))
io_RTxpackets=(`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}'`)
io_RTxpackets_Avg=$(($(expr $(printf '%b + ' "${io_RTxpackets[@]::${#io_RTxpackets[@]}}"\\c))/${#io_RTxpackets[@]}))
elif [[ ${logFiles[$fileCount]} =~ "io-sender" ]];
then
io_mode="io"
io_Txpps_Max=(`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}' | sort -n | tail -1`)
io_Txbytes_Max=(`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev | sort -n | tail -1`)
io_Txpackets_Max=(`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}' | sort -n | tail -1`)
io_Txpps=(`cat ${logFiles[$fileCount]} | grep Tx-pps: | awk '{print $2}'`)
io_Txpps_Avg=$(($(expr $(printf '%b + ' "${io_Txpps[@]::${#io_Txpps[@]}}"\\c))/${#io_Txpps[@]}))
io_Txbytes=(`cat ${logFiles[$fileCount]} | grep TX-bytes: | rev | awk '{print $1}' | rev`)
io_Txbytes_Avg=$(($(expr $(printf '%b + ' "${io_Txbytes[@]::${#io_Txbytes[@]}}"\\c))/${#io_Txbytes[@]}))
io_Txpackets=(`cat ${logFiles[$fileCount]} | grep TX-packets: | awk '{print $2}'`)
io_Txpackets_Avg=$(($(expr $(printf '%b + ' "${io_Txpackets[@]::${#io_Txpackets[@]}}"\\c))/${#io_Txpackets[@]}))
fi
((fileCount++))
done
if [ $rxonly_mode == "rxonly" ];then
LogMsg "$rxonly_mode pushing to csv file"
echo $rxonly_Txbytes_Avg $rxonly_Txpackets_Avg
Tx_Pkt_Size=$((rxonly_Txbytes_Avg/rxonly_Txpackets_Avg))
Rx_Pkt_Size=$((rxonly_Rxbytes_Avg/rxonly_Rxpackets_Avg))
echo ",$rxonly_mode,$rxonly_Txpps_Avg,$rxonly_Rxpps_Avg,$rxonly_Txbytes_Avg,$rxonly_Rxbytes_Avg,$rxonly_Txpackets_Avg,$rxonly_Rxpackets_Avg,$rxonly_RTxpps_Avg,$rxonly_RTxbytes_Avg,$rxonly_RTxpackets_Avg,$Tx_Pkt_Size,$Rx_Pkt_Size" >> $testpmdCsvFile
fi
if [ $io_mode == "io" ];then
LogMsg "$io_mode pushing to csv file"
Tx_Pkt_Size=$((io_Txbytes_Avg/io_Txpackets_Avg))
Rx_Pkt_Size=$((io_Rxbytes_Avg/io_Rxpackets_Avg))
echo ",$io_mode,$io_Txpps_Avg,$io_Rxpps_Avg,$io_Txbytes_Avg,$io_Rxbytes_Avg,$io_Txpackets_Avg,$io_Rxpackets_Avg,$io_RTxpps_Avg,$io_RTxbytes_Avg,$io_RTxpackets_Avg,$Tx_Pkt_Size,$Rx_Pkt_Size" >> $testpmdCsvFile
fi
}
LogMsg "*********INFO: Starting DPDK Setup execution*********"
./dpdkSetup.sh
LogMsg "*********INFO: Starting TestPmd test execution*********"
runTestPmd
checkCmdExitStatus "TestPmd execution"
LogMsg "Collecting testpmd logs from server-vm ${server}"
tar -cvzf DpdkTestPmdLogs.tar.gz $LOGDIR
LogMsg "*********INFO: Starting TestPmd results parser execution*********"
testPmdParser
checkCmdExitStatus "Parser execution"
LogMsg "*********INFO: DPDK TestPmd script execution reach END. Completed !!!*********"
UpdateTestState ICA_TESTCOMPLETED

Просмотреть файл

@ -0,0 +1,244 @@
$result = ""
$testResult = ""
$resultArr = @()
$isDeployed = DeployVMS -setupType $currentTestData.setupType -Distro $Distro -xmlConfig $xmlConfig
if ($isDeployed)
{
try
{
$noClient = $true
$noServer = $true
foreach ( $vmData in $allVMData )
{
if ( $vmData.RoleName -imatch "client" )
{
$clientVMData = $vmData
$noClient = $false
}
elseif ( $vmData.RoleName -imatch "server" )
{
$noServer = $fase
$serverVMData = $vmData
}
}
if ( $noClient )
{
Throw "No any master VM defined. Be sure that, Client VM role name matches with the pattern `"*master*`". Aborting Test."
}
if ( $noServer )
{
Throw "No any slave VM defined. Be sure that, Server machine role names matches with pattern `"*slave*`" Aborting Test."
}
#region CONFIGURE VM FOR TERASORT TEST
LogMsg "CLIENT VM details :"
LogMsg " RoleName : $($clientVMData.RoleName)"
LogMsg " Public IP : $($clientVMData.PublicIP)"
LogMsg " SSH Port : $($clientVMData.SSHPort)"
LogMsg "SERVER VM details :"
LogMsg " RoleName : $($serverVMData.RoleName)"
LogMsg " Public IP : $($serverVMData.PublicIP)"
LogMsg " SSH Port : $($serverVMData.SSHPort)"
#
# PROVISION VMS FOR LISA WILL ENABLE ROOT USER AND WILL MAKE ENABLE PASSWORDLESS AUTHENTICATION ACROSS ALL VMS IN SAME HOSTED SERVICE.
#
ProvisionVMsForLisa -allVMData $allVMData -installPackagesOnRoleNames "none"
#endregion
if($EnableAcceleratedNetworking)
{
$DataPath = "SRIOV"
LogMsg "Getting SRIOV NIC Name."
$clientNicName = (RunLinuxCmd -ip $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -command "route | grep '^default' | grep -o '[^ ]*$'").Trim()
LogMsg "CLIENT SRIOV NIC: $clientNicName"
$serverNicName = (RunLinuxCmd -ip $clientVMData.PublicIP -port $serverVMData.SSHPort -username "root" -password $password -command "route | grep '^default' | grep -o '[^ ]*$'").Trim()
LogMsg "SERVER SRIOV NIC: $serverNicName"
if ( $serverNicName -eq $clientNicName)
{
$nicName = $clientNicName
}
else
{
Throw "Server and client SRIOV NICs are not same."
}
}
else
{
$DataPath = "Synthetic"
LogMsg "Getting Active NIC Name."
$clientNicName = (RunLinuxCmd -ip $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -command "route | grep '^default' | grep -o '[^ ]*$'").Trim()
LogMsg "CLIENT NIC: $clientNicName"
$serverNicName = (RunLinuxCmd -ip $clientVMData.PublicIP -port $serverVMData.SSHPort -username "root" -password $password -command "route | grep '^default' | grep -o '[^ ]*$'").Trim()
LogMsg "SERVER NIC: $serverNicName"
if ( $serverNicName -eq $clientNicName)
{
$nicName = $clientNicName
}
else
{
Throw "Server and client NICs are not same."
}
}
LogMsg "Generating constansts.sh ..."
$constantsFile = "$LogDir\constants.sh"
Set-Content -Value "#Generated by Azure Automation." -Path $constantsFile
Add-Content -Value "nicName=eth1" -Path $constantsFile
Add-Content -Value "pciAddress=0002:00:02.0" -Path $constantsFile
foreach ( $param in $currentTestData.TestParameters.param)
{
Add-Content -Value "$param" -Path $constantsFile
if ( $param -imatch "modes" )
{
$modes = ($param.Replace("modes=",""))
}
}
LogMsg "constanst.sh created successfully..."
LogMsg "test modes : $modes"
LogMsg (Get-Content -Path $constantsFile)
#endregion
#region EXECUTE TEST
$myString = @"
cd /root/
./dpdkTestPmd.sh >> dpdkConsoleLogs.txt
. azuremodules.sh
collect_VM_properties
"@
Set-Content "$LogDir\StartDpdkTestPmd.sh" $myString
RemoteCopy -uploadTo $clientVMData.PublicIP -port $clientVMData.SSHPort -files ".\$constantsFile,.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\dpdkSetup.sh,.\Testscripts\Linux\dpdkTestPmd.sh,.\$LogDir\StartDpdkTestPmd.sh" -username "root" -password $password -upload
RemoteCopy -uploadTo $clientVMData.PublicIP -port $clientVMData.SSHPort -files $currentTestData.files -username "root" -password $password -upload
$out = RunLinuxCmd -ip $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -command "chmod +x *.sh"
$testJob = RunLinuxCmd -ip $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -command "./StartDpdkTestPmd.sh" -RunInBackground
#endregion
#region MONITOR TEST
while ( (Get-Job -Id $testJob).State -eq "Running" )
{
$currentStatus = RunLinuxCmd -ip $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -command "tail -2 dpdkConsoleLogs.txt | head -1"
LogMsg "Current Test Staus : $currentStatus"
WaitFor -seconds 20
}
$finalStatus = RunLinuxCmd -ip $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -command "cat /root/state.txt"
$finalStatus = "TestCompleted"
$uploadResults = $true
RemoteCopy -downloadFrom $clientVMData.PublicIP -port $clientVMData.SSHPort -username "root" -password $password -download -downloadTo $LogDir -files "*.csv, *.txt, *.log, *.tar.gz"
if ( $finalStatus -imatch "TestFailed")
{
LogErr "Test failed. Last known status : $currentStatus."
$testResult = "FAIL"
}
elseif ( $finalStatus -imatch "TestAborted")
{
LogErr "Test Aborted. Last known status : $currentStatus."
$testResult = "ABORTED"
}
elseif ( ($finalStatus -imatch "TestCompleted") -and $uploadResults )
{
LogMsg "Test Completed."
$testResult = "PASS"
}
elseif ( $finalStatus -imatch "TestRunning")
{
LogMsg "Powershell backgroud job for test is completed but VM is reporting that test is still running. Please check $LogDir\zkConsoleLogs.txt"
LogMsg "Contests of summary.log : $testSummary"
$testResult = "PASS"
}
LogMsg "Test Completed"
try
{
$testpmdDataCsv = Import-Csv -Path $LogDir\dpdkTestPmd.csv
LogMsg "Uploading the test results.."
$dataSource = $xmlConfig.config.Azure.database.server
$DBuser = $xmlConfig.config.Azure.database.user
$DBpassword = $xmlConfig.config.Azure.database.password
$database = $xmlConfig.config.Azure.database.dbname
$dataTableName = $xmlConfig.config.Azure.database.dbtable
$TestCaseName = $xmlConfig.config.Azure.database.testTag
if ($dataSource -And $DBuser -And $DBpassword -And $database -And $dataTableName)
{
$GuestDistro = cat "$LogDir\VM_properties.csv" | Select-String "OS type"| %{$_ -replace ",OS type,",""}
if ( $UseAzureResourceManager )
{
$HostType = "Azure-ARM"
}
else
{
$HostType = "Azure"
}
$HostBy = ($xmlConfig.config.Azure.General.Location).Replace('"','')
$HostOS = cat "$LogDir\VM_properties.csv" | Select-String "Host Version"| %{$_ -replace ",Host Version,",""}
$GuestOSType = "Linux"
$GuestDistro = cat "$LogDir\VM_properties.csv" | Select-String "OS type"| %{$_ -replace ",OS type,",""}
$GuestSize = $testVMData.InstanceSize
$KernelVersion = cat "$LogDir\VM_properties.csv" | Select-String "Kernel version"| %{$_ -replace ",Kernel version,",""}
$connectionString = "Server=$dataSource;uid=$DBuser; pwd=$DBpassword;Database=$database;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
$SQLQuery = "INSERT INTO $dataTableName (TestCaseName,TestDate,HostType,HostBy,HostOS,GuestOSType,GuestDistro,GuestSize,KernelVersion,DpdkVersion,TestMode,Tx-pps,Rx-pps,Tx-bytes,Rx-bytes,Tx-packets,Rx-packets,RTx-pps,RTx-bytes,RTx-packets,Tx-pkt-size,Rx-pkt-size) VALUES "
foreach( $mode in $testpmdDataCsv)
{
$SQLQuery += "('$TestCaseName','$(Get-Date -Format yyyy-MM-dd)','$HostType','$HostBy','$HostOS','$GuestOSType','$GuestDistro','$GuestSize','$KernelVersion','dpdk-18.05.2','$mode.TestMode','$mode.Tx-pps','$mode.Rx-pps','$mode.Tx-bytes','$mode.Rx-bytes','$mode.Tx-packets','$mode.Rx-packets','$mode.RTx-pps','$mode.RTx-bytes','$mode.RTx-packets','$mode.Tx-pkt-size','$mode.Rx-pkt-size'),"
LogMsg "Collected performace data for $mode.TestMode mode."
}
$SQLQuery = $SQLQuery.TrimEnd(',')
LogMsg $SQLQuery
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
# $connection.Open()
# $command = $connection.CreateCommand()
# $command.CommandText = $SQLQuery
# $result = $command.executenonquery()
# $connection.Close()
# LogMsg "Uploading the test results done!!"
}
else{
LogMsg "Invalid database details. Failed to upload result to database!"
}
}
catch{
}
LogMsg "Test result : $testResult"
LogMsg ($testpmdDataCsv | Format-Table | Out-String)
}
catch
{
$ErrorMessage = $_.Exception.Message
LogMsg "EXCEPTION : $ErrorMessage"
}
Finally
{
$metaData = "NTTTCP RESULT"
if (!$testResult)
{
$testResult = "Aborted"
}
$resultArr += $testResult
$resultSummary += CreateResultSummary -testResult $testResult -metaData "DPDK-TESTPMD" -checkValues "PASS,FAIL,ABORTED" -testName $currentTestData.testName
}
}
else
{
$testResult = "Aborted"
$resultArr += $testResult
}
$result = GetFinalResultHeader -resultarr $resultArr
#Clean up the setup
DoTestCleanUp -result $result -testName $currentTestData.testName -deployedServices $isDeployed -ResourceGroups $isDeployed
#Return the result and summery to the test suite script..
return $result, $resultSummary

Просмотреть файл

@ -1,270 +1,289 @@
<TestCases>
<test>
<testName>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-Synthetic</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-NTTTCP.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>Synthetic</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testConnections="1 2 4 8 16 32 64 128 256 512 1024 2048 4096 6144 8192 10240"</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc</Tags>
<TestID>Perf_Network_001</TestID>
</test>
<test>
<testName>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-SRIOV</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-NTTTCP.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testConnections="1 2 4 8 16 32 64 128 256 512 1024 2048 4096 6144 8192 10240"</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_002</TestID>
</test>
<test>
<testName>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-Syntetic</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-LAGSCOPE.ps1</PowershellScript>
<setupType>M1S1</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>pingIteration=1000000</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc</Tags>
<TestID>Perf_Network_003</TestID>
</test>
<test>
<testName>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-SRIOV</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-LAGSCOPE.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>pingIteration=1000000</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_004</TestID>
</test>
<test>
<testName>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-Synthetic</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-IPERF3.ps1</PowershellScript>
<setupType>M1S1</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testType=udp</param>
<param>max_parallel_connections_per_instance=64</param>
<param>connections=(1 2 4 8 16 32 64 128 256 512 1024)</param>
<param>bufferLengths=(1024 8192)</param>
<param>IPversion=4</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>udp,network,hv_netvsc</Tags>
<TestID>Perf_Network_005</TestID>
</test>
<test>
<testName>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-SRIOV</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-IPERF3.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testType=udp</param>
<param>max_parallel_connections_per_instance=64</param>
<param>connections=(1 2 4 8 16 32 64 128 256 512 1024)</param>
<param>bufferLengths=(1024 8192)</param>
<param>IPversion=4</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>udp,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_006</TestID>
</test>
<test>
<testName>PERF-STORAGE-4K-IO</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-MULTIDISK-RAID0-FIO.ps1</PowershellScript>
<setupType>DS14DISK12</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_001</TestID>
</test>
<test>
<testName>PERF-STORAGE-1024K-IO</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-MULTIDISK-RAID0-FIO.ps1</PowershellScript>
<setupType>DS14DISK12</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=1024</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=1024</param>
<param>fileSize=1023G</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_002</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-Synthetic-TCP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=tcp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-Synthetic-UDP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=udp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-SRIOV-TCP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=tcp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-SRIOV-UDP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=tcp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<TestCases>
<test>
<testName>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-Synthetic</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-NTTTCP.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>Synthetic</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testConnections="1 2 4 8 16 32 64 128 256 512 1024 2048 4096 6144 8192 10240"</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc</Tags>
<TestID>Perf_Network_001</TestID>
</test>
<test>
<testName>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-SRIOV</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-THROUGHPUT-MULTICONNECTION-NTTTCP.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testConnections="1 2 4 8 16 32 64 128 256 512 1024 2048 4096 6144 8192 10240"</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_002</TestID>
</test>
<test>
<testName>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-Syntetic</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-LAGSCOPE.ps1</PowershellScript>
<setupType>M1S1</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>pingIteration=1000000</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc</Tags>
<TestID>Perf_Network_003</TestID>
</test>
<test>
<testName>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-SRIOV</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-TCP-LATENCY-MULTICONNECTION-LAGSCOPE.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>pingIteration=1000000</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>tcp,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_004</TestID>
</test>
<test>
<testName>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-Synthetic</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-IPERF3.ps1</PowershellScript>
<setupType>M1S1</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testType=udp</param>
<param>max_parallel_connections_per_instance=64</param>
<param>connections=(1 2 4 8 16 32 64 128 256 512 1024)</param>
<param>bufferLengths=(1024 8192)</param>
<param>IPversion=4</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>udp,network,hv_netvsc</Tags>
<TestID>Perf_Network_005</TestID>
</test>
<test>
<testName>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-SRIOV</testName>
<testScript></testScript>
<PowershellScript>PERF-NETWORK-UDP-THROUGHPUT-MULTICONNECTION-IPERF3.ps1</PowershellScript>
<setupType>M1S1</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=300</param>
<param>testType=udp</param>
<param>max_parallel_connections_per_instance=64</param>
<param>connections=(1 2 4 8 16 32 64 128 256 512 1024)</param>
<param>bufferLengths=(1024 8192)</param>
<param>IPversion=4</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Network</Area>
<Tags>udp,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_006</TestID>
</test>
<test>
<testName>PERF-STORAGE-4K-IO</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-MULTIDISK-RAID0-FIO.ps1</PowershellScript>
<setupType>DS14DISK12</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_001</TestID>
</test>
<test>
<testName>PERF-STORAGE-1024K-IO</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-MULTIDISK-RAID0-FIO.ps1</PowershellScript>
<setupType>DS14DISK12</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=1024</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=1024</param>
<param>fileSize=1023G</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_002</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-Synthetic-TCP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=tcp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-Synthetic-UDP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=udp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-SRIOV-TCP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=tcp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-STORAGE-OVER-NFS-SRIOV-UDP-4K</testName>
<testScript></testScript>
<PowershellScript>PERF-STORAGE-OVER-NFS.ps1</PowershellScript>
<setupType>DS14DISK12NFS</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh,.\Testscripts\Linux\fio_jason_parser.sh,.\Testscripts\Linux\JSON.awk,.\Testscripts\Linux\perf_fio_nfs.sh,.\Testscripts\Linux\CreateRaid.sh</files>
<TestParameters>
<param>modes='randread randwrite read write'</param>
<param>startThread=1</param>
<param>maxThread=1024</param>
<param>startIO=4</param>
<param>numjobs=1</param>
<param>ioruntime=300</param>
<param>maxIO=4</param>
<param>fileSize=1023G</param>
<param>nfsprotocol=tcp</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>Storage</Area>
<Tags>hv_storvsc,storage</Tags>
<TestID>Perf_Storage_003</TestID>
</test>
<test>
<testName>PERF-DPDK-TESTPMD-TEST</testName>
<PowershellScript>PERF-DPDK-TESTPMD-TEST.ps1</PowershellScript>
<setupType>DPDK</setupType>
<AdditionalHWConfig>
<Networking>SRIOV</Networking>
</AdditionalHWConfig>
<SubtestValues>This-tag-will-be-removed</SubtestValues>
<files>.\Testscripts\Linux\azuremodules.sh</files>
<TestParameters>
<param>testDuration=60</param>
<param>modes="rxonly io"</param>
</TestParameters>
<Platform>Azure</Platform>
<Category>Performance</Category>
<Area>DPDK</Area>
<Tags>dpdk,network,hv_netvsc,sriov</Tags>
<TestID>Perf_Network_007</TestID>
</test>
</TestCases>