Index: sbin/ping/Makefile =================================================================== --- sbin/ping/Makefile +++ sbin/ping/Makefile @@ -22,4 +22,7 @@ CFLAGS+=-DIPSEC LIBADD+= ipsec +HAS_TESTS= +SUBDIR.${MK_TESTS}+= tests + .include Index: sbin/ping/tests/Makefile =================================================================== --- /dev/null +++ sbin/ping/tests/Makefile @@ -0,0 +1,8 @@ +# $FreeBSD$ + +PACKAGE=tests + +ATF_TESTS_SH+= ping_test +${PACKAGE}FILES+= ping_c3.out + +.include Index: sbin/ping/tests/ping_c3.out =================================================================== --- /dev/null +++ sbin/ping/tests/ping_c3.out @@ -0,0 +1,8 @@ +PING localhost: 56 data bytes +64 bytes from: icmp_seq=0 ttl=64 time= ms +64 bytes from: icmp_seq=1 ttl=64 time= ms +64 bytes from: icmp_seq=2 ttl=64 time= ms + +--- localhost ping statistics --- +3 packets transmitted, 3 packets received, 0.0% packet loss +round-trip min/avg/max/stddev = /// ms Index: sbin/ping/tests/ping_test.sh =================================================================== --- /dev/null +++ sbin/ping/tests/ping_test.sh @@ -0,0 +1,25 @@ +atf_test_case ping_c3 +ping_c3_head() { + atf_set "descr" "Stop after receiving 3 ECHO_RESPONSE packets" +} +ping_c3_body() { + if ! getaddrinfo -f inet localhost 1>/dev/null 2>&1; then + atf_skip "IPv4 is not configured" + fi + atf_check -s exit:0 -o save:std.out -e empty \ + ping -c 3 localhost + check_ping_statistics std.out $(atf_get_srcdir)/ping_c3.out +} + +atf_init_test_cases() { + atf_add_test_case ping_c3 +} + +check_ping_statistics() { + sed -e 's/0.[0-9]\{3\}//g' \ + -e 's/[1-9][0-9]*.[0-9]\{3\}//g' \ + -e 's/localhost ([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{1,3\})/localhost/' \ + -e 's/from [0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{1,3\}/from/' \ + "$1" >"$1".filtered + atf_check -s exit:0 diff "$1".filtered "$2" +}