From c453d2cb3eb7b16bba9def4bd62f8498c5845e71 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Thu, 10 Oct 2019 12:53:59 +0100 Subject: [PATCH] 07 broker tests with v5 support --- test/broker/07-will-invalid-utf8.py | 46 +++++++++-------- test/broker/07-will-no-flag.py | 46 +++++++++-------- test/broker/07-will-null-helper.py | 18 ------- test/broker/07-will-null-topic.py | 40 ++++++++------- test/broker/07-will-null.py | 76 ++++++++++++++++------------- 5 files changed, 118 insertions(+), 108 deletions(-) delete mode 100755 test/broker/07-will-null-helper.py diff --git a/test/broker/07-will-invalid-utf8.py b/test/broker/07-will-invalid-utf8.py index 3c5b3eee..901003c2 100755 --- a/test/broker/07-will-invalid-utf8.py +++ b/test/broker/07-will-invalid-utf8.py @@ -4,28 +4,34 @@ from mosq_test_helper import * -rc = 1 -mid = 53 -keepalive = 60 -connect_packet = mosq_test.gen_connect("will-invalid-utf8", keepalive=keepalive, will_topic="invalid/utf8") +def do_test(proto_ver): + rc = 1 + mid = 53 + keepalive = 60 + connect_packet = mosq_test.gen_connect("will-invalid-utf8", keepalive=keepalive, will_topic="invalid/utf8", proto_ver=proto_ver) -b = list(struct.unpack("B"*len(connect_packet), connect_packet)) -b[40] = 0 # Topic should never have a 0x0000 -connect_packet = struct.pack("B"*len(b), *b) + b = list(struct.unpack("B"*len(connect_packet), connect_packet)) + b[40] = 0 # Topic should never have a 0x0000 + connect_packet = struct.pack("B"*len(b), *b) -port = mosq_test.get_port() -broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) + port = mosq_test.get_port() + broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) -try: - sock = mosq_test.do_client_connect(connect_packet, b"", timeout=30, port=port) - rc = 0 - sock.close() -finally: - broker.terminate() - broker.wait() - (stdo, stde) = broker.communicate() - if rc: - print(stde.decode('utf-8')) + try: + sock = mosq_test.do_client_connect(connect_packet, b"", timeout=30, port=port) + rc = 0 + sock.close() + finally: + broker.terminate() + broker.wait() + (stdo, stde) = broker.communicate() + if rc: + print(stde.decode('utf-8')) + print("proto_ver=%d" % (proto_ver)) + exit(rc) -exit(rc) + +do_test(proto_ver=4) +do_test(proto_ver=5) +exit(0) diff --git a/test/broker/07-will-no-flag.py b/test/broker/07-will-no-flag.py index 27bed5df..6246557c 100755 --- a/test/broker/07-will-no-flag.py +++ b/test/broker/07-will-no-flag.py @@ -5,29 +5,35 @@ from mosq_test_helper import * -rc = 1 -keepalive = 10 -connect_packet = mosq_test.gen_connect("will-no-payload", keepalive=keepalive, will_topic="will/topic", will_qos=1, will_retain=True) -b = list(struct.unpack("B"*len(connect_packet), connect_packet)) +def do_test(proto_ver): + rc = 1 + keepalive = 10 + connect_packet = mosq_test.gen_connect("will-no-payload", keepalive=keepalive, will_topic="will/topic", will_qos=1, will_retain=True, proto_ver=proto_ver) + b = list(struct.unpack("B"*len(connect_packet), connect_packet)) -bmod = b[0:len(b)-2] -bmod[1] = bmod[1] - 2 # Reduce remaining length by two to remove final two payload length values + bmod = b[0:len(b)-2] + bmod[1] = bmod[1] - 2 # Reduce remaining length by two to remove final two payload length values -connect_packet = struct.pack("B"*len(bmod), *bmod) + connect_packet = struct.pack("B"*len(bmod), *bmod) -port = mosq_test.get_port() -broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) + port = mosq_test.get_port() + broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) -try: - sock = mosq_test.do_client_connect(connect_packet, b"", port=port) - sock.close() - rc = 0 -finally: - broker.terminate() - broker.wait() - (stdo, stde) = broker.communicate() - if rc: - print(stde.decode('utf-8')) + try: + sock = mosq_test.do_client_connect(connect_packet, b"", port=port) + sock.close() + rc = 0 + finally: + broker.terminate() + broker.wait() + (stdo, stde) = broker.communicate() + if rc: + print(stde.decode('utf-8')) + print("proto_ver=%d" % (proto_ver)) + exit(rc) -exit(rc) + +do_test(proto_ver=4) +do_test(proto_ver=5) +exit(0) diff --git a/test/broker/07-will-null-helper.py b/test/broker/07-will-null-helper.py deleted file mode 100755 index 7e56f429..00000000 --- a/test/broker/07-will-null-helper.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python3 - -# Connect a client with a will, then disconnect without DISCONNECT. - -from mosq_test_helper import * - -rc = 1 -keepalive = 60 -connect_packet = mosq_test.gen_connect("test-helper", keepalive=keepalive, will_topic="will/null/test") -connack_packet = mosq_test.gen_connack(rc=0) - -port = mosq_test.get_port() -sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=port) -rc = 0 -sock.close() - -exit(rc) - diff --git a/test/broker/07-will-null-topic.py b/test/broker/07-will-null-topic.py index b6007541..4741b60c 100755 --- a/test/broker/07-will-null-topic.py +++ b/test/broker/07-will-null-topic.py @@ -4,24 +4,30 @@ import struct from mosq_test_helper import * -rc = 1 -keepalive = 60 -connect_packet = mosq_test.gen_connect("will-null-topic", keepalive=keepalive, will_topic="", will_payload=struct.pack("!4sB7s", b"will", 0, b"message")) -connack_packet = mosq_test.gen_connack(rc=2) +def do_test(proto_ver): + rc = 1 + keepalive = 60 + connect_packet = mosq_test.gen_connect("will-null-topic", keepalive=keepalive, will_topic="", will_payload=struct.pack("!4sB7s", b"will", 0, b"message"), proto_ver=proto_ver) + connack_packet = mosq_test.gen_connack(rc=2, proto_ver=proto_ver) -port = mosq_test.get_port() -broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) + port = mosq_test.get_port() + broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) -try: - sock = mosq_test.do_client_connect(connect_packet, b"", timeout=30, port=port) - rc = 0 - sock.close() -finally: - broker.terminate() - broker.wait() - (stdo, stde) = broker.communicate() - if rc: - print(stde.decode('utf-8')) + try: + sock = mosq_test.do_client_connect(connect_packet, b"", timeout=30, port=port) + rc = 0 + sock.close() + finally: + broker.terminate() + broker.wait() + (stdo, stde) = broker.communicate() + if rc: + print(stde.decode('utf-8')) + print("proto_ver=%d" % (proto_ver)) + exit(rc) -exit(rc) + +do_test(proto_ver=4) +do_test(proto_ver=5) +exit(0) diff --git a/test/broker/07-will-null.py b/test/broker/07-will-null.py index 2ac24322..1eba327d 100755 --- a/test/broker/07-will-null.py +++ b/test/broker/07-will-null.py @@ -1,41 +1,51 @@ #!/usr/bin/env python3 -# Test whether a client will is transmitted correctly with a null character in the middle. +# Test whether a client will is transmitted correctly with a null payload. from mosq_test_helper import * -rc = 1 -mid = 53 -keepalive = 60 -connect_packet = mosq_test.gen_connect("will-qos0-test", keepalive=keepalive) -connack_packet = mosq_test.gen_connack(rc=0) - -subscribe_packet = mosq_test.gen_subscribe(mid, "will/null/test", 0) -suback_packet = mosq_test.gen_suback(mid, 0) - -publish_packet = mosq_test.gen_publish("will/null/test", qos=0) - -port = mosq_test.get_port() -broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) - -try: - sock = mosq_test.do_client_connect(connect_packet, connack_packet, timeout=30, port=port) - mosq_test.do_send_receive(sock, subscribe_packet, suback_packet, "suback") - - will = subprocess.Popen(['./07-will-null-helper.py', str(port)], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - will.wait() - (stdo, stde) = will.communicate() - - if mosq_test.expect_packet(sock, "publish", publish_packet): - rc = 0 - +def helper(port, proto_ver): + connect_packet = mosq_test.gen_connect("test-helper", keepalive=60, will_topic="will/null/test", proto_ver=proto_ver) + connack_packet = mosq_test.gen_connack(rc=0, proto_ver=proto_ver) + sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=port) sock.close() -finally: - broker.terminate() - broker.wait() - (stdo, stde) = broker.communicate() - if rc: - print(stde.decode('utf-8')) -exit(rc) +def do_test(proto_ver): + rc = 1 + mid = 53 + keepalive = 60 + connect_packet = mosq_test.gen_connect("will-qos0-test", keepalive=keepalive, proto_ver=proto_ver) + connack_packet = mosq_test.gen_connack(rc=0, proto_ver=proto_ver) + + subscribe_packet = mosq_test.gen_subscribe(mid, "will/null/test", 0, proto_ver=proto_ver) + suback_packet = mosq_test.gen_suback(mid, 0, proto_ver=proto_ver) + + publish_packet = mosq_test.gen_publish("will/null/test", qos=0, proto_ver=proto_ver) + + port = mosq_test.get_port() + broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) + + try: + sock = mosq_test.do_client_connect(connect_packet, connack_packet, timeout=30, port=port) + mosq_test.do_send_receive(sock, subscribe_packet, suback_packet, "suback") + + helper(port, proto_ver) + + if mosq_test.expect_packet(sock, "publish", publish_packet): + rc = 0 + + sock.close() + finally: + broker.terminate() + broker.wait() + (stdo, stde) = broker.communicate() + if rc: + print(stde.decode('utf-8')) + print("proto_ver=%d" % (proto_ver)) + exit(rc) + + +do_test(proto_ver=4) +do_test(proto_ver=5) +exit(0)