On 1/15/18 4:17 PM, Jiri Pirko wrote: >> A couple of feature requests: >> 1. an option to pause on any error to allow inspection of the setup > > Good idea. Should be easy to add. Here is a snippet from my vrf test script: PAUSE_ON_FAIL=no -p option sets PAUSE_ON_FAIL=yes log_test() { local rc=$1 local expected=$2 local msg="$3" if [ ${rc} -eq ${expected} ]; then nsuccess=$((nsuccess+1)) printf "\n TEST: %-80s [ OK ]\n" "${msg}" else nfail=$((nfail+1)) printf "\n TEST: %-80s [FAIL]\n" "${msg}" if [ "${PAUSE_ON_FAIL}" = "yes" ]; then echo echo "hit enter to continue, 'q' to quit" read a [ "$a" = "q" ] && exit 1 fi fi } 'rc' is the return code from the command run 'expected' is the expected return code. This allows negative testing where rc can be non-0 and the test passes 'msg' is the name of the test. The above maps close to print_result in lib.sh (nsuccess and nfail track total number of tests run that pass/fail. I print a summary when the test set is done.) > > >> >> 2. an option to configure the system and leave it in that state (ie, >> don't trap exit and run cleanup). By extension, an option is needed to >> do cleanup only. > > Checkout the last patch. It has "noprepare" and "nocleanup" options. > So I guess you imagine something like that, but generic? > Sure that is one way. Something else I have found useful is to not redirect stdout/stderr from the commands and to have tags that can be grep'ed to provide a summary. I run my VRF test script as: $ run-test.sh 2>&1 | tee vrf-results.txt | grep TEST The terminal gets a nice summary: TEST SECTION: IPv4 ping TEST: ping out - VRF device, peer IP [ OK ] TEST: ping out - enslaved device, peer IP [ OK ] TEST: ping in - My IP [ OK ] TEST: ping in - VRF IP [FAIL] TEST: ping local - VRF device, My IP [ OK ] TEST: ping local - VRF device, VRF IP [ OK ] TEST: ping local - VRF device, loopback [ OK ] TEST: ping local - enslaved device, My IP [ OK ] TEST: ping local - enslaved device, VRF IP [ OK ] TEST: ping out - VRF device, VRF source, peer IP [ OK ] TEST: ping out - enslaved device, VRF source, peer IP [ OK ] And when I find a test failing I can go look at the full output: $ vi vrf-results.txt Test setup VRF name: lisa Enslaved device veth1 Device addresses: 172.16.99.1 2001:db8:99::1 VRF local IP: 1.1.1.1 1111:1::1 Peer device: veth2 Peer addresses: 172.16.99.254 2001:db8:99::64 ######################################## Configuring network namespace Resetting config ... ###################################################################### TEST SECTION: IPv4 ping ###################################################################### #################### COMMAND: ping -c1 -w1 -I lisa 172.16.99.254 ping: Warning: source address might be selected on device other than lisa. PING 172.16.99.254 (172.16.99.254) from 172.16.99.1 lisa: 56(84) bytes of data. 64 bytes from 172.16.99.254: icmp_seq=1 ttl=64 time=0.084 ms --- 172.16.99.254 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.084/0.084/0.084/0.000 ms TEST: ping out - VRF device, peer IP [ OK ] ... -- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html