From: Alexey Kodanev <alexey.kodanev@oracle.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH 1/4] network/stress/icmp: add icmp-multi-diffip.sh to implement diffip stress test
Date: Tue, 17 May 2016 14:46:33 +0300 [thread overview]
Message-ID: <573B0499.9020308@oracle.com> (raw)
In-Reply-To: <1462780623-26778-1-git-send-email-haliu@redhat.com>
Hi,
On 05/09/2016 10:57 AM, Hangbin Liu wrote:
> Signed-off-by: Hangbin Liu <haliu@redhat.com>
> ---
> runtest/network_stress.icmp | 29 ++---
> testcases/network/stress/icmp/icmp-multi-diffip.sh | 138 +++++++++++++++++++++
> 2 files changed, 153 insertions(+), 14 deletions(-)
> create mode 100755 testcases/network/stress/icmp/icmp-multi-diffip.sh
>
> diff --git a/runtest/network_stress.icmp b/runtest/network_stress.icmp
> index 2b989b1..87feb74 100644
> --- a/runtest/network_stress.icmp
> +++ b/runtest/network_stress.icmp
> @@ -36,21 +36,22 @@ icmp6-uni-basic05 icmp-uni-basic.sh -6 -p esp -m tunnel -s "10 100 1000 10000 65
> icmp6-uni-basic06 icmp-uni-basic.sh -6 -p ipcomp -m transport -s "10 100 1000 10000 65000"
> icmp6-uni-basic07 icmp-uni-basic.sh -6 -p ipcomp -m tunnel -s "10 100 1000 10000 65000"
>
> -icmp4-multi-diffip01 icmp4-multi-diffip01
> -icmp4-multi-diffip02 icmp4-multi-diffip02
> -icmp4-multi-diffip03 icmp4-multi-diffip03
> -icmp4-multi-diffip04 icmp4-multi-diffip04
> -icmp4-multi-diffip05 icmp4-multi-diffip05
> -icmp4-multi-diffip06 icmp4-multi-diffip06
> -icmp4-multi-diffip07 icmp4-multi-diffip07
> +# networkstress.sh set IP_TOTAL=10000 by default, which is too much for these tests
if it is too much, I would rather check it in the script and set to the
appropriate maximum.
> +icmp4-multi-diffip01 icmp-multi-diffip.sh -n 100
> +icmp4-multi-diffip02 icmp-multi-diffip.sh -n 100 -p ah -m transport
> +icmp4-multi-diffip03 icmp-multi-diffip.sh -n 100 -p ah -m tunnel
> +icmp4-multi-diffip04 icmp-multi-diffip.sh -n 100 -p esp -m transport
> +icmp4-multi-diffip05 icmp-multi-diffip.sh -n 100 -p esp -m tunnel
> +icmp4-multi-diffip06 icmp-multi-diffip.sh -n 100 -p ipcomp -m transport
> +icmp4-multi-diffip07 icmp-multi-diffip.sh -n 100 -p ipcomp -m tunnel
>
> -icmp6-multi-diffip01 icmp6-multi-diffip01
> -icmp6-multi-diffip02 icmp6-multi-diffip02
> -icmp6-multi-diffip03 icmp6-multi-diffip03
> -icmp6-multi-diffip04 icmp6-multi-diffip04
> -icmp6-multi-diffip05 icmp6-multi-diffip05
> -icmp6-multi-diffip06 icmp6-multi-diffip06
> -icmp6-multi-diffip07 icmp6-multi-diffip07
> +icmp6-multi-diffip01 icmp-multi-diffip.sh -6 -n 100
> +icmp6-multi-diffip02 icmp-multi-diffip.sh -6 -n 100 -p ah -m transport
> +icmp6-multi-diffip03 icmp-multi-diffip.sh -6 -n 100 -p ah -m tunnel
> +icmp6-multi-diffip04 icmp-multi-diffip.sh -6 -n 100 -p esp -m transport
> +icmp6-multi-diffip05 icmp-multi-diffip.sh -6 -n 100 -p esp -m tunnel
> +icmp6-multi-diffip06 icmp-multi-diffip.sh -6 -n 100 -p ipcomp -m transport
> +icmp6-multi-diffip07 icmp-multi-diffip.sh -6 -n 100 -p ipcomp -m tunnel
>
> icmp4-multi-diffnic01 icmp4-multi-diffnic01
> icmp4-multi-diffnic02 icmp4-multi-diffnic02
> diff --git a/testcases/network/stress/icmp/icmp-multi-diffip.sh b/testcases/network/stress/icmp/icmp-multi-diffip.sh
> new file mode 100755
> index 0000000..f6f5f4b
> --- /dev/null
> +++ b/testcases/network/stress/icmp/icmp-multi-diffip.sh
> @@ -0,0 +1,138 @@
> +#!/bin/sh
> +# Copyright (c) 2016 Red Hat Inc., All Rights Reserved.
> +# Copyright (c) International Business Machines Corp., 2005
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License as
> +# published by the Free Software Foundation; either version 2 of
> +# the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it would be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, see <http://www.gnu.org/licenses/>.
> +#
> +# Author: Hangbin Liu <haliu@redhat.com>
> +#
> +################################################################################
> +TCID=${TCID:-icmp-multi-diffip}
> +TST_TOTAL=1
> +TST_COUNT=1
> +TST_CLEANUP="do_cleanup"
> +
> +. ipsec_lib.sh
> +
> +while getopts "hl:m:n:N:p:s:S:6" opt; do
> + case "$opt" in
> + h)
> + echo "Usage:"
> + echo "h help"
> + echo "l n n is the number of test link when tests run"
> + echo "m x x is ipsec mode, could be transport / tunnel"
> + echo "n n n is number of total ip addresses for testing"
> + echo "N n n is seconds of the network stress duration time"
> + echo "p x x is ipsec protocol, could be ah / esp / ipcomp"
> + echo "s x x is icmp messge size array"
> + echo "S n n is IPsec SPI value"
> + echo "6 run over IPv6"
> + exit 0
> + ;;
> + l) LINK_NUM=$OPTARG ;;
> + m) IPSEC_MODE=$OPTARG ;;
> + n) IP_TOTAL=$OPTARG ;;
> + N) NS_DURATION=$OPTARG ;;
> + p) IPSEC_PROTO=$OPTARG ;;
> + s) ICMP_SIZE_ARRAY=$OPTARG ;;
> + S) SPI=$OPTARG ;;
> + 6) # skip, test_net library already processed it
> + ;;
> + *) tst_brkm TBROK "unknown option: $opt" ;;
> + esac
> +done
> +
> +SPI=${SPI:-1000}
> +LINK_NUM=${LINK_NUM:-0}
> +IP_TOTAL=${IP_TOTAL:-100}
> +DO_IPSEC=${DO_IPSEC:-false}
> +NS_DURATION=${NS_DURATION:-"3600"}
> +# Use large enough pkt size(65000) to fix each encapsulation
> +ICMP_SIZE_ARRAY=${ICMP_SIZE_ARRAY:-"10 100 1000 10000 65000"}
> +[ -n "$IPSEC_MODE" -a -n "$IPSEC_PROTO" ] && DO_IPSEC=true || DO_IPSEC=false
> +
> +do_cleanup()
> +{
> + pkill -9 ping$TST_IPV6 &> /dev/null
> + tst_ipsec_cleanup
> + # Clean up each interface
> + tst_restore_ipaddr lhost ${LINK_NUM}
> + tst_restore_ipaddr rhost ${LINK_NUM}
> +}
> +
> +# Test description
> +tst_resm TINFO "Sending ICMP messages with the following conditions"
> +tst_resm TINFO "- Target number of the connection is $IP_TOTAL"
> +tst_resm TINFO "- Version of IP is IPv${TST_IPV6:-4}"
> +tst_resm TINFO "- Size of packets are ( $ICMP_SIZE_ARRAY )"
> +
> +if $DO_IPSEC; then
> + case $IPSEC_PROTO in
> + ah) tst_resm TINFO "- IPsec [ AH / $IPSEC_MODE ]" ;;
> + esp) tst_resm TINFO "- IPsec [ ESP / $IPSEC_MODE ]" ;;
> + ipcomp) tst_resm TINFO "- IPcomp [ $IPSEC_MODE ]" ;;
> + esac
> +fi
> +
> +# name of interface of the local/remote host
> +lhost_iface=$(tst_iface lhost $LINK_NUM)
> +rhost_iface=$(tst_iface rhost $LINK_NUM)
> +
> +[ "$TST_IPV6" ] && netmask=64 || netmask=30
> +for cnt in $(seq $IP_TOTAL); do
> + x=`expr $cnt \/ 64 % 255`
> + y=`expr $cnt % 64 \* 4 + 1`
> + if [ $x -ge 255 ]; then
> + tst_resm TCONF "This script cannot add more than $cnt addresses"
> + break
> + fi
> + if [ "$TST_IPV6" ]; then
> + lhost_addr=${IPV6_NET32_UNUSED}:$x:$y:${LHOST_IPV6_HOST}
> + rhost_addr=${IPV6_NET32_UNUSED}:$x:$y:${RHOST_IPV6_HOST}
> + else
> + lhost_addr=${IPV4_NET16_UNUSED}.$x.$y
> + rhost_addr=${IPV4_NET16_UNUSED}.$x.$(($y + 1))
> + fi
> + ROD ip addr add $lhost_addr/$netmask dev $lhost_iface
> + tst_rhost_run -s -c "ip addr add $rhost_addr/$netmask dev $rhost_iface"
> +
> + # Configure SAD/SPD
> + if $DO_IPSEC ; then
> + tst_ipsec lhost $IPSEC_PROTO $IPSEC_MODE $SPI $lhost_addr $rhost_addr
> + tst_ipsec rhost $IPSEC_PROTO $IPSEC_MODE $SPI $rhost_addr $lhost_addr
> + fi
> +
> + # Make sure the connectvity
> + tst_ping $lhost_iface $rhost_addr
> + if [ $? -ne 0 ]; then
> + tst_resm TFAIL "IPv${TST_IPV6:-4} $lhost_addr/$netmask -- $rhost_addr/$netmask $IPSEC_PROTO $IPSEC_MODE connectivity"
proto/mode were printed in the beginning of the test so it seems
redundant to print it again and again during the test.
> + else
> + tst_resm TPASS "IPv${TST_IPV6:-4} $lhost_addr/$netmask -- $rhost_addr/$netmask $IPSEC_PROTO $IPSEC_MODE connectivity"
> + fi
TST_TOTAL doesn't match TPASS/TFAIL assertions.
> + rhost_addr_array[$cnt]=$rhost_addr
Please don't use arrays, it's a bash extension.
> +done
> +
> +# Do Stress testing, ping flood
> +tst_resm TINFO "start ping flood stress testing"
> +for rhost_addr in ${rhost_addr_array[@]}; do
> + for size in ${ICMP_SIZE_ARRAY}; do
> + ping$TST_IPV6 -f -q -I $lhost_iface $rhost_addr -s $size &> /dev/null &
> + done
> +done
> +
> +sleep ${NS_DURATION}
> +
> +tst_resm TPASS "$TCID IPv${TST_IPV6:-4} $IPSEC_PROTO $IPSEC_MODE stress test"
Is the test always passing here with no checks?
Why we need to print $TCID?
> +tst_exit
Thanks,
Alexey
next prev parent reply other threads:[~2016-05-17 11:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-09 7:57 [LTP] [PATCH 1/4] network/stress/icmp: add icmp-multi-diffip.sh to implement diffip stress test Hangbin Liu
2016-05-09 7:57 ` [LTP] [PATCH 2/4] network/stress/icmp: remove old multi-diffip/* tests Hangbin Liu
2016-05-09 7:57 ` [LTP] [PATCH 3/4] network/stress/icmp: add icmp-multi-diffnic.sh to implement diffnic stress test Hangbin Liu
2016-05-17 11:18 ` Alexey Kodanev
2016-05-19 13:55 ` Hangbin Liu
2016-05-09 7:57 ` [LTP] [PATCH 4/4] network/stress/icmp: remove old multi-diffnic/* tests Hangbin Liu
2016-05-17 11:46 ` Alexey Kodanev [this message]
2016-05-19 14:29 ` [LTP] [PATCH 1/4] network/stress/icmp: add icmp-multi-diffip.sh to implement diffip stress test Hangbin Liu
2016-05-19 16:01 ` Alexey Kodanev
2016-05-20 2:16 ` Hangbin Liu
2016-05-20 2:38 ` Hangbin Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=573B0499.9020308@oracle.com \
--to=alexey.kodanev@oracle.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.