Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tests/ipf Do not use awk to generate the test program. Use ...



details:   https://anonhg.NetBSD.org/src/rev/0bca0fb39d80
branches:  trunk
changeset: 756284:0bca0fb39d80
user:      jmmv <jmmv%NetBSD.org@localhost>
date:      Sat Jul 10 17:28:36 2010 +0000

description:
Do not use awk to generate the test program.  Use some eval magic to generate
the tests on the fly alongside with easier-to-read functions.

While doing this, split the big monolithic test program into more granular
but cohesive test programs.

Phew, this one was tough.  And it's horrible to see that many these tests
(yes, the tests themselves probably) are broken.

diffstat:

 tests/ipf/Atffile           |   11 +-
 tests/ipf/Makefile          |   12 +-
 tests/ipf/h_common.sh       |   70 +++++++
 tests/ipf/t_bpf.sh          |   68 +++++++
 tests/ipf/t_filter_exec.sh  |  128 ++++++++++++++
 tests/ipf/t_filter_parse.sh |  131 ++++++++++++++
 tests/ipf/t_ipf.awk         |   92 ----------
 tests/ipf/t_ipf.in          |  398 --------------------------------------------
 tests/ipf/t_logging.sh      |   80 ++++++++
 tests/ipf/t_nat_exec.sh     |   90 +++++++++
 tests/ipf/t_nat_ipf_exec.sh |  107 +++++++++++
 tests/ipf/t_nat_parse.sh    |   55 ++++++
 tests/ipf/t_pools.sh        |   73 ++++++++
 13 files changed, 817 insertions(+), 498 deletions(-)

diffs (truncated from 1381 to 300 lines):

diff -r 609af91f055b -r 0bca0fb39d80 tests/ipf/Atffile
--- a/tests/ipf/Atffile Sat Jul 10 17:04:25 2010 +0000
+++ b/tests/ipf/Atffile Sat Jul 10 17:28:36 2010 +0000
@@ -1,6 +1,13 @@
 Content-Type: application/X-atf-atffile; version="1"
-X-NetBSD-Id: "$NetBSD: Atffile,v 1.1 2009/02/20 21:42:59 jmmv Exp $"
+X-NetBSD-Id: "$NetBSD: Atffile,v 1.2 2010/07/10 17:28:36 jmmv Exp $"
 
 prop: test-suite = "NetBSD"
 
-tp: t_ipf
+tp: t_bpf
+tp: t_filter_exec
+tp: t_filter_parse
+tp: t_logging
+tp: t_nat_exec
+tp: t_nat_ipf_exec
+tp: t_nat_parse
+tp: t_pools
diff -r 609af91f055b -r 0bca0fb39d80 tests/ipf/Makefile
--- a/tests/ipf/Makefile        Sat Jul 10 17:04:25 2010 +0000
+++ b/tests/ipf/Makefile        Sat Jul 10 17:28:36 2010 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.1 2009/02/20 21:42:59 jmmv Exp $
+# $NetBSD: Makefile,v 1.2 2010/07/10 17:28:36 jmmv Exp $
 
 NOMAN=         # defined
 
@@ -6,11 +6,11 @@
 
 TESTSDIR=      ${TESTSBASE}/ipf
 
-TESTS_SH=      t_ipf
-
-CLEANFILES+= t_ipf.sh
-t_ipf.sh: t_ipf.awk t_ipf.in
-       ${TOOL_AWK} -f ${.CURDIR}/t_ipf.awk ${.CURDIR}/t_ipf.in >t_ipf.sh
+.for name in t_bpf t_filter_exec t_filter_parse t_logging t_nat_exec \
+             t_nat_ipf_exec t_nat_parse t_pools
+TESTS_SH+=             ${name}
+TESTS_SH_SRC_${name}=  h_common.sh ${name}.sh
+.endfor
 
 SUBDIR=                regress input expected
 
diff -r 609af91f055b -r 0bca0fb39d80 tests/ipf/h_common.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/ipf/h_common.sh     Sat Jul 10 17:28:36 2010 +0000
@@ -0,0 +1,70 @@
+# $NetBSD: h_common.sh,v 1.1 2010/07/10 17:28:36 jmmv Exp $
+#
+# Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+#
+# (C)opyright 1993-1996 by Darren Reed.
+#
+# See the IPFILTER.LICENCE file for details on licencing.
+#
+
+h_copydata()
+{
+       test -f $(atf_get_srcdir)/input/$1 && \
+           cp $(atf_get_srcdir)/input/$1 in
+       test -f $(atf_get_srcdir)/regress/$1 && \
+           cp $(atf_get_srcdir)/regress/$1 reg
+       test -f $(atf_get_srcdir)/expected/$1 && \
+           cp $(atf_get_srcdir)/expected/$1 exp
+}
+
+test_case()
+{
+       local name="${1}"; shift
+       local check_function="${1}"; shift
+
+       atf_test_case "${name}"
+       eval "${name}_head() { \
+               atf_set use.fs true; \
+       }"
+       eval "${name}_body() { \
+               ${check_function} '${name}' \"\${@}\"; \
+       }"
+}
+
+broken_test_case()
+{
+       local name="${1}"; shift
+       local check_function="${1}"; shift
+
+       atf_test_case "${name}"
+       eval "${name}_head() { \
+               atf_set use.fs true; \
+       }"
+       eval "${name}_body() { \
+               atf_skip 'This test case is probably broken'; \
+               ${check_function} '${name}' \"\${@}\"; \
+       }"
+}
diff -r 609af91f055b -r 0bca0fb39d80 tests/ipf/t_bpf.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/ipf/t_bpf.sh        Sat Jul 10 17:28:36 2010 +0000
@@ -0,0 +1,68 @@
+# $NetBSD: t_bpf.sh,v 1.1 2010/07/10 17:28:36 jmmv Exp $
+#
+# Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+#
+# (C)opyright 1993-1996 by Darren Reed.
+#
+# See the IPFILTER.LICENCE file for details on licencing.
+#
+
+h_itest()
+{
+       h_copydata $1
+
+       case $3 in
+       ipf)
+               atf_check -o file:exp -e ignore ipf -Rnvf reg
+               ;;
+       ipftest)
+               atf_check -o file:exp ipftest -D -r reg -i /dev/null
+               ;;
+       esac
+}
+
+h_bpftest()
+{
+       h_copydata $(echo ${1} | tr _ .)
+       cp "$(atf_get_srcdir)/input/$(echo ${1} | sed s,bpf_,,)" in
+
+       { while read rule; do
+               atf_check -o save:save -x "echo '$rule' | ipftest -Rbr - -i in"
+               cat save >>out
+               echo "--------" >>out
+       done; } <reg
+
+       diff -u exp out || atf_fail "results differ"
+}
+
+broken_test_case bpf1 itest text ipf
+broken_test_case bpf_f1 bpftest text text
+
+atf_init_test_cases()
+{
+       atf_add_test_case bpf1
+       atf_add_test_case bpf_f1
+}
diff -r 609af91f055b -r 0bca0fb39d80 tests/ipf/t_filter_exec.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/ipf/t_filter_exec.sh        Sat Jul 10 17:28:36 2010 +0000
@@ -0,0 +1,128 @@
+# $NetBSD: t_filter_exec.sh,v 1.1 2010/07/10 17:28:36 jmmv Exp $
+#
+# Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+#
+# (C)opyright 1993-1996 by Darren Reed.
+#
+# See the IPFILTER.LICENCE file for details on licencing.
+#
+
+h_dotest()
+{
+       h_copydata $1
+
+       { while read rule; do
+               atf_check -x "echo \"$rule\" | ipftest -F \
+$2 -Rbr - -i in $4 >>out"
+               echo "--------" >>out
+       done; } <reg
+
+       diff -u exp out || atf_fail "results differ"
+}
+
+h_mtest()
+{
+       h_copydata $1
+
+       atf_check -o save:out ipftest -F $2 -Rbr reg -i in
+       echo "--------" >>out
+
+       diff -u exp out || atf_fail "results differ"
+}
+
+h_dotest6()
+{
+       h_copydata $(echo ${1} | tr _ .)
+
+       ipftest -6 -r /dev/null -i /dev/null >/dev/null 2>&1 \
+           || atf_skip "skipping IPv6 tests"
+
+       { while read rule; do
+               atf_check -o save:save -x "echo \"$rule\" | \
+ipftest -F $2 -6br - -i in"
+               cat save >>out
+               echo "--------" >>out
+       done; } <reg
+
+       diff -u exp out || atf_fail "results differ"
+}
+
+test_case f1 dotest text text
+test_case f2 dotest text text
+test_case f3 dotest text text
+test_case f4 dotest text text
+test_case f5 dotest text text
+test_case f6 dotest text text
+test_case f7 dotest text text
+test_case f8 dotest text text
+test_case f9 dotest text text
+test_case f10 dotest text text
+test_case f11 dotest text text -D
+test_case f12 dotest hex hex
+test_case f13 dotest hex hex
+test_case f14 dotest text text
+test_case f15 mtest text text
+test_case f16 mtest text text
+test_case f17 mtest hex hex
+test_case f18 mtest text text
+test_case f19 dotest text text -T fr_statemax=3
+test_case f20 mtest text text
+test_case f24 mtest hex text
+test_case ipv6_1 dotest6 hex hex
+test_case ipv6_2 dotest6 hex hex
+test_case ipv6_3 dotest6 hex hex
+test_case ipv6_5 dotest6 hex hex
+test_case ipv6_6 dotest6 hex text
+
+atf_init_test_cases()
+{
+       atf_add_test_case f1
+       atf_add_test_case f2
+       atf_add_test_case f3
+       atf_add_test_case f4



Home | Main Index | Thread Index | Old Index