test: add testbench for XML
PATCH v2 1/1 test: add testbench for XML
This patch add a testbench for XML parsing, which may be extended to also test JSON.
To use it:
$ cd test/ $ make nft-parsing-test $ ./nft-parsing-test xmlfiles/
This testbench supersedes old .sh test scripts, so they are deleted.
---
v1: initial version.
v2: deleted old .sh, implements all XML changes.
test/Makefile.am | 6 ++ test/nft-chain-xml-add.sh | 123 ------------------------------------- test/nft-parsing-test.c | 118 ++++++++++++++++++++++++++++++++++++ test/nft-rule-xml-add.sh | 125 -------------------------------------- test/nft-table-xml-add.sh | 75 ----------------------- test/xmlfiles/chain1.xml | 11 +++ test/xmlfiles/chain2.xml | 11 +++ test/xmlfiles/chain3.xml | 11 +++ test/xmlfiles/rule_bitwise.xml | 25 ++++++++ test/xmlfiles/rule_byteorder.xml | 12 ++++ test/xmlfiles/rule_cmp.xml | 13 ++++ test/xmlfiles/rule_counter.xml | 8 ++ test/xmlfiles/rule_ct.xml | 10 +++ test/xmlfiles/rule_exthdr.xml | 9 +++ test/xmlfiles/rule_immediate.xml | 12 ++++ test/xmlfiles/rule_limit.xml | 7 ++ test/xmlfiles/rule_log.xml | 9 +++ test/xmlfiles/rule_lookup.xml | 8 ++ test/xmlfiles/rule_match.xml | 6 ++ test/xmlfiles/rule_meta.xml | 7 ++ test/xmlfiles/rule_nat.xml | 11 +++ test/xmlfiles/rule_nat6.xml | 11 +++ test/xmlfiles/rule_payload.xml | 9 +++ test/xmlfiles/rule_target.xml | 6 ++ test/xmlfiles/table1.xml | 6 ++ test/xmlfiles/table2.xml | 6 ++ 26 files changed, 332 insertions(+), 323 deletions(-) create mode 100644 test/Makefile.am delete mode 100755 test/nft-chain-xml-add.sh create mode 100644 test/nft-parsing-test.c delete mode 100755 test/nft-rule-xml-add.sh delete mode 100755 test/nft-table-xml-add.sh create mode 100644 test/xmlfiles/chain1.xml create mode 100644 test/xmlfiles/chain2.xml create mode 100644 test/xmlfiles/chain3.xml create mode 100644 test/xmlfiles/rule_bitwise.xml create mode 100644 test/xmlfiles/rule_byteorder.xml create mode 100644 test/xmlfiles/rule_cmp.xml create mode 100644 test/xmlfiles/rule_counter.xml create mode 100644 test/xmlfiles/rule_ct.xml create mode 100644 test/xmlfiles/rule_exthdr.xml create mode 100644 test/xmlfiles/rule_immediate.xml create mode 100644 test/xmlfiles/rule_limit.xml create mode 100644 test/xmlfiles/rule_log.xml create mode 100644 test/xmlfiles/rule_lookup.xml create mode 100644 test/xmlfiles/rule_match.xml create mode 100644 test/xmlfiles/rule_meta.xml create mode 100644 test/xmlfiles/rule_nat.xml create mode 100644 test/xmlfiles/rule_nat6.xml create mode 100644 test/xmlfiles/rule_payload.xml create mode 100644 test/xmlfiles/rule_target.xml create mode 100644 test/xmlfiles/table1.xml create mode 100644 test/xmlfiles/table2.xml
Makefile.am +1 -1
@@ -2,7 +2,7 @@ include $(top_srcdir)/Make_global.am ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = src include examples +SUBDIRS = src include examples test DIST_SUBDIRS = src include examples pkgconfigdir = $(libdir)/pkgconfig
configure.ac +1 -1
@@ -38,5 +38,5 @@ regular_CFLAGS="-Wall -Waggregate-return -Wmissing-declarations \ -Wformat=2 -pipe" AC_SUBST([regular_CPPFLAGS]) AC_SUBST([regular_CFLAGS]) -AC_CONFIG_FILES([Makefile src/Makefile include/Makefile include/libnftables/Makefile include/linux/Makefile include/linux/netfilter/Makefile examples/Makefile libnftables.pc doxygen.cfg]) +AC_CONFIG_FILES([Makefile src/Makefile include/Makefile include/libnftables/Makefile include/linux/Makefile include/linux/netfilter/Makefile examples/Makefile test/Makefile libnftables.pc doxygen.cfg]) AC_OUTPUT
examples/chain.xml deleted +0 -11
@@ -1,11 +0,0 @@ -<chain name="test" handle="0" bytes="59" packets="1" version="0"> - <properties> - <type>filter</type> - <table>filter</table> - <prio>1</prio> - <use>0</use> - <hooknum>4</hooknum> - <policy>1</policy> - <family>10</family> - </properties> -</chain>
examples/rule.xml deleted +0 -85
85 lines not on this page · raw message
examples/table.xml deleted +0 -6
@@ -1,6 +0,0 @@ -<table name="filter" version="0"> - <properties> - <family>2</family> - <table_flags>0</table_flags> - </properties> -</table>
test/Makefile.am new file +6 -0
@@ -0,0 +1,6 @@ +include $(top_srcdir)/Make_global.am + +check_PROGRAMS = nft-parsing-test + +nft_parsing_test_SOURCES = nft-parsing-test.c +nft_parsing_test_LDADD = ../src/libnftables.la ${LIBMNL_LIBS} ${LIBXML_LIBS}
test/nft-chain-xml-add.sh deleted +0 -123
123 lines not on this page · raw message
test/nft-parsing-test.c new file +118 -0
118 lines not on this page · raw message
test/nft-rule-xml-add.sh deleted +0 -125
125 lines not on this page · raw message
test/nft-table-xml-add.sh deleted +0 -75
75 lines not on this page · raw message
test/xmlfiles/chain1.xml new file +11 -0
@@ -0,0 +1,11 @@ +<chain name="test" handle="0" bytes="0" packets="0" version="0"> + <properties> + <type>filter</type> + <table>filter</table> + <prio>0</prio> + <use>0</use> + <hooknum>NF_INET_LOCAL_IN</hooknum> + <policy>accept</policy> + <family>ip</family> + </properties> +</chain>
test/xmlfiles/chain2.xml new file +11 -0
@@ -0,0 +1,11 @@ +<chain name="test" handle="0" bytes="59" packets="1" version="0"> + <properties> + <type>bridge</type> + <table>filter</table> + <prio>1</prio> + <use>0</use> + <hooknum>NF_INET_FORWARD</hooknum> + <policy>drop</policy> + <family>ip6</family> + </properties> +</chain>
test/xmlfiles/chain3.xml new file +11 -0
@@ -0,0 +1,11 @@ +<chain name="foo" handle="100" bytes="59264154979" packets="2548796325" version="0"> + <properties> + <type>nat</type> + <table>nat</table> + <prio>123</prio> + <use>321</use> + <hooknum>NF_INET_LOCAL_OUT</hooknum> + <policy>accept</policy> + <family>bridge</family> + </properties> +</chain>
test/xmlfiles/rule_bitwise.xml new file +25 -0
@@ -0,0 +1,25 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="bitwise"> + <sreg>2</sreg> + <dreg>2</dreg> + <mask> + <data_reg type="value"> + <len>16</len> + <data0>0xffffffff</data0> + <data1>0xffffffff</data1> + <data2>0xffffffff</data2> + <data3>0x000000ff</data3> + </data_reg> + </mask> + <xor> + <data_reg type="value"> + <len>16</len> + <data0>0xfaceb00c</data0> + <data1>0xc1cac1ca</data1> + <data2>0xcafecafe</data2> + <data3>0xdeadbeef</data3> + </data_reg> + </xor> + </expr> +</rule>
test/xmlfiles/rule_byteorder.xml new file +12 -0
@@ -0,0 +1,12 @@ +<rule family="bridge" table="test" chain="test" handle="1000" version="0"> + <rule_flags>123</rule_flags> + <compat_flags>123</compat_flags> + <compat_proto>123</compat_proto> + <expr type="byteorder"> + <sreg>3</sreg> + <dreg>4</dreg> + <op>hton</op> + <len>4</len> + <size>4</size> + </expr> +</rule>
test/xmlfiles/rule_cmp.xml new file +13 -0
@@ -0,0 +1,13 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="cmp"> + <sreg>1</sreg> + <op>eq</op> + <cmpdata> + <data_reg type="value"> + <len>4</len> + <data0>0x04000000</data0> + </data_reg> + </cmpdata> + </expr> +</rule>
test/xmlfiles/rule_counter.xml new file +8 -0
@@ -0,0 +1,8 @@ +<rule family="ip6" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <flags>127</flags> + <expr type="counter"> + <pkts>123123</pkts> + <bytes>321321</bytes> + </expr> +</rule>
test/xmlfiles/rule_ct.xml new file +10 -0
@@ -0,0 +1,10 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <compat_flags>0</compat_flags> + <compat_proto>0</compat_proto> + <expr type="ct"> + <dreg>4</dreg> + <dir>1</dir> + <key>state</key> + </expr> +</rule>
test/xmlfiles/rule_exthdr.xml new file +9 -0
@@ -0,0 +1,9 @@ +<rule family="ip6" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="exthdr"> + <dreg>3</dreg> + <exthdr_type>mh</exthdr_type> + <offset>123</offset> + <len>256</len> + </expr> +</rule>
test/xmlfiles/rule_immediate.xml new file +12 -0
@@ -0,0 +1,12 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="immediate"> + <dreg>1</dreg> + <immdata> + <data_reg type="value"> + <len>4</len> + <data0>0xaabbccdd</data0> + </data_reg> + </immdata> + </expr> +</rule>
test/xmlfiles/rule_limit.xml new file +7 -0
@@ -0,0 +1,7 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="limit"> + <rate>123123</rate> + <depth>321321</depth> + </expr> +</rule>
test/xmlfiles/rule_log.xml new file +9 -0
@@ -0,0 +1,9 @@ +<rule family="ip6" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="log"> + <group>10</group> + <snaplen>4000000</snaplen> + <qthreshold>1222222</qthreshold> + <prefix>prefixtest</prefix> + </expr> +</rule>
test/xmlfiles/rule_lookup.xml new file +8 -0
@@ -0,0 +1,8 @@ +<rule family="bridge" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="lookup"> + <sreg>2</sreg> + <dreg>1</dreg> + <set>set_name_test</set> + </expr> +</rule>
test/xmlfiles/rule_match.xml new file +6 -0
@@ -0,0 +1,6 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="match"> + <name>state</name> + </expr> +</rule>
test/xmlfiles/rule_meta.xml new file +7 -0
@@ -0,0 +1,7 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="meta"> + <dreg>1</dreg> + <key>oifname</key> + </expr> +</rule>
test/xmlfiles/rule_nat.xml new file +11 -0
@@ -0,0 +1,11 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="nat"> + <sreg_addr_min>1</sreg_addr_min> + <sreg_addr_max>1</sreg_addr_max> + <sreg_proto_min>1</sreg_proto_min> + <sreg_proto_max>2</sreg_proto_max> + <family>ip</family> + <nat_type>dnat</nat_type> + </expr> +</rule>
test/xmlfiles/rule_nat6.xml new file +11 -0
@@ -0,0 +1,11 @@ +<rule family="ip6" table="nat" chain="OUTPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="nat"> + <family>ip6</family> + <nat_type>snat</nat_type> + <sreg_addr_min>2</sreg_addr_min> + <sreg_addr_max>2</sreg_addr_max> + <sreg_proto_min>1</sreg_proto_min> + <sreg_proto_max>2</sreg_proto_max> + </expr> +</rule>
test/xmlfiles/rule_payload.xml new file +9 -0
@@ -0,0 +1,9 @@ +<rule family="ip6" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="payload"> + <dreg>1</dreg> + <base>transport</base> + <offset>12</offset> + <len>4</len> + </expr> +</rule>
test/xmlfiles/rule_target.xml new file +6 -0
@@ -0,0 +1,6 @@ +<rule family="ip" table="filter" chain="INPUT" handle="100" version="0"> + <rule_flags>0</rule_flags> + <expr type="target"> + <name>LOG</name> + </expr> +</rule>
test/xmlfiles/table1.xml new file +6 -0
@@ -0,0 +1,6 @@ +<table name="filter" version="0"> + <properties> + <family>ip</family> + <table_flags>0</table_flags> + </properties> +</table>
test/xmlfiles/table2.xml new file +6 -0
@@ -0,0 +1,6 @@ +<table name="nat" version="0"> + <properties> + <family>ip6</family> + <table_flags>123</table_flags> + </properties> +</table>
Quoted 8 lines · Arturo Borrero Gonzalez
This patch add a testbench for XML parsing, which may be extended to also test JSON.
To use it:
$ cd test/ $ make nft-parsing-test $ ./nft-parsing-test xmlfiles/This testbench supersedes old .sh test scripts, so they are deleted.
Applied, with changes:
* Removed json skeleton code in the test
* used directory 'tests' instead of 'test'
* colorized output
Thanks