diff --git a/test/broker/02-subhier-crash.py b/test/broker/02-subhier-crash.py new file mode 100755 index 00000000..b72605c0 --- /dev/null +++ b/test/broker/02-subhier-crash.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +# Test related to https://github.com/eclipse/mosquitto/issues/505 + +import time +import inspect, os, sys +# From http://stackoverflow.com/questions/279237/python-import-a-module-from-a-folder +cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],".."))) +if cmd_subfolder not in sys.path: + sys.path.insert(0, cmd_subfolder) + +import mosq_test + +rc = 1 +keepalive = 60 +connect_packet = mosq_test.gen_connect("subhier-crash", keepalive=keepalive) +connack_packet = mosq_test.gen_connack(rc=0) + +mid = 1 +subscribe1_packet = mosq_test.gen_subscribe(mid, "topic/a", 0) +suback1_packet = mosq_test.gen_suback(mid, 0) + +mid = 2 +subscribe2_packet = mosq_test.gen_subscribe(mid, "topic/b", 0) +suback2_packet = mosq_test.gen_suback(mid, 0) + +mid = 3 +unsubscribe1_packet = mosq_test.gen_unsubscribe(mid, "topic/a") +unsuback1_packet = mosq_test.gen_unsuback(mid) + +disconnect_packet = mosq_test.gen_disconnect() + + +port = mosq_test.get_port() +broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) + +def test(): + sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=port) + mosq_test.do_send_receive(sock, subscribe1_packet, suback1_packet, "suback 1") + mosq_test.do_send_receive(sock, subscribe2_packet, suback2_packet, "suback 2") + mosq_test.do_send_receive(sock, unsubscribe1_packet, unsuback1_packet, "unsuback") + + sock.send(disconnect_packet) + sock.close() + + +try: + time.sleep(0.5) + + test() + # Repeat test to check broker is still there + test() + + rc = 0 + +finally: + broker.terminate() + broker.wait() + (stdo, stde) = broker.communicate() + if rc: + print(stde) + +exit(rc) + diff --git a/test/broker/Makefile b/test/broker/Makefile index 8b17b3fc..f762cb64 100644 --- a/test/broker/Makefile +++ b/test/broker/Makefile @@ -51,6 +51,7 @@ endif ./02-unsubscribe-invalid-no-topic.py ./02-subscribe-invalid-utf8.py ./02-subscribe-persistence-flipflop.py + ./02-subhier-crash.py 03 : ./03-publish-qos1.py diff --git a/test/broker/ptest.py b/test/broker/ptest.py index 1e986efc..84b418c1 100755 --- a/test/broker/ptest.py +++ b/test/broker/ptest.py @@ -34,6 +34,7 @@ tests = [ (1, './02-unsubscribe-invalid-no-topic.py'), (1, './02-subscribe-invalid-utf8.py'), (1, './02-subscribe-persistence-flipflop.py'), + (1, './02-subhier-crash.py'), (1, './03-publish-qos1.py'), (1, './03-publish-qos2.py'),