diff mbox series

[nft,v3,12/14] tests/py: Don't read expected payload for each table

Message ID 20180508110845.26364-13-phil@nwl.cc
State Accepted
Delegated to: Pablo Neira
Headers show
Series libnftables: JSON support | expand

Commit Message

Phil Sutter May 8, 2018, 11:08 a.m. UTC
When testing rule adding to different table families, expected payload
was read for each tested family again. Instead, read it just once and
just try to read a family-specific payload for each tested family.

Signed-off-by: Phil Sutter <phil@nwl.cc>
---
 tests/py/nft-test.py | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py
index ef9c6dbb769e5..5f00b7d658f55 100755
--- a/tests/py/nft-test.py
+++ b/tests/py/nft-test.py
@@ -647,23 +647,25 @@  def rule_add(rule, filename, lineno, force_all_family_option, filename_path):
         print_error(reason, filename, lineno)
         return [-1, warning, error, unit_tests]
 
-    payload_expected = []
-
-    for table in table_list:
+    if rule[1].strip() == "ok":
         try:
-            payload_log = open("%s.payload.%s" % (filename_path, table.family))
-        except IOError:
             payload_log = open("%s.payload" % filename_path)
+            payload_expected = payload_find_expected(payload_log, rule[0])
+        except:
+            payload_expected = None
 
+    for table in table_list:
         if rule[1].strip() == "ok":
+            table_payload_expected = None
             try:
-                payload_expected.index(rule[0])
-            except ValueError:
-                payload_expected = payload_find_expected(payload_log, rule[0])
-
+                payload_log = open("%s.payload.%s" % (filename_path, table.family))
+                table_payload_expected = payload_find_expected(payload_log, rule[0])
+            except:
                 if not payload_expected:
                     print_error("did not find payload information for "
                                 "rule '%s'" % rule[0], payload_log.name, 1)
+            if not table_payload_expected:
+                table_payload_expected = payload_expected
 
         for table_chain in table.chains:
             chain = chain_get_by_name(table_chain)
@@ -696,7 +698,7 @@  def rule_add(rule, filename, lineno, force_all_family_option, filename_path):
                 continue
 
             # Check for matching payload
-            if state == "ok" and not payload_check(payload_expected,
+            if state == "ok" and not payload_check(table_payload_expected,
                                                    payload_log, cmd):
                 error += 1
                 gotf = open("%s.payload.got" % filename_path, 'a')