From eec1ef1c559ff09f583cc7eda5e1ab53080152cc Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 28 Jul 2021 15:54:21 +0100 Subject: [PATCH] Parallelise bridge clean session test. --- ...ion.py => 06-bridge-clean-session-core.py} | 34 +++++++++++++------ .../06-bridge-clean-session-csF-lcsF.py | 9 +++++ .../06-bridge-clean-session-csF-lcsN.py | 9 +++++ .../06-bridge-clean-session-csF-lcsT.py | 9 +++++ .../06-bridge-clean-session-csT-lcsF.py | 9 +++++ .../06-bridge-clean-session-csT-lcsN.py | 9 +++++ .../06-bridge-clean-session-csT-lcsT.py | 9 +++++ test/broker/Makefile | 7 +++- test/broker/test.py | 7 +++- test/mosq_test.py | 2 +- 10 files changed, 91 insertions(+), 13 deletions(-) rename test/broker/{06-bridge-clean-session.py => 06-bridge-clean-session-core.py} (93%) create mode 100755 test/broker/06-bridge-clean-session-csF-lcsF.py create mode 100755 test/broker/06-bridge-clean-session-csF-lcsN.py create mode 100755 test/broker/06-bridge-clean-session-csF-lcsT.py create mode 100755 test/broker/06-bridge-clean-session-csT-lcsF.py create mode 100755 test/broker/06-bridge-clean-session-csT-lcsN.py create mode 100755 test/broker/06-bridge-clean-session-csT-lcsT.py diff --git a/test/broker/06-bridge-clean-session.py b/test/broker/06-bridge-clean-session-core.py similarity index 93% rename from test/broker/06-bridge-clean-session.py rename to test/broker/06-bridge-clean-session-core.py index f61d504c..89237d23 100755 --- a/test/broker/06-bridge-clean-session.py +++ b/test/broker/06-bridge-clean-session-core.py @@ -84,12 +84,12 @@ def do_test(proto_ver, cs, lcs=None): (port_a_listen, port_b_listen) = mosq_test.get_port(2) - conf_file_a = os.path.basename(__file__).replace('.py', '_a_edge.conf') - persistence_file_a = os.path.basename(__file__).replace('.py', '_a_edge.db') + conf_file_a = os.path.basename(__file__).replace('.py', '%d_a_edge.conf'%(port_a_listen)) + persistence_file_a = os.path.basename(__file__).replace('.py', '%d_a_edge.db'%(port_a_listen)) write_config_edge(conf_file_a, persistence_file_a, port_b_listen, port_a_listen, bridge_protocol, cs=cs, lcs=lcs) - conf_file_b = os.path.basename(__file__).replace('.py', '_b_core.conf') - persistence_file_b = os.path.basename(__file__).replace('.py', '_b_core.db') + conf_file_b = os.path.basename(__file__).replace('.py', '%d_b_core.conf'%(port_b_listen)) + persistence_file_b = os.path.basename(__file__).replace('.py', '%d_b_core.db'%(port_b_listen)) write_config_core(conf_file_b, port_b_listen, persistence_file_b) AckedPair = namedtuple("AckedPair", "p ack") @@ -254,11 +254,25 @@ def do_test(proto_ver, cs, lcs=None): print(stde_b.decode('utf-8')) exit(1) -for cs in [True, False]: - for lcs in [None, True, False]: - do_test(proto_ver=4, cs=cs, lcs=lcs) - # FIXME - v5 clean session bridging doesn't work: see - # https://github.com/eclipse/mosquitto/issues/1632 - #do_test(proto_ver=5, cs=cs, lcs=lcs) +if sys.argv[3] == "True": + cs = True +elif sys.argv[3] == "False": + cs = False +else: + raise ValueError("cs") + +if sys.argv[4] == "True": + lcs = True +elif sys.argv[4] == "False": + lcs = False +elif sys.argv[4] == "None": + lcs = None +else: + raise ValueError("lcs") + +do_test(proto_ver=4, cs=cs, lcs=lcs) +# FIXME - v5 clean session bridging doesn't work: see +# https://github.com/eclipse/mosquitto/issues/1632 +#do_test(proto_ver=5, cs=cs, lcs=lcs) exit(0) diff --git a/test/broker/06-bridge-clean-session-csF-lcsF.py b/test/broker/06-bridge-clean-session-csF-lcsF.py new file mode 100755 index 00000000..6db46cfa --- /dev/null +++ b/test/broker/06-bridge-clean-session-csF-lcsF.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# Test whether a broker handles cleansession and local_cleansession correctly on bridges + +from mosq_test_helper import * +from collections import namedtuple + +(port_a_listen, port_b_listen) = mosq_test.get_port(2) +subprocess.run(['./06-bridge-clean-session-core.py', str(port_a_listen), str(port_b_listen), "False", "False"]) + diff --git a/test/broker/06-bridge-clean-session-csF-lcsN.py b/test/broker/06-bridge-clean-session-csF-lcsN.py new file mode 100755 index 00000000..aab8255c --- /dev/null +++ b/test/broker/06-bridge-clean-session-csF-lcsN.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# Test whether a broker handles cleansession and local_cleansession correctly on bridges + +from mosq_test_helper import * +from collections import namedtuple + +(port_a_listen, port_b_listen) = mosq_test.get_port(2) +subprocess.run(['./06-bridge-clean-session-core.py', str(port_a_listen), str(port_b_listen), "False", "None"]) + diff --git a/test/broker/06-bridge-clean-session-csF-lcsT.py b/test/broker/06-bridge-clean-session-csF-lcsT.py new file mode 100755 index 00000000..005434a1 --- /dev/null +++ b/test/broker/06-bridge-clean-session-csF-lcsT.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# Test whether a broker handles cleansession and local_cleansession correctly on bridges + +from mosq_test_helper import * +from collections import namedtuple + +(port_a_listen, port_b_listen) = mosq_test.get_port(2) +subprocess.run(['./06-bridge-clean-session-core.py', str(port_a_listen), str(port_b_listen), "False", "True"]) + diff --git a/test/broker/06-bridge-clean-session-csT-lcsF.py b/test/broker/06-bridge-clean-session-csT-lcsF.py new file mode 100755 index 00000000..fe6a810d --- /dev/null +++ b/test/broker/06-bridge-clean-session-csT-lcsF.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# Test whether a broker handles cleansession and local_cleansession correctly on bridges + +from mosq_test_helper import * +from collections import namedtuple + +(port_a_listen, port_b_listen) = mosq_test.get_port(2) +subprocess.run(['./06-bridge-clean-session-core.py', str(port_a_listen), str(port_b_listen), "True", "False"]) + diff --git a/test/broker/06-bridge-clean-session-csT-lcsN.py b/test/broker/06-bridge-clean-session-csT-lcsN.py new file mode 100755 index 00000000..8afa8700 --- /dev/null +++ b/test/broker/06-bridge-clean-session-csT-lcsN.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# Test whether a broker handles cleansession and local_cleansession correctly on bridges + +from mosq_test_helper import * +from collections import namedtuple + +(port_a_listen, port_b_listen) = mosq_test.get_port(2) +subprocess.run(['./06-bridge-clean-session-core.py', str(port_a_listen), str(port_b_listen), "True", "None"]) + diff --git a/test/broker/06-bridge-clean-session-csT-lcsT.py b/test/broker/06-bridge-clean-session-csT-lcsT.py new file mode 100755 index 00000000..9e2d8257 --- /dev/null +++ b/test/broker/06-bridge-clean-session-csT-lcsT.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# Test whether a broker handles cleansession and local_cleansession correctly on bridges + +from mosq_test_helper import * +from collections import namedtuple + +(port_a_listen, port_b_listen) = mosq_test.get_port(2) +subprocess.run(['./06-bridge-clean-session-core.py', str(port_a_listen), str(port_b_listen), "True", "True"]) + diff --git a/test/broker/Makefile b/test/broker/Makefile index d012c91a..384e17a4 100644 --- a/test/broker/Makefile +++ b/test/broker/Makefile @@ -126,7 +126,12 @@ test : test-compile 01 02 03 04 05 06 07 08 09 10 11 12 13 14 ./06-bridge-br2b-disconnect-qos1.py ./06-bridge-br2b-disconnect-qos2.py ./06-bridge-br2b-remapping.py - ./06-bridge-clean-session.py + ./06-bridge-clean-session-csF-lcsF.py + ./06-bridge-clean-session-csF-lcsN.py + ./06-bridge-clean-session-csF-lcsT.py + ./06-bridge-clean-session-csT-lcsF.py + ./06-bridge-clean-session-csT-lcsN.py + ./06-bridge-clean-session-csT-lcsT.py ./06-bridge-fail-persist-resend-qos1.py ./06-bridge-fail-persist-resend-qos2.py ./06-bridge-no-local.py diff --git a/test/broker/test.py b/test/broker/test.py index 91a4ca4c..bfeaef24 100755 --- a/test/broker/test.py +++ b/test/broker/test.py @@ -106,7 +106,12 @@ tests = [ (2, './06-bridge-br2b-disconnect-qos1.py'), (2, './06-bridge-br2b-disconnect-qos2.py'), (2, './06-bridge-br2b-remapping.py'), - (2, './06-bridge-clean-session.py'), + (2, './06-bridge-clean-session-csF-lcsF.py'), + (2, './06-bridge-clean-session-csF-lcsN.py'), + (2, './06-bridge-clean-session-csF-lcsT.py'), + (2, './06-bridge-clean-session-csT-lcsF.py'), + (2, './06-bridge-clean-session-csT-lcsN.py'), + (2, './06-bridge-clean-session-csT-lcsT.py'), (2, './06-bridge-fail-persist-resend-qos1.py'), (2, './06-bridge-fail-persist-resend-qos2.py'), (1, './06-bridge-no-local.py'), diff --git a/test/mosq_test.py b/test/mosq_test.py index 52dcca0c..866ede4f 100644 --- a/test/mosq_test.py +++ b/test/mosq_test.py @@ -709,7 +709,7 @@ def get_port(count=1): else: return 1888 else: - if len(sys.argv) == 1+count: + if len(sys.argv) >= 1+count: p = () for i in range(0, count): p = p + (int(sys.argv[1+i]),)