lkml.org 
[lkml]   [2020]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/3] selftests: Add VRF icmp error route lookup test
    From
    Date
    On 8/11/20 1:50 PM, Mathieu Desnoyers wrote:
    > +run_cmd()
    > +{
    > + local cmd="$*"
    > + local out
    > + local rc
    > +
    > + if [ "$VERBOSE" = "1" ]; then
    > + echo "COMMAND: $cmd"
    > + fi
    > +
    > + out=$(eval $cmd 2>&1)
    > + rc=$?
    > + if [ "$VERBOSE" = "1" ] && [ -n "$out" ]; then
    > + echo "$out"
    > + fi
    > +
    > + [ "$VERBOSE" = "1" ] && echo
    > +
    > + return $rc
    > +}
    > +

    ...

    > +ipv6_ping()
    > +{
    > + log_section "IPv6: VRF ICMP error route lookup ping"
    > +
    > + setup
    > +
    > + # verify connectivity
    > + if ! check_connectivity6; then
    > + echo "Error: Basic connectivity is broken"
    > + ret=1
    > + return
    > + fi
    > +
    > + if [ "$VERBOSE" = "1" ]; then
    > + echo "Command to check for ICMP ttl exceeded:"
    > + run_cmd ip netns exec h1 "${ping6}" -t1 -c1 -W2 ${H2_N2_IP6}
    > + fi
    > +
    > + ip netns exec h1 "${ping6}" -t1 -c1 -W2 ${H2_N2_IP6} | grep -q "Time exceeded: Hop limit"

    run_cmd runs the command and if VERBOSE is set to 1 shows the command to
    the user. Something is off with this script and passing the -v arg -- I
    do not get a command list. This applies to the whole script.

    Since you need to check for output, I suggest modifying run_cmd to
    search the output for the given string.


    > + log_test $? 0 "Ping received ICMP ttl exceeded"
    > +}
    > +################################################################################

    missing newline between '}' and '####'

    > +# usage
    > +
    > +usage()
    > +{
    > + cat <<EOF
    > +usage: ${0##*/} OPTS
    > +
    > + -4 IPv4 tests only
    > + -6 IPv6 tests only
    > + -p Pause on fail
    > + -v verbose mode (show commands and output)
    > +EOF
    > +}
    > +
    > +################################################################################
    > +# main
    > +
    > +# Some systems don't have a ping6 binary anymore
    > +command -v ping6 > /dev/null 2>&1 && ping6=$(command -v ping6) || ping6=$(command -v ping)
    > +
    > +TESTS_IPV4="ipv4_ping ipv4_traceroute"
    > +TESTS_IPV6="ipv6_ping ipv6_traceroute"
    > +
    > +ret=0
    > +nsuccess=0
    > +nfail=0
    > +setup=0
    > +
    > +while getopts :46pvh o
    > +do
    > + case $o in
    > + 4) TESTS=ipv4;;
    > + 6) TESTS=ipv6;;
    > + p) PAUSE_ON_FAIL=yes;;
    > + v) VERBOSE=1;;
    > + h) usage; exit 0;;
    > + *) usage; exit 1;;

    indentation issues; not using tabs

    > + esac
    > +done
    > +
    > +#
    > +# show user test config
    > +#
    > +if [ -z "$TESTS" ]; then
    > + TESTS="$TESTS_IPV4 $TESTS_IPV6"
    > +elif [ "$TESTS" = "ipv4" ]; then
    > + TESTS="$TESTS_IPV4"
    > +elif [ "$TESTS" = "ipv6" ]; then
    > + TESTS="$TESTS_IPV6"
    > +fi
    > +
    > +for t in $TESTS
    > +do
    > + case $t in
    > + ipv4_ping|ping) ipv4_ping;;
    > + ipv4_traceroute|traceroute) ipv4_traceroute;;
    > +
    > + ipv6_ping|ping) ipv6_ping;;
    > + ipv6_traceroute|traceroute) ipv6_traceroute;;
    > +
    > + # setup namespaces and config, but do not run any tests
    > + setup) setup; exit 0;;

    you don't allow '-t setup' so you can remove this part

    > +
    > + help) echo "Test names: $TESTS"; exit 0;;
    > + esac
    > +done
    > +
    > +cleanup
    > +
    > +printf "\nTests passed: %3d\n" ${nsuccess}
    > +printf "Tests failed: %3d\n" ${nfail}
    > +
    > +exit $ret
    >

    \
     
     \ /
      Last update: 2020-08-14 01:14    [W:3.231 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site