Skip to contentSkip to conversation

test: add testbench for XML

PATCH Applied Arturo Borrero Gonzalez 2 participants 2 messages Jun 27, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
index 6999f51..7ad11d4 100644
@@ -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
index 0eec5bd..eaf3bb8 100644
@@ -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
deleted file mode 100644
index 01ccb85..0000000
@@ -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
deleted file mode 100644
index a397d52..0000000
@@ -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
new file mode 100644
index 0000000..6941c3c
@@ -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
new file mode 100644
index 0000000..5e5f516
@@ -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
new file mode 100644
index 0000000..0978fe8
@@ -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
new file mode 100644
index 0000000..b32fdf0
@@ -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
new file mode 100644
index 0000000..411e28f
@@ -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
new file mode 100644
index 0000000..24e0e8d
@@ -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
new file mode 100644
index 0000000..0c42271
@@ -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
new file mode 100644
index 0000000..e6ff78a
@@ -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
new file mode 100644
index 0000000..8fff41a
@@ -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
new file mode 100644
index 0000000..bc848ef
@@ -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
new file mode 100644
index 0000000..d58a13d
@@ -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
new file mode 100644
index 0000000..92a2bd9
@@ -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
new file mode 100644
index 0000000..e33ff25
@@ -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
new file mode 100644
index 0000000..5d6f114
@@ -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
new file mode 100644
index 0000000..1738aa1
@@ -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
new file mode 100644
index 0000000..7e2f57a
@@ -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
new file mode 100644
index 0000000..531e7f9
@@ -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
new file mode 100644
index 0000000..17a97f7
@@ -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
new file mode 100644
index 0000000..a7846d6
@@ -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
new file mode 100644
index 0000000..2a4f5e9
@@ -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
new file mode 100644
index 0000000..d1f4692
@@ -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
new file mode 100644
index 0000000..9fa25be
@@ -0,0 +1,6 @@
+<table name="nat" version="0">
+	<properties>
+		<family>ip6</family>
+		<table_flags>123</table_flags>
+	</properties>
+</table>
maintainer Applied
#1 lore raw
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