summaryrefslogtreecommitdiffstats
path: root/tests/py/nft-test.py
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2018-05-09 12:18:20 +0200
committerFlorian Westphal <fw@strlen.de>2018-05-09 12:18:20 +0200
commit2efbdf7b8fcf79f3fa8a6471d2eca00df0c91108 (patch)
treea7020e985b188bd249202594a0ed8cf94f1d829c /tests/py/nft-test.py
parent71624f25f22b1d750bb532ced75e080b4123fb56 (diff)
tests: py: allow to specify sets with a timeout
Not usable yet, as the set timeout netlink output isn't captured so far, but it adds groundwork to add this as a follow-up. Set definition syntax changes a little, if you want to add multiple elements they now have to be separated by "," just like in nftables. Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'tests/py/nft-test.py')
-rwxr-xr-xtests/py/nft-test.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py
index d4b22817..c00782d3 100755
--- a/tests/py/nft-test.py
+++ b/tests/py/nft-test.py
@@ -77,11 +77,12 @@ class Table:
class Set:
"""Class that represents a set"""
- def __init__(self, family, table, name, type, flags):
+ def __init__(self, family, table, name, type, timeout, flags):
self.family = family
self.table = table
self.name = name
self.type = type
+ self.timeout = timeout
self.flags = flags
def __eq__(self, other):
@@ -321,7 +322,7 @@ def set_add(s, test_result, filename, lineno):
if flags != "":
flags = "flags %s; " % flags
- cmd = "add set %s %s { type %s; %s}" % (table, s.name, s.type, flags)
+ cmd = "add set %s %s { type %s;%s %s}" % (table, s.name, s.type, s.timeout, flags)
ret = execute_cmd(cmd, filename, lineno)
if (ret == 0 and test_result == "fail") or \
@@ -850,22 +851,28 @@ def chain_process(chain_line, lineno):
def set_process(set_line, filename, lineno):
test_result = set_line[1]
+ timeout=""
tokens = set_line[0].split(" ")
set_name = tokens[0]
set_type = tokens[2]
+ set_flags = ""
i = 3
while len(tokens) > i and tokens[i] == ".":
set_type += " . " + tokens[i+1]
i += 2
+ if len(tokens) == i+2 and tokens[i] == "timeout":
+ timeout = "timeout " + tokens[i+1] + ";"
+ i += 2
+
if len(tokens) == i+2 and tokens[i] == "flags":
set_flags = tokens[i+1]
- else:
- set_flags = ""
+ elif len(tokens) != i:
+ print_error(set_name + " bad flag: " + tokens[i], filename, lineno)
- s = Set("", "", set_name, set_type, set_flags)
+ s = Set("", "", set_name, set_type, timeout, set_flags)
ret = set_add(s, test_result, filename, lineno)
if ret == 0:
@@ -876,9 +883,11 @@ def set_process(set_line, filename, lineno):
def set_element_process(element_line, filename, lineno):
rule_state = element_line[1]
- set_name = element_line[0].split(" ")[0]
- set_element = element_line[0].split(" ")
- set_element.remove(set_name)
+ element_line = element_line[0]
+ space = element_line.find(" ")
+ set_name = element_line[:space]
+ set_element = element_line[space:].split(",")
+
return set_add_elements(set_element, set_name, rule_state, filename, lineno)