From patchwork Mon Jun 18 17:37:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Vorel X-Patchwork-Id: 931111 X-Patchwork-Delegate: petr.vorel@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.cz Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 418dbL5vMcz9ryk for ; Tue, 19 Jun 2018 03:37:50 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 4C8A53E709F for ; Mon, 18 Jun 2018 19:37:48 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) by picard.linux.it (Postfix) with ESMTP id A741A3E70A2 for ; Mon, 18 Jun 2018 19:37:37 +0200 (CEST) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 1CF6A10001D2 for ; Mon, 18 Jun 2018 19:37:30 +0200 (CEST) Received: from relay1.suse.de (charybdis-ext-too.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 80F9BAF80; Mon, 18 Jun 2018 17:37:30 +0000 (UTC) From: Petr Vorel To: ltp@lists.linux.it Date: Mon, 18 Jun 2018 19:37:07 +0200 Message-Id: <20180618173707.30351-7-pvorel@suse.cz> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618173707.30351-1-pvorel@suse.cz> References: <20180618173707.30351-1-pvorel@suse.cz> X-Virus-Scanned: clamav-milter 0.99.2 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_PASS autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH 6/6] net/{stress, virt}: Migrate tests using virt_lib.sh and ipsec_lib.sh X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" + these libraries itself. It was needed to migrate it all in once, as macsec0{1,2}.sh tests are using both libraries. This includes: * Create setup, getopts and helper function for both libraries. * Using TST_TEST_DATA and TST_TEST_DATA_IFS in many test cases (simplify tests and allow to have more TST_CNT to keep readability of output + required by udp_ipsec.sh and udp_ipsec_vti.sh otherwise it'd need to use getopts to determine type of udp, as passing parameter to tst_run is not not recommended to new API). * Put code into TST_TESTFUNC functions. * Move anything based on TST_IPV6 to TST_SETUP setup functions (as TST_IPV6 is not set until setup) Other changes: * udp_ipsec{,_vti}.sh: were calling do_test() twice, with parameter. Now they use correctly TST_CNT and no params. Order of running tests changed. Before first were run udp tests for all items in $IPSEC_SIZE_ARRAY, then all udp_lite tests. Now for each item in $IPSEC_SIZE_ARRAY both udp and udp_lite tests are run. * gre01.sh: Move back device type setting (changed in 57738337a "network/gre01: fix device type setting"). Signed-off-by: Petr Vorel --- testcases/network/stress/dccp/dccp_ipsec.sh | 19 +-- .../network/stress/dccp/dccp_ipsec_vti.sh | 19 +-- .../network/stress/icmp/icmp-uni-basic.sh | 26 +-- testcases/network/stress/icmp/icmp-uni-vti.sh | 24 +-- testcases/network/stress/ipsec/ipsec_lib.sh | 141 ++++++++-------- testcases/network/stress/sctp/sctp_ipsec.sh | 20 +-- .../network/stress/sctp/sctp_ipsec_vti.sh | 20 +-- testcases/network/stress/tcp/tcp_ipsec.sh | 22 +-- testcases/network/stress/tcp/tcp_ipsec_vti.sh | 21 +-- testcases/network/stress/udp/udp_ipsec.sh | 24 ++- testcases/network/stress/udp/udp_ipsec_vti.sh | 24 ++- testcases/network/virt/geneve01.sh | 42 ++--- testcases/network/virt/gre01.sh | 34 ++-- testcases/network/virt/ipvlan01.sh | 12 +- testcases/network/virt/macsec01.sh | 30 ++-- testcases/network/virt/macsec02.sh | 32 ++-- testcases/network/virt/macvlan01.sh | 17 +- testcases/network/virt/macvtap01.sh | 17 +- testcases/network/virt/virt_lib.sh | 154 +++++++----------- testcases/network/virt/vlan01.sh | 19 +-- testcases/network/virt/vlan02.sh | 12 +- testcases/network/virt/vlan03.sh | 50 +++--- testcases/network/virt/vxlan01.sh | 15 +- testcases/network/virt/vxlan02.sh | 15 +- testcases/network/virt/vxlan03.sh | 37 +++-- 25 files changed, 401 insertions(+), 445 deletions(-) diff --git a/testcases/network/stress/dccp/dccp_ipsec.sh b/testcases/network/stress/dccp/dccp_ipsec.sh index d1afd4569..ef80bf979 100755 --- a/testcases/network/stress/dccp/dccp_ipsec.sh +++ b/testcases/network/stress/dccp/dccp_ipsec.sh @@ -1,25 +1,18 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=dccp_ipsec -TST_TOTAL=3 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_SETUP=tst_ipsec_setup +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $(tst_ipaddr rhost) -T dccp -n $p -N $p \ - -r $IPSEC_REQUESTS - done + tst_netload -H $(tst_ipaddr rhost) -T dccp -n $2 -N $2 -r $IPSEC_REQUESTS } -tst_ipsec_setup - -do_test - -tst_exit +tst_run diff --git a/testcases/network/stress/dccp/dccp_ipsec_vti.sh b/testcases/network/stress/dccp/dccp_ipsec_vti.sh index f5ff1029d..ee2b0d4ca 100755 --- a/testcases/network/stress/dccp/dccp_ipsec_vti.sh +++ b/testcases/network/stress/dccp/dccp_ipsec_vti.sh @@ -1,25 +1,18 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=dccp_ipsec_vti -TST_TOTAL=3 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_SETUP=tst_ipsec_setup_vti +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $ip_rmt_tun -T dccp -n $p -N $p \ - -r $IPSEC_REQUESTS - done + tst_netload -H $ip_rmt_tun -T dccp -n $2 -N $2 -r $IPSEC_REQUESTS } -tst_ipsec_setup_vti - -do_test - -tst_exit +tst_run diff --git a/testcases/network/stress/icmp/icmp-uni-basic.sh b/testcases/network/stress/icmp/icmp-uni-basic.sh index b168a821c..5980b81e5 100755 --- a/testcases/network/stress/icmp/icmp-uni-basic.sh +++ b/testcases/network/stress/icmp/icmp-uni-basic.sh @@ -1,21 +1,25 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2016 Red Hat Inc., All Rights Reserved. # Copyright (c) International Business Machines Corp., 2005 # Author: Hangbin Liu -TCID=${TCID:-icmp-uni-basic} -TST_TOTAL=1 -TST_COUNT=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_SETUP=do_setup +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh -tst_ipsec_setup - -PING_MAX="$IPSEC_REQUESTS" +do_setup() +{ + tst_ipsec_setup + PING_MAX="$IPSEC_REQUESTS" + tst_res TINFO "Sending ICMP messages" +} -tst_resm TINFO "Sending ICMP messages" -tst_ping $(tst_iface) $(tst_ipaddr rhost) $IPSEC_SIZE_ARRAY +do_test() +{ + tst_ping $(tst_iface) $(tst_ipaddr rhost) $2 +} -tst_exit +tst_run diff --git a/testcases/network/stress/icmp/icmp-uni-vti.sh b/testcases/network/stress/icmp/icmp-uni-vti.sh index 9a7fba59f..24eca177c 100755 --- a/testcases/network/stress/icmp/icmp-uni-vti.sh +++ b/testcases/network/stress/icmp/icmp-uni-vti.sh @@ -1,24 +1,24 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2016 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=icmp-uni-vti -TST_TOTAL=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_SETUP=do_setup +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh -do_test() +do_setup() { + tst_ipsec_setup_vti PING_MAX="$IPSEC_REQUESTS" - - tst_resm TINFO "Sending ICMP messages" - tst_ping $tst_vti $ip_rmt_tun $IPSEC_SIZE_ARRAY + tst_res TINFO "Sending ICMP messages" } -tst_ipsec_setup_vti - -do_test +do_test() +{ + tst_ping $tst_vti $ip_rmt_tun $2 +} -tst_exit +tst_run diff --git a/testcases/network/stress/ipsec/ipsec_lib.sh b/testcases/network/stress/ipsec/ipsec_lib.sh index e851d46e4..6112862ae 100644 --- a/testcases/network/stress/ipsec/ipsec_lib.sh +++ b/testcases/network/stress/ipsec/ipsec_lib.sh @@ -17,26 +17,24 @@ CALGO="deflate" IPSEC_REQUESTS="500" IPSEC_SIZE_ARRAY="${IPSEC_SIZE_ARRAY:-10:100:1000:2000:10000:65000}" +ipsec_lib_usage() +{ + 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 "p x x is ipsec protocol, could be ah / esp / comp" + echo "s x x is icmp message size array" + echo "S n n is IPsec SPI value" + echo "k x key for vti interface" + echo "A x Authenticated encryption with associated data algorithm" + echo "e x Encryption algorithm" + echo "a x Authentication algorithm" + echo "c x Compression algorithm" + echo "r x Num of requests, PING_MAX or netstress' '-r' opt" +} + ipsec_lib_parse_args() { case "$1" 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 "p x x is ipsec protocol, could be ah / esp / comp" - echo "s x x is icmp message size array (items separated by ':')" - echo "S n n is IPsec SPI value" - echo "k x key for vti interface" - echo "A x Authenticated encryption with associated data algorithm" - echo "e x Encryption algorithm" - echo "a x Authentication algorithm" - echo "c x Compression algorithm" - echo "r x Num of requests, PING_MAX or netstress' '-r' opt" - echo "6 run over IPv6" - exit 0 - ;; l) LINK_NUM=$2 ;; m) IPSEC_MODE=$2 ;; p) IPSEC_PROTO=$2 ;; @@ -48,21 +46,53 @@ ipsec_lib_parse_args() a) AALGO=$2 ;; c) CALGO=$2 ;; r) IPSEC_REQUESTS="$2" ;; - *) tst_brkm TBROK "unknown option: $1" ;; esac +} + +ipsec_lib_setup() +{ + case $AEALGO in + rfc4106_128|rfc4543_128) AEALGO_KEY=$(get_key 160) ;; + rfc4106_192|rfc4543_192) AEALGO_KEY=$(get_key 224) ;; + rfc4106_256|rfc4543_256) AEALGO_KEY=$(get_key 288) ;; + rfc4309_128) AEALGO_KEY=$(get_key 152) ;; + rfc4309_192) AEALGO_KEY=$(get_key 216) ;; + rfc4309_256) AEALGO_KEY=$(get_key 280) ;; + esac + + case $EALGO in + des) EALGO_KEY=$(get_key 64) ;; + des3_ede) EALGO_KEY=$(get_key 192) ;; + cast5) EALGO_KEY=$(get_key 128) ;; + blowfish) EALGO_KEY=$(get_key 448) ;; + aes|twofish|camellia|serpent) EALGO_KEY=$(get_key 256) ;; + *) tst_brk TBROK "unknown enc alg: $EALGO" ;; + esac + + case $AALGO in + sha1|rmd160) AALGO_KEY=$(get_key 160) ;; + sha256) AALGO_KEY=$(get_key 256) ;; + sha384) AALGO_KEY=$(get_key 384) ;; + sha512) AALGO_KEY=$(get_key 512) ;; + *) tst_brk TBROK "unknown auth alg: $AALGO" ;; + esac + + SPI=${SPI:-1000} + VTI_KEY=${VTI_KEY:-10} + cleanup_vti= + ALG= + ALGR= - local IFS=":" - local tmp="$IPSEC_SIZE_ARRAY" - local p - for p in $IPSEC_SIZE_ARRAY; do - tmp="$p " - done - IPSEC_SIZE_ARRAY="$tmp" + if [ -z "$IPSEC_LIB_IGNORE_IPSEC_SIZE_ARRAY" ]; then + TST_TEST_DATA_IFS=":" + TST_TEST_DATA="$IPSEC_SIZE_ARRAY" + fi } -TST_OPTS="hl:m:p:s:S:k:A:e:a:c:r:" +TST_OPTS="l:m:p:s:S:k:A:e:a:c:r:" TST_PARSE_ARGS=ipsec_lib_parse_args -TST_USE_LEGACY_API=1 +TST_SETUP=${TST_SETUP:-ipsec_lib_setup} +TST_USAGE=ipsec_lib_usage . tst_net.sh get_key() @@ -72,43 +102,12 @@ get_key() echo "0x$(hexdump -vn $bytes -e '1/1 "%02x"' /dev/urandom)" } -case $AEALGO in -rfc4106_128|rfc4543_128) AEALGO_KEY=$(get_key 160) ;; -rfc4106_192|rfc4543_192) AEALGO_KEY=$(get_key 224) ;; -rfc4106_256|rfc4543_256) AEALGO_KEY=$(get_key 288) ;; -rfc4309_128) AEALGO_KEY=$(get_key 152) ;; -rfc4309_192) AEALGO_KEY=$(get_key 216) ;; -rfc4309_256) AEALGO_KEY=$(get_key 280) ;; -esac - -case $EALGO in -des) EALGO_KEY=$(get_key 64) ;; -des3_ede) EALGO_KEY=$(get_key 192) ;; -cast5) EALGO_KEY=$(get_key 128) ;; -blowfish) EALGO_KEY=$(get_key 448) ;; -aes|twofish|camellia|serpent) EALGO_KEY=$(get_key 256) ;; -*) tst_brkm TBROK "unknown enc alg: $EALGO" ;; -esac - -case $AALGO in -sha1|rmd160) AALGO_KEY=$(get_key 160) ;; -sha256) AALGO_KEY=$(get_key 256) ;; -sha384) AALGO_KEY=$(get_key 384) ;; -sha512) AALGO_KEY=$(get_key 512) ;; -*) tst_brkm TBROK "unknown auth alg: $AALGO" ;; -esac - -SPI=${SPI:-1000} -VTI_KEY=${VTI_KEY:-10} -cleanup_vti= -ALG= -ALGR= - tst_ipsec_setup() { + ipsec_lib_setup # Configure SAD/SPD if [ -n "$IPSEC_MODE" -a -n "$IPSEC_PROTO" ]; then - tst_resm TINFO "IPsec[$IPSEC_PROTO/$IPSEC_MODE]" + tst_res TINFO "IPsec[$IPSEC_PROTO/$IPSEC_MODE]" tst_ipsec lhost $(tst_ipaddr) $(tst_ipaddr rhost) tst_ipsec rhost $(tst_ipaddr rhost) $(tst_ipaddr) fi @@ -125,8 +124,6 @@ tst_ipsec_cleanup() ip li del $cleanup_vti 2>/dev/null tst_rhost_run -c "ip li del $cleanup_vti 2>/dev/null" fi - - [ "$TST_NEEDS_TMPDIR" = 1 ] && tst_rmdir } ipsec_set_algoline() @@ -161,7 +158,7 @@ ipsec_set_algoline() ALGR=$ALG ;; *) - tst_brkm TCONF "tst_ipsec protocol mismatch" + tst_brk TCONF "tst_ipsec protocol mismatch" ;; esac } @@ -173,11 +170,11 @@ ipsec_try() if echo "$output" | grep -q "TERR"; then echo "$output" | grep -q \ 'RTNETLINK answers: Function not implemented' && \ - tst_brkm TCONF "'$@': not implemented" + tst_brk TCONF "'$@': not implemented" echo "$output" | grep -q \ 'RTNETLINK answers: Operation not supported' && \ - tst_brkm TCONF "'$@': not supported (maybe missing 'ip${TST_IPV6}_vti' kernel module)" - tst_brkm TBROK "$@ failed: $output" + tst_brk TCONF "'$@': not supported (maybe missing 'ip${TST_IPV6}_vti' kernel module)" + tst_brk TBROK "$@ failed: $output" fi } @@ -189,7 +186,7 @@ ipsec_try() tst_ipsec() { if [ $# -ne 3 ]; then - tst_brkm TCONF "tst_ipsec parameter mismatch" + tst_brk TCONF "tst_ipsec parameter mismatch" fi local target=$1 @@ -237,7 +234,7 @@ tst_ipsec() tst_ipsec_vti() { if [ $# -ne 4 ]; then - tst_brkm TCONF "tst_ipsec_vti parameter mismatch" + tst_brk TCONF "tst_ipsec_vti parameter mismatch" fi local target=$1 @@ -255,7 +252,7 @@ tst_ipsec_vti() local rd="dev $(tst_iface rhost)" ip li add type vti help 2>&1 | grep -q vti || \ - tst_brkm TCONF "iproute doesn't support 'vti'" + tst_brk TCONF "iproute doesn't support 'vti'" ipsec_set_algoline @@ -296,6 +293,8 @@ tst_ipsec_vti() # * ip_rmt_tun - remote IP address tst_ipsec_setup_vti() { + ipsec_lib_setup + if_loc=$(tst_iface) if_rmt=$(tst_iface rhost) @@ -304,7 +303,7 @@ tst_ipsec_setup_vti() tst_vti="ltp_vti0" - tst_resm TINFO "Test vti$TST_IPV6 + IPsec[$IPSEC_PROTO/$IPSEC_MODE]" + tst_res TINFO "Test vti$TST_IPV6 + IPsec[$IPSEC_PROTO/$IPSEC_MODE]" tst_ipsec_vti lhost $ip_loc $ip_rmt $tst_vti tst_ipsec_vti rhost $ip_rmt $ip_loc $tst_vti @@ -322,7 +321,7 @@ tst_ipsec_setup_vti() ROD ip route add ${IPV4_NET16_UNUSED}.1.0/$mask dev $tst_vti fi - tst_resm TINFO "Add IPs to vti tunnel, " \ + tst_res TINFO "Add IPs to vti tunnel, " \ "loc: $ip_loc_tun/$mask, rmt: $ip_rmt_tun/$mask" ROD ip a add $ip_loc_tun/$mask dev $tst_vti nodad diff --git a/testcases/network/stress/sctp/sctp_ipsec.sh b/testcases/network/stress/sctp/sctp_ipsec.sh index ee9018f01..8a7b885d9 100755 --- a/testcases/network/stress/sctp/sctp_ipsec.sh +++ b/testcases/network/stress/sctp/sctp_ipsec.sh @@ -1,25 +1,19 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=sctp_ipsec -TST_TOTAL=3 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_SETUP=tst_ipsec_setup +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $(tst_ipaddr rhost) -T sctp -n $p -N $p \ - -r $IPSEC_REQUESTS -S $(tst_ipaddr) - done + tst_netload -H $(tst_ipaddr rhost) -T sctp -n $2 -N $2 \ + -r $IPSEC_REQUESTS -S $(tst_ipaddr) } -tst_ipsec_setup - -do_test - -tst_exit +tst_run diff --git a/testcases/network/stress/sctp/sctp_ipsec_vti.sh b/testcases/network/stress/sctp/sctp_ipsec_vti.sh index ed851475a..d0f24c727 100755 --- a/testcases/network/stress/sctp/sctp_ipsec_vti.sh +++ b/testcases/network/stress/sctp/sctp_ipsec_vti.sh @@ -1,25 +1,19 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=sctp_ipsec_vti -TST_TOTAL=3 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_SETUP=tst_ipsec_setup_vti +TST_CLEANUP=tst_ipsec_cleanup +TST_TESTFUNC=do_test . ipsec_lib.sh do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $ip_rmt_tun -T sctp -n $p -N $p \ - -r $IPSEC_REQUESTS -S $ip_loc_tun - done + tst_netload -H $ip_rmt_tun -T sctp -n $2 -N $2 -r $IPSEC_REQUESTS \ + -S $ip_loc_tun } -tst_ipsec_setup_vti - -do_test - -tst_exit +tst_run diff --git a/testcases/network/stress/tcp/tcp_ipsec.sh b/testcases/network/stress/tcp/tcp_ipsec.sh index 0f875948c..d62272db0 100755 --- a/testcases/network/stress/tcp/tcp_ipsec.sh +++ b/testcases/network/stress/tcp/tcp_ipsec.sh @@ -1,27 +1,21 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=tcp_ipsec -TST_TOTAL=3 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" +TST_TESTFUNC=do_test +TST_SETUP=tst_ipsec_setup +TST_CLEANUP=tst_ipsec_cleanup +. ipsec_lib.sh max_requests=10 -. ipsec_lib.sh - do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $(tst_ipaddr rhost) -n $p -N $p \ - -r $IPSEC_REQUESTS -R $max_requests - done + tst_netload -H $(tst_ipaddr rhost) -n $2 -N $2 -r $IPSEC_REQUESTS \ + -R $max_requests } -tst_ipsec_setup - -do_test - -tst_exit +tst_run diff --git a/testcases/network/stress/tcp/tcp_ipsec_vti.sh b/testcases/network/stress/tcp/tcp_ipsec_vti.sh index 13a67d3bb..f7bbbc6e9 100755 --- a/testcases/network/stress/tcp/tcp_ipsec_vti.sh +++ b/testcases/network/stress/tcp/tcp_ipsec_vti.sh @@ -1,27 +1,20 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=tcp_ipsec_vti -TST_TOTAL=3 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" +TST_TESTFUNC=do_test +TST_SETUP=tst_ipsec_setup_vti +TST_CLEANUP=tst_ipsec_cleanup +. ipsec_lib.sh max_requests=10 -. ipsec_lib.sh - do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $ip_rmt_tun -n $p -N $p \ - -r $IPSEC_REQUESTS -R $max_requests - done + tst_netload -H $ip_rmt_tun -n $2 -N $2 -r $IPSEC_REQUESTS -R $max_requests } -tst_ipsec_setup_vti - -do_test - -tst_exit +tst_run diff --git a/testcases/network/stress/udp/udp_ipsec.sh b/testcases/network/stress/udp/udp_ipsec.sh index 9c46fc6c0..b59070ebe 100755 --- a/testcases/network/stress/udp/udp_ipsec.sh +++ b/testcases/network/stress/udp/udp_ipsec.sh @@ -1,26 +1,22 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=udp_ipsec -TST_TOTAL=6 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_SETUP=tst_ipsec_setup +TST_CNT=2 +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $(tst_ipaddr rhost) -T $1 -n $p -N $p \ - -r $IPSEC_REQUESTS - done -} + local type="udp" + [ $1 -eq 2 ] && type="udp_lite" -tst_ipsec_setup - -do_test udp -do_test udp_lite + tst_netload -H $(tst_ipaddr rhost) -T $type -n $2 -N $2 -r $IPSEC_REQUESTS +} -tst_exit +tst_run diff --git a/testcases/network/stress/udp/udp_ipsec_vti.sh b/testcases/network/stress/udp/udp_ipsec_vti.sh index 1b138afb6..65b48eaa4 100755 --- a/testcases/network/stress/udp/udp_ipsec_vti.sh +++ b/testcases/network/stress/udp/udp_ipsec_vti.sh @@ -1,26 +1,22 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev -TCID=udp_ipsec_vti -TST_TOTAL=6 TST_NEEDS_TMPDIR=1 -TST_CLEANUP="tst_ipsec_cleanup" - +TST_TESTFUNC=do_test +TST_CNT=2 +TST_SETUP=tst_ipsec_setup_vti +TST_CLEANUP=tst_ipsec_cleanup . ipsec_lib.sh do_test() { - for p in $IPSEC_SIZE_ARRAY; do - tst_netload -H $ip_rmt_tun -T $1 -n $p -N $p \ - -r $IPSEC_REQUESTS - done -} + local type="udp" + [ $1 -eq 2 ] && type="udp_lite" -tst_ipsec_setup_vti - -do_test udp -do_test udp_lite + tst_netload -H $ip_rmt_tun -T $type -n $2 -N $2 -r $IPSEC_REQUESTS +} -tst_exit +tst_run diff --git a/testcases/network/virt/geneve01.sh b/testcases/network/virt/geneve01.sh index 91d03883d..8ddb97258 100755 --- a/testcases/network/virt/geneve01.sh +++ b/testcases/network/virt/geneve01.sh @@ -1,10 +1,9 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2016-2017 Oracle and/or its affiliates. # Author: Alexey Kodanev -TCID=geneve01 -TST_TOTAL=1 TST_NEEDS_TMPDIR=1 TST_OPTS="hi:d:" TST_PARSE_ARGS=virt_lib_parse_args @@ -16,26 +15,29 @@ start_id=16700000 # that is why using here 'vxlan_*' library functions. vxlan_dst_addr="uni" +TST_TESTFUNC=do_test +TST_CLEANUP=virt_cleanup . virt_lib.sh VIRT_PERF_THRESHOLD=${VIRT_PERF_THRESHOLD:-160} [ "$VIRT_PERF_THRESHOLD" -lt 160 ] && VIRT_PERF_THRESHOLD=160 -TST_CLEANUP="virt_cleanup" - -if [ -z $ip_local -o -z $ip_remote ]; then - tst_brkm TBROK "you must specify IP address" -fi - -tst_resm TINFO "the same VNI must work" -# VNI is 24 bits long, so max value, which is not reserved, is 0xFFFFFE -vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE" "id 0xFFFFFE" -virt_netperf_msg_sizes -virt_cleanup_rmt - -tst_resm TINFO "different VNI shall not work together" -vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE" "id 0xFFFFFD" -virt_minimize_timeout -virt_compare_netperf "fail" - -tst_exit +do_test() +{ + if [ -z $ip_local -o -z $ip_remote ]; then + tst_brk TBROK "you must specify IP address" + fi + + tst_res TINFO "the same VNI must work" + # VNI is 24 bits long, so max value, which is not reserved, is 0xFFFFFE + vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE" "id 0xFFFFFE" + virt_netperf_msg_sizes + virt_cleanup_rmt + + tst_res TINFO "different VNI shall not work together" + vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE" "id 0xFFFFFD" + virt_minimize_timeout + virt_compare_netperf "fail" +} + +tst_run diff --git a/testcases/network/virt/gre01.sh b/testcases/network/virt/gre01.sh index efb78a940..3173d1b7c 100755 --- a/testcases/network/virt/gre01.sh +++ b/testcases/network/virt/gre01.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015-2017 Oracle and/or its affiliates. # Author: Alexey Kodanev # @@ -7,23 +8,30 @@ # tunnel between two hosts, then will compare TCP performance # with and without GRE using ping or netstress test. -TCID=gre01 -TST_TOTAL=1 TST_NEEDS_TMPDIR=1 - -virt_type="gre" +TST_TESTFUNC=do_test +TST_SETUP=do_setup +TST_CLEANUP=virt_cleanup . virt_lib.sh -TST_CLEANUP="virt_cleanup" +do_setup() +{ + virt_type="gre" + [ "$TST_IPV6" ] && virt_type="ip6gre" + virt_lib_setup +} -if [ -z $ip_local -o -z $ip_remote ]; then - tst_brkm TBROK "you must specify IP address" -fi +do_test() +{ + if [ -z $ip_local -o -z $ip_remote ]; then + tst_brk TBROK "you must specify IP address" + fi -tst_resm TINFO "test $virt_type" -virt_setup "local $(tst_ipaddr) remote $(tst_ipaddr rhost) dev $(tst_iface)" \ -"local $(tst_ipaddr rhost) remote $(tst_ipaddr) dev $(tst_iface rhost)" + tst_res TINFO "test $virt_type" + virt_setup "local $(tst_ipaddr) remote $(tst_ipaddr rhost) dev $(tst_iface)" \ + "local $(tst_ipaddr rhost) remote $(tst_ipaddr) dev $(tst_iface rhost)" -virt_netperf_msg_sizes + virt_netperf_msg_sizes +} -tst_exit +tst_run diff --git a/testcases/network/virt/ipvlan01.sh b/testcases/network/virt/ipvlan01.sh index 426b2cb6b..f49b5ed75 100755 --- a/testcases/network/virt/ipvlan01.sh +++ b/testcases/network/virt/ipvlan01.sh @@ -1,20 +1,18 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # # Local test, check if we can create and then delete ipvlan # interface multiple times. -TCID=ipvlan01 -TST_TOTAL=2 +TST_TEST_DATA="mode l2,mode l3" +TST_TEST_DATA_IFS="," +TST_TESTFUNC=virt_test_02 virt_type="ipvlan" . virt_lib.sh -options="mode l2,mode l3" - -virt_test_02 "$options" - -tst_exit +tst_run diff --git a/testcases/network/virt/macsec01.sh b/testcases/network/virt/macsec01.sh index cf038e7ca..3d8815b27 100755 --- a/testcases/network/virt/macsec01.sh +++ b/testcases/network/virt/macsec01.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # @@ -7,13 +8,16 @@ # with default MACsec configuration, compare performance with similar # IPsec configuration on master interface. -TCID=macsec01 -TST_TOTAL=16 -TST_NEEDS_TMPDIR=1 - virt_type="macsec" VIRT_PERF_THRESHOLD=${VIRT_PERF_THRESHOLD:-100} +IPSEC_MODE="transport" +IPSEC_PROTO="ah" +TST_NEEDS_TMPDIR=1 +TST_TESTFUNC=do_test +TST_SETUP=ipsec_lib_setup +IPSEC_LIB_IGNORE_IPSEC_SIZE_ARRAY=1 +TST_CLEANUP=cleanup . ipsec_lib.sh . virt_lib.sh @@ -22,15 +26,15 @@ cleanup() virt_cleanup tst_ipsec_cleanup } -TST_CLEANUP="cleanup" -IPSEC_MODE=transport -IPSEC_PROTO=ah -tst_resm TINFO "setup IPsec $IPSEC_MODE/$IPSEC_PROTO $EALGO" -tst_ipsec lhost $(tst_ipaddr) $(tst_ipaddr rhost) -tst_ipsec rhost $(tst_ipaddr rhost) $(tst_ipaddr) +do_test() +{ + tst_res TINFO "setup IPsec $IPSEC_MODE/$IPSEC_PROTO $EALGO" + tst_ipsec lhost $(tst_ipaddr) $(tst_ipaddr rhost) + tst_ipsec rhost $(tst_ipaddr rhost) $(tst_ipaddr) -virt_macsec_setup -virt_netperf_msg_sizes + virt_macsec_setup + virt_netperf_msg_sizes +} -tst_exit +tst_run diff --git a/testcases/network/virt/macsec02.sh b/testcases/network/virt/macsec02.sh index 63c035e44..ba8c38654 100755 --- a/testcases/network/virt/macsec02.sh +++ b/testcases/network/virt/macsec02.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # @@ -7,13 +8,17 @@ # with enabled frame encryption and replay protection, compare # performance with similar IPsec configuration on master interface. -TCID=macsec02 -TST_TOTAL=16 -TST_NEEDS_TMPDIR=1 - virt_type="macsec" VIRT_PERF_THRESHOLD=${VIRT_PERF_THRESHOLD:-100} +IPSEC_MODE="transport" +IPSEC_PROTO="esp_aead" +EALGO="aes" +TST_NEEDS_TMPDIR=1 +TST_TESTFUNC=do_test +TST_SETUP=ipsec_lib_setup +IPSEC_LIB_IGNORE_IPSEC_SIZE_ARRAY=1 +TST_CLEANUP=cleanup . ipsec_lib.sh . virt_lib.sh @@ -22,16 +27,15 @@ cleanup() virt_cleanup tst_ipsec_cleanup } -TST_CLEANUP="cleanup" -IPSEC_MODE=transport -IPSEC_PROTO=esp_aead -EALGO=aes -tst_resm TINFO "setup IPsec $IPSEC_MODE/$IPSEC_PROTO $EALGO" -tst_ipsec lhost $(tst_ipaddr) $(tst_ipaddr rhost) -tst_ipsec rhost $(tst_ipaddr rhost) $(tst_ipaddr) +do_test() +{ + tst_res TINFO "setup IPsec $IPSEC_MODE/$IPSEC_PROTO $EALGO" + tst_ipsec lhost $(tst_ipaddr) $(tst_ipaddr rhost) + tst_ipsec rhost $(tst_ipaddr rhost) $(tst_ipaddr) -virt_macsec_setup "replay on window 300 encrypt on protect on" -virt_netperf_msg_sizes + virt_macsec_setup "replay on window 300 encrypt on protect on" + virt_netperf_msg_sizes +} -tst_exit +tst_run diff --git a/testcases/network/virt/macvlan01.sh b/testcases/network/virt/macvlan01.sh index f37851f50..e739fae97 100755 --- a/testcases/network/virt/macvlan01.sh +++ b/testcases/network/virt/macvlan01.sh @@ -1,20 +1,21 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # # Local test, check if we can create and then delete macvlan # interface multiple times. -TCID=macvlan01 -TST_TOTAL=4 - virt_type="macvlan" - -. virt_lib.sh - options="mode private,mode vepa,mode bridge,mode passthru" +TST_CNT=4 +TST_TESTFUNC=do_test +. virt_lib.sh -virt_test_02 "$options" +do_test() +{ + virt_test_02 "$options" +} -tst_exit +tst_run diff --git a/testcases/network/virt/macvtap01.sh b/testcases/network/virt/macvtap01.sh index 21fd96777..654cf30bd 100755 --- a/testcases/network/virt/macvtap01.sh +++ b/testcases/network/virt/macvtap01.sh @@ -1,20 +1,21 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # # Local test, check if we can create and then delete macvtap # interface multiple times. -TCID=macvtap01 -TST_TOTAL=4 - virt_type="macvtap" - -. virt_lib.sh - options="mode private,mode vepa,mode bridge,mode passthru" +TST_CNT=4 +TST_TESTFUNC=do_test +. virt_lib.sh -virt_test_02 "$options" +do_test() +{ + virt_test_02 "$options" +} -tst_exit +tst_run diff --git a/testcases/network/virt/virt_lib.sh b/testcases/network/virt/virt_lib.sh index eaec33d8f..9b21f6201 100644 --- a/testcases/network/virt/virt_lib.sh +++ b/testcases/network/virt/virt_lib.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2014-2017 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # @@ -15,30 +16,52 @@ # them in cleanup function. See "start_vni" variable which can # solve it. +TST_SETUP="${TST_SETUP:-virt_lib_setup}" +TST_CLEANUP="${TST_CLEANUP:-cleanup_vifaces}" +trap "tst_brk TBROK 'test interrupted'" INT + +virt_lib_usage() +{ + echo "i n start ID to use" + echo "d x VxLAN destination address, 'uni' or 'multi'" +} + virt_lib_parse_args() { case "$1" in - h) - echo "Usage:" - echo "h help" - echo "i n start ID to use" - echo "d x VxLAN destination address, 'uni' or 'multi'" - echo "6 run over IPv6" - exit 0 - ;; i) start_id=$2 ;; d) vxlan_dst_addr=$2 ;; - *) - tst_brkm TBROK "unknown option: $1" + esac +} + +virt_lib_setup() +{ + case "$virt_type" in + vxlan|geneve) + if tst_kvcmp -lt "3.8"; then + tst_brk TCONF "test must be run with kernel 3.8 or newer" + fi + + if [ "$TST_IPV6" ] && tst_kvcmp -lt "3.12"; then + tst_brk TCONF "test must be run with kernels >= 3.12" + fi + + # newer versions of 'ip' complain if this option not set + ip li add type vxlan help 2>&1 | grep -q dstport && vxlan_dstport=1 ;; esac + + tst_check_cmds "ip" + + virt_add ltp_v0 || \ + tst_brk TCONF "iproute2 or kernel doesn't support $virt_type" + + ROD_SILENT "ip link delete ltp_v0" } -TST_USE_LEGACY_API=1 +TST_NEEDS_ROOT=1 . tst_net.sh -[ -n "$TST_IPV6" -a "$virt_type" = "gre" ] && virt_type="ip6gre" - ip_local=$(tst_ipaddr) ip_virt_local="$(TST_IPV6= tst_ipaddr_un)" ip6_virt_local="$(TST_IPV6=6 tst_ipaddr_un)" @@ -53,7 +76,7 @@ vxlan_dstport=0 cleanup_vifaces() { - tst_resm TINFO "cleanup virtual interfaces..." + tst_res TINFO "cleanup virtual interfaces..." local viface=`ip li | sed -nE 's/^[0-9]+: (ltp_v[0-9]+)[@:].+/\1/p'` for vx in $viface; do ip link delete $vx @@ -73,12 +96,8 @@ virt_cleanup_rmt() virt_cleanup() { virt_cleanup_rmt - [ "$TST_NEEDS_TMPDIR" = 1 ] && tst_rmdir } -TST_CLEANUP="cleanup_vifaces" -trap "tst_brkm TBROK 'test interrupted'" INT - virt_add() { local vname=$1 @@ -138,11 +157,11 @@ virt_multiple_add_test() local opt="$@" local max=$(($start_id + $NS_TIMES - 1)) - tst_resm TINFO "add $NS_TIMES $virt_type, then delete" + tst_res TINFO "add $NS_TIMES $virt_type, then delete" for i in $(seq $start_id $max); do virt_add ltp_v$i id $i $opt || \ - tst_brkm TFAIL "failed to create 'ltp_v0 $opt'" + tst_brk TFAIL "failed to create 'ltp_v0 $opt'" ROD_SILENT "ip link set ltp_v$i up" done @@ -151,7 +170,7 @@ virt_multiple_add_test() ROD_SILENT "ip link delete ltp_v$i" done - tst_resm TPASS "done" + tst_res TPASS "done" } virt_add_delete_test() @@ -159,15 +178,15 @@ virt_add_delete_test() local opt="$@" local max=$(($NS_TIMES - 1)) - tst_resm TINFO "add/del $virt_type $NS_TIMES times" + tst_res TINFO "add/del $virt_type $NS_TIMES times" for i in $(seq 0 $max); do virt_add ltp_v0 $opt || \ - tst_brkm TFAIL "failed to create 'ltp_v0 $opt'" + tst_brk TFAIL "failed to create 'ltp_v0 $opt'" ROD_SILENT "ip link set ltp_v0 up" ROD_SILENT "ip link delete ltp_v0" done - tst_resm TPASS "done" + tst_res TPASS "done" } virt_setup() @@ -175,11 +194,11 @@ virt_setup() local opt="$1" local opt_r="${2:-$1}" - tst_resm TINFO "setup local ${virt_type} with '$opt'" + tst_res TINFO "setup local ${virt_type} with '$opt'" virt_add ltp_v0 $opt || \ - tst_brkm TBROK "failed to create 'ltp_v0 $opt'" + tst_brk TBROK "failed to create 'ltp_v0 $opt'" - tst_resm TINFO "setup rhost ${virt_type} with '$opt_r'" + tst_res TINFO "setup rhost ${virt_type} with '$opt_r'" virt_add_rhost "$opt_r" ROD_SILENT "ip addr add ${ip6_virt_local}/64 dev ltp_v0 nodad" @@ -212,11 +231,11 @@ virt_minimize_timeout() vxlan_setup_subnet_uni() { if tst_kvcmp -lt "3.10"; then - tst_brkm TCONF "test must be run with kernel 3.10 or newer" + tst_brk TCONF "test must be run with kernel 3.10 or newer" fi [ "$(ip li add type $virt_type help 2>&1 | grep remote)" ] || \ - tst_brkm TCONF "iproute doesn't support remote unicast address" + tst_brk TCONF "iproute doesn't support remote unicast address" local opt="$1 remote $(tst_ipaddr rhost)" local opt_r="$2 remote $(tst_ipaddr)" @@ -265,26 +284,26 @@ virt_compare_netperf() tst_netload -H $ip_remote $opts -d res_ipv4 local lt="$(cat res_ipv4)" - tst_resm TINFO "time lan($lt) $virt_type IPv4($vt) and IPv6($vt6) ms" + tst_res TINFO "time lan($lt) $virt_type IPv4($vt) and IPv6($vt6) ms" per=$(( $vt * 100 / $lt - 100 )) per6=$(( $vt6 * 100 / $lt - 100 )) case "$virt_type" in vxlan|geneve) - tst_resm TINFO "IP4 $virt_type over IP$TST_IPVER slower by $per %" - tst_resm TINFO "IP6 $virt_type over IP$TST_IPVER slower by $per6 %" + tst_res TINFO "IP4 $virt_type over IP$TST_IPVER slower by $per %" + tst_res TINFO "IP6 $virt_type over IP$TST_IPVER slower by $per6 %" ;; *) - tst_resm TINFO "IP4 $virt_type slower by $per %" - tst_resm TINFO "IP6 $virt_type slower by $per6 %" + tst_res TINFO "IP4 $virt_type slower by $per %" + tst_res TINFO "IP6 $virt_type slower by $per6 %" esac if [ "$per" -ge "$VIRT_PERF_THRESHOLD" -o \ "$per6" -ge "$VIRT_PERF_THRESHOLD" ]; then - tst_resm TFAIL "Test failed, threshold: $VIRT_PERF_THRESHOLD %" + tst_res TFAIL "Test failed, threshold: $VIRT_PERF_THRESHOLD %" else - tst_resm TPASS "Test passed, threshold: $VIRT_PERF_THRESHOLD %" + tst_res TPASS "Test passed, threshold: $VIRT_PERF_THRESHOLD %" fi } @@ -292,7 +311,7 @@ virt_check_cmd() { $@ > /dev/null 2>&1 if [ $? -ne 0 ]; then - tst_resm TCONF "'$@' option(s) not supported, skipping it" + tst_res TCONF "'$@' option(s) not supported, skipping it" return 1 fi ROD_SILENT "ip li delete ltp_v0" @@ -338,74 +357,25 @@ virt_netperf_msg_sizes() # Check if we can create then delete virtual interface n times. # virt_test_01 [OPTIONS] -# OPTIONS - different options separated by comma. virt_test_01() { start_id="${start_id:-1}" local opts="${1:-}" - local n=0 - - while true; do - n=$((n + 1)) - p="$(echo $opts | cut -d',' -f$n)" - if [ -z "$p" -a $n -gt 1 ]; then - break - fi - - tst_resm TINFO "add $virt_type with '$p'" - - virt_check_cmd virt_add ltp_v0 id 0 $p || continue - virt_multiple_add_test "$p" - done + tst_res TINFO "add $virt_type with '$2'" + virt_check_cmd virt_add ltp_v0 id 0 $2 || return + virt_multiple_add_test "$2" } # Check if we can create then delete virtual interface n times. # virt_test_02 [OPTIONS] -# OPTIONS - different options separated by comma. virt_test_02() { start_id="${start_id:-1}" local opts="${1:-}" - local n=0 - - while true; do - n=$((n + 1)) - p="$(echo $opts | cut -d',' -f$n)" - if [ -z "$p" -a $n -gt 1 ]; then - break - fi - - tst_resm TINFO "add and then delete $virt_type with '$p'" - - virt_check_cmd virt_add ltp_v0 $p || continue - virt_add_delete_test "$p" + tst_res TINFO "add and then delete $virt_type with '$2'" - start_id=$(($start_id + $NS_TIMES)) - done + virt_check_cmd virt_add ltp_v0 $2 || return + virt_add_delete_test "$2" } - -tst_require_root - -case "$virt_type" in -vxlan|geneve) - if tst_kvcmp -lt "3.8"; then - tst_brkm TCONF "test must be run with kernel 3.8 or newer" - fi - - if [ "$TST_IPV6" ] && tst_kvcmp -lt "3.12"; then - tst_brkm TCONF "test must be run with kernels >= 3.12" - fi - - # newer versions of 'ip' complain if this option not set - ip li add type vxlan help 2>&1 | grep -q dstport && vxlan_dstport=1 -;; -esac - -tst_check_cmds "ip" - -virt_add ltp_v0 || \ - tst_brkm TCONF "iproute2 or kernel doesn't support $virt_type" - -ROD_SILENT "ip link delete ltp_v0" diff --git a/testcases/network/virt/vlan01.sh b/testcases/network/virt/vlan01.sh index 4dceae82f..69d2564cb 100755 --- a/testcases/network/virt/vlan01.sh +++ b/testcases/network/virt/vlan01.sh @@ -1,17 +1,11 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # # Local test, check if we can create multiple VLAN interfaces. -TCID=vlan01 -TST_TOTAL=9 - -virt_type="vlan" - -. virt_lib.sh - p0="protocol 802.1Q" p1="protocol 802.1ad" lb0="loose_binding off" @@ -19,9 +13,12 @@ lb1="loose_binding on" rh0="reorder_hdr off" rh1="reorder_hdr on" -options=" ,$p0 $lb0 $rh0,$p0 $lb0 $rh1,$p0 $lb1 $rh0,$p0 $lb1 $rh1,\ -$p1 $lb0 $rh0,$p1 $lb0 $rh1,$p1 $lb1 $rh0,$p1 $lb1 $rh1," +virt_type="vlan" -virt_test_01 "$options" +TST_TEST_DATA=",$p0 $lb0 $rh0,$p0 $lb0 $rh1,$p0 $lb1 $rh0,$p0 $lb1 $rh1,\ +$p1 $lb0 $rh0,$p1 $lb0 $rh1,$p1 $lb1 $rh0,$p1 $lb1 $rh1" +TST_TEST_DATA_IFS="," +TST_TESTFUNC=virt_test_01 +. virt_lib.sh -tst_exit +tst_run diff --git a/testcases/network/virt/vlan02.sh b/testcases/network/virt/vlan02.sh index 2b84a7cd0..04a8a5c60 100755 --- a/testcases/network/virt/vlan02.sh +++ b/testcases/network/virt/vlan02.sh @@ -1,18 +1,20 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # # Local test, check if we can create and then delete VLAN # interface 4095 times. -TCID=vlan02 -TST_TOTAL=1 - virt_type="vlan" +TST_TESTFUNC=do_test . virt_lib.sh -virt_add_delete_test "id 4094" +do_test() +{ + virt_add_delete_test "id 4094" +} -tst_exit +tst_run diff --git a/testcases/network/virt/vlan03.sh b/testcases/network/virt/vlan03.sh index 33bfaf84c..adadd76fd 100755 --- a/testcases/network/virt/vlan03.sh +++ b/testcases/network/virt/vlan03.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2015-2017 Oracle and/or its affiliates. # Author: Alexey Kodanev # @@ -10,20 +11,6 @@ # Test-case 2: The same as above but must fail, because VLAN allows # to communicate only within the same VLAN segment. -TCID=vlan03 -TST_TOTAL=6 -TST_NEEDS_TMPDIR=1 - -virt_type="vlan" - -. virt_lib.sh - -TST_CLEANUP="virt_cleanup" - -if [ -z $ip_local -o -z $ip_remote ]; then - tst_brkm TBROK "you must specify IP address" -fi - p0="protocol 802.1Q" p1="protocol 802.1ad" lb0="loose_binding off" @@ -31,23 +18,38 @@ lb1="loose_binding on" rh0="reorder_hdr off" rh1="reorder_hdr on" -opts=" ,$p0 $lb0 $rh1,$p1 $lb1 $rh1" +virt_type="vlan" + +TST_NEEDS_TMPDIR=1 +TST_TEST_DATA=",$p0 $lb0 $rh1,$p1 $lb1 $rh1" +TST_TEST_DATA_IFS="," +TST_TESTFUNC=do_test +TST_SETUP=do_setup +TST_CLEANUP=virt_cleanup +. virt_lib.sh -for n in $(seq 1 3); do - p="$(echo $opts | cut -d',' -f$n)" +do_setup() +{ + if [ -z $ip_local -o -z $ip_remote ]; then + tst_brk TBROK "you must specify IP address" + fi + virt_lib_setup +} - virt_check_cmd virt_add ltp_v0 id 0 $p || continue +do_test() +{ + virt_check_cmd virt_add ltp_v0 id 0 $2 || return - tst_resm TINFO "networks with the same VLAN ID must work" - virt_setup "id 4094 $p" "id 4094 $p" + tst_res TINFO "networks with the same VLAN ID must work" + virt_setup "id 4094 $2" "id 4094 $2" virt_netperf_msg_sizes virt_cleanup_rmt - tst_resm TINFO "different VLAN ID shall not work together" - virt_setup "id 4093 $p" "id 4094 $p" + tst_res TINFO "different VLAN ID shall not work together" + virt_setup "id 4093 $2" "id 4094 $2" virt_minimize_timeout virt_compare_netperf "fail" virt_cleanup_rmt -done +} -tst_exit +tst_run diff --git a/testcases/network/virt/vxlan01.sh b/testcases/network/virt/vxlan01.sh index 49bcb942a..027fc6f45 100755 --- a/testcases/network/virt/vxlan01.sh +++ b/testcases/network/virt/vxlan01.sh @@ -1,23 +1,28 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2014-2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # # Local test, check if we can create multiple VXLAN interfaces. TCID=vxlan01 -TST_TOTAL=5 TST_OPTS="hi:d:" TST_PARSE_ARGS=virt_lib_parse_args +TST_USAGE=virt_lib_usage virt_type="vxlan" start_id=16700000 -. virt_lib.sh - options="l2miss l3miss,norsc nolearning noproxy,\ ttl 0x01 tos 0x01,ttl 0xff tos 0xff,gbp" +TST_CNT=5 +TST_TESTFUNC=do_test +. virt_lib.sh -virt_test_01 "$options" +do_test() +{ + virt_test_01 "$options" +} -tst_exit +tst_run diff --git a/testcases/network/virt/vxlan02.sh b/testcases/network/virt/vxlan02.sh index dde1dabc8..24e5c4dfb 100755 --- a/testcases/network/virt/vxlan02.sh +++ b/testcases/network/virt/vxlan02.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2014-2015 Oracle and/or its affiliates. All Rights Reserved. # Author: Alexey Kodanev # @@ -7,18 +8,22 @@ # interface 5000 times. TCID=vxlan02 -TST_TOTAL=1 TST_OPTS="hi:d:" TST_PARSE_ARGS=virt_lib_parse_args +TST_USAGE=virt_lib_usage virt_type="vxlan" start_id=16700000 +TST_TESTFUNC=do_test . virt_lib.sh -[ "$TST_IPV6" ] && mult_addr="ff02::abc" || mult_addr="239.1.1.1" -opt="group $mult_addr" +do_test() +{ + local mult_addr="239.1.1.1" + [ "$TST_IPV6" ] && mult_addr="ff02::abc" -virt_add_delete_test "id $start_id $opt" + virt_add_delete_test "id $start_id group $mult_addr" +} -tst_exit +tst_run diff --git a/testcases/network/virt/vxlan03.sh b/testcases/network/virt/vxlan03.sh index d8c533cb3..521953f73 100755 --- a/testcases/network/virt/vxlan03.sh +++ b/testcases/network/virt/vxlan03.sh @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2018 Petr Vorel # Copyright (c) 2014-2017 Oracle and/or its affiliates. # Author: Alexey Kodanev # @@ -11,10 +12,10 @@ # to communicate only within the same VXLAN segment. TCID=vxlan03 -TST_TOTAL=4 TST_NEEDS_TMPDIR=1 TST_OPTS="hi:d:" TST_PARSE_ARGS=virt_lib_parse_args +TST_USAGE=virt_lib_usage virt_type="vxlan" start_id=16700000 @@ -22,6 +23,11 @@ start_id=16700000 # Destination address, can be unicast or multicast address vxlan_dst_addr="uni" +TST_TEST_DATA=",gbp" +TST_TEST_DATA_IFS="," +TST_NEEDS_TMPDIR=1 +TST_TESTFUNC=do_test +TST_CLEANUP=virt_cleanup . virt_lib.sh # In average cases (with small packets less then 150 bytes) VxLAN slower @@ -31,30 +37,25 @@ vxlan_dst_addr="uni" VIRT_PERF_THRESHOLD=${VIRT_PERF_THRESHOLD:-160} [ "$VIRT_PERF_THRESHOLD" -lt 160 ] && VIRT_PERF_THRESHOLD=160 -TST_CLEANUP="virt_cleanup" - -if [ -z $ip_local -o -z $ip_remote ]; then - tst_brkm TBROK "you must specify IP address" -fi - -opts=" ,gbp" - -for n in $(seq 1 2); do - p="$(echo $opts | cut -d',' -f$n)" +do_test() +{ + if [ -z $ip_local -o -z $ip_remote ]; then + tst_brk TBROK "you must specify IP address" + fi - virt_check_cmd virt_add ltp_v0 id 0 $p || continue + virt_check_cmd virt_add ltp_v0 id 0 $2 || continue - tst_resm TINFO "the same VNI must work" + tst_res TINFO "the same VNI must work" # VNI is 24 bits long, so max value, which is not reserved, is 0xFFFFFE - vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE $p" "id 0xFFFFFE $p" + vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE $2" "id 0xFFFFFE $2" virt_netperf_msg_sizes virt_cleanup_rmt - tst_resm TINFO "different VNI shall not work together" - vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE $p" "id 0xFFFFFD $p" + tst_res TINFO "different VNI shall not work together" + vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE $2" "id 0xFFFFFD $2" virt_minimize_timeout virt_compare_netperf "fail" virt_cleanup_rmt -done +} -tst_exit +tst_run