diff --git a/test/client/02-subscribe-env.py b/test/client/02-subscribe-env.py index c554f755..2998005e 100755 --- a/test/client/02-subscribe-env.py +++ b/test/client/02-subscribe-env.py @@ -3,10 +3,11 @@ # from mosq_test_helper import * +import platform mosq_test.require_features(["WITH_BROKER"]) -def do_test(proto_ver, env): +def do_test(proto_ver, configenv): rc = 1 port = mosq_test.get_port() @@ -18,7 +19,14 @@ def do_test(proto_ver, env): else: V = 'mqttv31' - env = mosq_test.env_add_ld_library_path(env) + env = mosq_test.env_add_ld_library_path() + for e in ['XDG_CONFIG_HOME', 'HOME', 'USERPROFILE']: + try: + del env[e] + except KeyError: + pass + env.update(configenv) + cmd = [mosq_paths.mosquitto_sub, '-p', str(port), '-q', '1', @@ -26,10 +34,10 @@ def do_test(proto_ver, env): '-C', '1' ] - payload = "message" + payload = "783c9cc5-5ad8-433f-a4ee-7dcd978c90a8" publish_packet_s = mosq_test.gen_publish("env/config/file/sub", qos=1, mid=1, payload=payload, proto_ver=proto_ver, retain=True) publish_packet_r = mosq_test.gen_publish("env/config/file/sub", qos=1, mid=2, payload=payload, proto_ver=proto_ver, retain=True) - puback_packet_s = mosq_test.gen_puback(1, proto_ver=proto_ver) + puback_packet_s = mosq_test.gen_puback(1, proto_ver=proto_ver, reason_code=mqtt5_rc.NO_MATCHING_SUBSCRIBERS) puback_packet_r = mosq_test.gen_puback(2, proto_ver=proto_ver) broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port) @@ -58,12 +66,18 @@ def do_test(proto_ver, env): exit(rc) -env = {'HOME': str(source_dir / 'data')} -do_test(proto_ver=3, env=env) -do_test(proto_ver=4, env=env) -do_test(proto_ver=5, env=env) +if platform.system() == 'Windows': + env = {'USERPROFILE': str(source_dir / 'data' / '.config')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) +else: + env = {'HOME': str(source_dir / 'data')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) -env = {'XDG_CONFIG_HOME': str(source_dir / 'data/.config')} -do_test(proto_ver=3, env=env) -do_test(proto_ver=4, env=env) -do_test(proto_ver=5, env=env) + env = {'XDG_CONFIG_HOME': str(source_dir / 'data' / '.config')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) diff --git a/test/client/03-publish-env.py b/test/client/03-publish-env.py index 021d99c8..9410b7ba 100755 --- a/test/client/03-publish-env.py +++ b/test/client/03-publish-env.py @@ -3,10 +3,11 @@ # from mosq_test_helper import * +import platform mosq_test.require_features(["WITH_BROKER"]) -def do_test(proto_ver, env): +def do_test(proto_ver, configenv): rc = 1 port = mosq_test.get_port() @@ -18,7 +19,13 @@ def do_test(proto_ver, env): else: V = 'mqttv31' - env = mosq_test.env_add_ld_library_path(env) + env = mosq_test.env_add_ld_library_path() + for e in ['XDG_CONFIG_HOME', 'HOME', 'USERPROFILE']: + try: + del env[e] + except KeyError: + pass + env.update(configenv) cmd = [mosq_paths.mosquitto_pub, '-p', str(port), '-q', '1', @@ -37,7 +44,7 @@ def do_test(proto_ver, env): try: sock = mosq_test.sub_helper(port=port, topic="#", qos=1, proto_ver=proto_ver) - pub = subprocess.run(cmd, capture_output=True, env=env) + pub = subprocess.run(cmd, capture_output=True, text=True, env=env) mosq_test.expect_packet(sock, "publish", publish_packet) rc = pub.returncode @@ -57,12 +64,18 @@ def do_test(proto_ver, env): exit(rc) -env = {'HOME': str(source_dir / 'data')} -do_test(proto_ver=3, env=env) -do_test(proto_ver=4, env=env) -do_test(proto_ver=5, env=env) +if platform.system() == 'Windows': + env = {'USERPROFILE': str(source_dir / 'data' / '.config')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) +else: + env = {'HOME': str(source_dir / 'data')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) -env = {'XDG_CONFIG_HOME': str(source_dir / 'data/.config')} -do_test(proto_ver=3, env=env) -do_test(proto_ver=4, env=env) -do_test(proto_ver=5, env=env) + env = {'XDG_CONFIG_HOME': str(source_dir / 'data' / '.config')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) diff --git a/test/client/04-rr-env.py b/test/client/04-rr-env.py index f4c679c5..a964e064 100755 --- a/test/client/04-rr-env.py +++ b/test/client/04-rr-env.py @@ -3,10 +3,11 @@ # from mosq_test_helper import * +import platform mosq_test.require_features(["WITH_BROKER"]) -def do_test(proto_ver, env): +def do_test(proto_ver, configenv): rc = 1 port = mosq_test.get_port() @@ -18,14 +19,18 @@ def do_test(proto_ver, env): else: V = 'mqttv31' - env = mosq_test.env_add_ld_library_path(env) + env = mosq_test.env_add_ld_library_path() + for e in ['XDG_CONFIG_HOME', 'HOME', 'USERPROFILE']: + try: + del env[e] + except KeyError: + pass + env.update(configenv) - payload = "message" + payload = "e126014f-fa4d-4c4c-8138-6cedb2d32aff" cmd = [mosq_paths.mosquitto_rr, '-p', str(port), '-q', '1', - '-t', '04/rr/qos1/test/request', - '-e', '04/rr/qos1/test/response', '-V', V, '-m', payload ] @@ -45,7 +50,7 @@ def do_test(proto_ver, env): try: sock = mosq_test.sub_helper(port=port, topic="04/rr/qos1/test/request", qos=1, proto_ver=proto_ver) - rr = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) + rr = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, env=env) mosq_test.expect_packet(sock, "publish", publish_packet_req) sock.send(puback_packet_req) @@ -59,7 +64,7 @@ def do_test(proto_ver, env): print("rr not terminated") rr_terminate_rc = 1 (stdo, stde) = rr.communicate() - if stdo.decode('utf-8') == payload + '\n': + if payload in stdo: rc = rr_terminate_rc sock.close() except mosq_test.TestError: @@ -72,17 +77,26 @@ def do_test(proto_ver, env): print("broker not terminated") if rc == 0: rc=1 if rc: + (stdo, stde) = rr.communicate() + print(stdo) + print(stde) print(mosq_test.broker_log(broker)) print("proto_ver=%d" % (proto_ver)) exit(rc) -env = {'HOME': str(source_dir / 'data')} -do_test(proto_ver=3, env=env) -do_test(proto_ver=4, env=env) -do_test(proto_ver=5, env=env) +if platform.system() == 'Windows': + env = {'USERPROFILE': str(source_dir / 'data' / '.config')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) +else: + env = {'HOME': str(source_dir / 'data')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) -env = {'XDG_CONFIG_HOME': str(source_dir / 'data/.config')} -do_test(proto_ver=3, env=env) -do_test(proto_ver=4, env=env) -do_test(proto_ver=5, env=env) + env = {'XDG_CONFIG_HOME': str(source_dir / 'data' / '.config')} + do_test(proto_ver=3, configenv=env) + do_test(proto_ver=4, configenv=env) + do_test(proto_ver=5, configenv=env) diff --git a/test/client/data/.config/mosquitto_pub.conf b/test/client/data/.config/mosquitto_pub.conf new file mode 100644 index 00000000..b3f82b68 --- /dev/null +++ b/test/client/data/.config/mosquitto_pub.conf @@ -0,0 +1,2 @@ +-t env/config/file/pub +-m message diff --git a/test/client/data/.config/mosquitto_rr b/test/client/data/.config/mosquitto_rr new file mode 100644 index 00000000..13dcc124 --- /dev/null +++ b/test/client/data/.config/mosquitto_rr @@ -0,0 +1,2 @@ +-t 04/rr/qos1/test/request +-e 04/rr/qos1/test/response \ No newline at end of file diff --git a/test/client/data/.config/mosquitto_rr.conf b/test/client/data/.config/mosquitto_rr.conf new file mode 100644 index 00000000..13dcc124 --- /dev/null +++ b/test/client/data/.config/mosquitto_rr.conf @@ -0,0 +1,2 @@ +-t 04/rr/qos1/test/request +-e 04/rr/qos1/test/response \ No newline at end of file diff --git a/test/client/data/.config/mosquitto_sub b/test/client/data/.config/mosquitto_sub index d8fce718..ce21c26d 100644 --- a/test/client/data/.config/mosquitto_sub +++ b/test/client/data/.config/mosquitto_sub @@ -1 +1 @@ --t env/config/file/sub +-t env/config/file/sub \ No newline at end of file diff --git a/test/client/data/.config/mosquitto_sub.conf b/test/client/data/.config/mosquitto_sub.conf new file mode 100644 index 00000000..ce21c26d --- /dev/null +++ b/test/client/data/.config/mosquitto_sub.conf @@ -0,0 +1 @@ +-t env/config/file/sub \ No newline at end of file