diff --git a/test/client/02-subscribe-argv-errors.py b/test/client/02-subscribe-argv-errors.py index 64491551..1084455e 100755 --- a/test/client/02-subscribe-argv-errors.py +++ b/test/client/02-subscribe-argv-errors.py @@ -51,6 +51,7 @@ if __name__ == '__main__': do_test(['--proxy'], "Error: --proxy argument given but no proxy url specified.\n\n" + helps, 1) do_test(['--psk'], "Error: --psk argument given but no key specified.\n\n" + helps, 1) do_test(['--psk-identity'], "Error: --psk-identity argument given but no identity specified.\n\n" + helps, 1) + do_test(['--random-filter'], "Error: --random-filter argument given but no chance specified.\n\n" + helps, 1) do_test(['-q'], "Error: -q argument given but no QoS specified.\n\n" + helps, 1) do_test(['-t'], "Error: -t argument given but no topic specified.\n\n" + helps, 1) do_test(['--tls-alpn'], "Error: --tls-alpn argument given but no protocol specified.\n\n" + helps, 1) @@ -124,6 +125,7 @@ if __name__ == '__main__': do_test(['--unknown'], "Error: Unknown option '--unknown'.\n" + helps, 1) do_test(['-l'], "Error: Unknown option '-l'.\n" + helps, 1) do_test(['-m'], "Error: Unknown option '-m'.\n" + helps, 1) + do_test(['-n'], "Error: Unknown option '-n'.\n" + helps, 1) do_test(['-r'], "Error: Unknown option '-r'.\n" + helps, 1) do_test(['--repeat'], "Error: Unknown option '--repeat'.\n" + helps, 1) do_test(['--repeat-delay'], "Error: Unknown option '--repeat-delay'.\n" + helps, 1) diff --git a/test/client/02-subscribe-filter-out.py b/test/client/02-subscribe-filter-out.py new file mode 100755 index 00000000..c40c288e --- /dev/null +++ b/test/client/02-subscribe-filter-out.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +# + +from mosq_test_helper import * + +def do_test(proto_ver): + rc = 1 + + port = mosq_test.get_port() + + if proto_ver == 5: + V = 'mqttv5' + elif proto_ver == 4: + V = 'mqttv311' + else: + V = 'mqttv31' + + env = { + 'LD_LIBRARY_PATH':'../../lib', + 'XDG_CONFIG_HOME':'/tmp/missing' + } + cmd = ['../../client/mosquitto_sub', + '-p', str(port), + '-q', '0', + '-t', '02/sub/filter-out/#', + '-T', '02/sub/filter-out/filtered', + '-V', V, + '-C', '2' + ] + + publish_packet1 = mosq_test.gen_publish("02/sub/filter-out/recv", qos=0, payload="recv", proto_ver=proto_ver) + publish_packet2 = mosq_test.gen_publish("02/sub/filter-out/filtered", qos=0, payload="filtered", proto_ver=proto_ver) + + broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) + + try: + sock = mosq_test.pub_helper(port=port, proto_ver=proto_ver) + + sub = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) + time.sleep(0.1) + sock.send(publish_packet1) + sock.send(publish_packet2) + sock.send(publish_packet1) + sock.send(publish_packet2) + sub.wait() + (stdo, stde) = sub.communicate() + if stdo.decode('utf-8') == 'recv\nrecv\n': + rc = 0 + else: + print(stdo.decode('utf-8')) + sock.close() + except mosq_test.TestError: + pass + except Exception as e: + print(e) + 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=3) +do_test(proto_ver=4) +do_test(proto_ver=5) diff --git a/test/client/03-publish-argv-errors.py b/test/client/03-publish-argv-errors.py index 2a31d1f4..941eb728 100755 --- a/test/client/03-publish-argv-errors.py +++ b/test/client/03-publish-argv-errors.py @@ -108,6 +108,7 @@ if __name__ == '__main__': do_test(['-p', '65536'], "Error: Invalid port given: 65536\n" + helps, 1) do_test(['-q', '-1'], "Error: Invalid QoS given: -1\n" + helps, 1) do_test(['-q', '3'], "Error: Invalid QoS given: 3\n" + helps, 1) + do_test(['--repeat-delay', '-1'], "Error: --repeat-delay argument must be >=0.0.\n\n" + helps, 1) do_test(['-t', 'topic/+'], "Error: Invalid publish topic 'topic/+', does it contain '+' or '#'?\n" + helps, 1) do_test(['-t', 'topic/#'], "Error: Invalid publish topic 'topic/#', does it contain '+' or '#'?\n" + helps, 1) do_test(['-V', '5', '-D', 'connect', 'request-problem-information', '-1'], "Error: Property value (-1) out of range for property request-problem-information.\n\n" + helps, 1) @@ -117,6 +118,7 @@ if __name__ == '__main__': do_test(['-V', '5', '-D', 'connect', 'session-expiry-interval', '-1'], "Error: Property value (-1) out of range for property session-expiry-interval.\n\n" + helps, 1) do_test(['-V', '5', '-D', 'connect', 'session-expiry-interval', '4294967296'], "Error: Property value (4294967296) out of range for property session-expiry-interval.\n\n" + helps, 1) do_test(['-V', '5', '-D', 'publish', 'subscription-identifier', '1'], "Error: subscription-identifier property not supported for publish in --property argument.\n\n" + helps, 1) + do_test(['-t','topic','-m','1', '--cafile', 'missing'], "Error: Problem setting TLS options: File not found.\n", 1) # Unknown options do_test(['--unknown'], "Error: Unknown option '--unknown'.\n" + helps, 1) diff --git a/test/client/Makefile b/test/client/Makefile index 74ba9c99..fbcde1fe 100644 --- a/test/client/Makefile +++ b/test/client/Makefile @@ -9,6 +9,7 @@ test : 02 03 02 : ./02-subscribe-argv-errors.py + ./02-subscribe-filter-out.py ./02-subscribe-qos1.py ./02-subscribe-format.py ./02-subscribe-null.py @@ -20,6 +21,7 @@ test : 02 03 ./03-publish-qos0-empty.py ./03-publish-qos1-properties.py ./03-publish-qos1.py + ./03-publish-repeat.py ./03-publish-socks.py ./03-publish-stdin-file.py ./03-publish-stdin-line.py diff --git a/test/client/test.py b/test/client/test.py index b94b76e9..190a9b7b 100755 --- a/test/client/test.py +++ b/test/client/test.py @@ -6,6 +6,7 @@ import ptest tests = [ #(ports required, 'path'), (1, './02-subscribe-argv-errors.py'), + (1, './02-subscribe-filter-out.py'), (1, './02-subscribe-format.py'), (1, './02-subscribe-null.py'), (1, './02-subscribe-qos1.py'), @@ -16,6 +17,7 @@ tests = [ (1, './03-publish-qos0-empty.py'), (1, './03-publish-qos1-properties.py'), (1, './03-publish-qos1.py'), + (1, './03-publish-repeat.py'), (2, './03-publish-socks.py'), (1, './03-publish-stdin-file.py'), (1, './03-publish-stdin-line.py'),