def test_01_con_failure_rc(self, proto_ver, fake_broker): mqttc = client.Client( "01-con-failure-rc", protocol=proto_ver) def on_connect(mqttc, obj, flags, rc): assert rc == 1 mqttc.on_connect = on_connect mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect( "01-con-failure-rc", keepalive=60, proto_ver=proto_ver) packet_in = fake_broker.receive_packet(1000) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=1) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed finally: mqttc.loop_stop()
def test_01_con_failure_rc(self, proto_ver, fake_broker): mqttc = client.Client("01-con-failure-rc", protocol=proto_ver) def on_connect(mqttc, obj, flags, rc): assert rc == 1 mqttc.on_connect = on_connect mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect("01-con-failure-rc", keepalive=60, proto_ver=proto_ver) packet_in = fake_broker.receive_packet(1000) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=1) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed finally: mqttc.loop_stop()
def test_valid_utf8_topic_recv(self, fake_broker): mqttc = client.Client("client-id") # It should be non-ascii multi-bytes character topic = unicodedata.lookup('SNOWMAN') def on_message(client, userdata, msg): assert msg.topic == topic client.disconnect() mqttc.on_message = on_message mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect("client-id") packet_in = fake_broker.receive_packet(len(connect_packet)) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=0) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) publish_packet = paho_test.gen_publish( topic.encode('utf-8'), qos=0 ) count = fake_broker.send_packet(publish_packet) assert count # Check connection was not closed assert count == len(publish_packet) disconnect_packet = paho_test.gen_disconnect() packet_in = fake_broker.receive_packet(len(disconnect_packet)) assert packet_in # Check connection was not closed assert packet_in == disconnect_packet finally: mqttc.loop_stop() packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed
def test_valid_utf8_topic_publish(self, fake_broker): mqttc = client.Client("client-id") # It should be non-ascii multi-bytes character topic = unicodedata.lookup('SNOWMAN') mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect("client-id") packet_in = fake_broker.receive_packet(len(connect_packet)) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=0) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) mqttc.publish(topic, None, 0) # Small sleep needed to avoid connection reset. time.sleep(0.3) publish_packet = paho_test.gen_publish(topic.encode('utf-8'), qos=0) packet_in = fake_broker.receive_packet(len(publish_packet)) assert packet_in # Check connection was not closed assert packet_in == publish_packet mqttc.disconnect() disconnect_packet = paho_test.gen_disconnect() packet_in = fake_broker.receive_packet(len(disconnect_packet)) assert packet_in # Check connection was not closed assert packet_in == disconnect_packet finally: mqttc.loop_stop() packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed
def test_valid_utf8_topic_recv(self, fake_broker): mqttc = client.Client("client-id") # It should be non-ascii multi-bytes character topic = unicodedata.lookup('SNOWMAN') def on_message(client, userdata, msg): assert msg.topic == topic client.disconnect() mqttc.on_message = on_message mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect("client-id") packet_in = fake_broker.receive_packet(len(connect_packet)) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=0) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) publish_packet = paho_test.gen_publish(topic.encode('utf-8'), qos=0) count = fake_broker.send_packet(publish_packet) assert count # Check connection was not closed assert count == len(publish_packet) disconnect_packet = paho_test.gen_disconnect() packet_in = fake_broker.receive_packet(len(disconnect_packet)) assert packet_in # Check connection was not closed assert packet_in == disconnect_packet finally: mqttc.loop_stop() packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed
def test_invalid_utf8_topic(self, fake_broker): mqttc = client.Client("client-id") def on_message(client, userdata, msg): with pytest.raises(UnicodeDecodeError): msg.topic client.disconnect() mqttc.on_message = on_message mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect("client-id") packet_in = fake_broker.receive_packet(len(connect_packet)) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=0) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) publish_packet = paho_test.gen_publish(b"\xff", qos=0) count = fake_broker.send_packet(publish_packet) assert count # Check connection was not closed assert count == len(publish_packet) disconnect_packet = paho_test.gen_disconnect() packet_in = fake_broker.receive_packet(len(disconnect_packet)) assert packet_in # Check connection was not closed assert packet_in == disconnect_packet finally: mqttc.loop_stop() packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed
#!/usr/bin/env python3 # Test the reconnect_on_failure = False mode import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-reconnect-on-failure", keepalive=keepalive) connack_packet_ok = paho_test.gen_connack(rc=0) connack_packet_failure = paho_test.gen_connack( rc=1) # CONNACK_REFUSED_PROTOCOL_VERSION publish_packet = paho_test.gen_publish(u"reconnect/test", qos=0, payload="message") sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) paho_test.expect_packet(conn, "connect", connect_packet) conn.send(connack_packet_ok) # Connection is a success, so we expect a publish
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 paho_test if sys.version < '2.7': print("WARNING: SSL not supported on Python 2.6") exit(0) rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("08-ssl-connect-no-auth", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) ssock = ssl.wrap_socket(sock, ca_certs="../ssl/all-ca.crt", keyfile="../ssl/server.key", certfile="../ssl/server.crt", server_side=True, ssl_version=ssl.PROTOCOL_TLSv1) ssock.settimeout(10) ssock.bind(('', 1888)) ssock.listen(5)
#!/usr/bin/env python # Test whether a client sends a correct PUBLISH to a topic with QoS 2 and responds to a disconnect. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("publish-qos2-test", keepalive=keepalive, clean_session=False) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() mid = 1 publish_packet = paho_test.gen_publish( u"pub/qos2/test", qos=2, mid=mid, payload="message".encode('utf-8')) publish_dup_packet = paho_test.gen_publish( u"pub/qos2/test", qos=2, mid=mid, payload="message".encode('utf-8'), dup=True) pubrec_packet = paho_test.gen_pubrec(mid) pubrel_packet = paho_test.gen_pubrel(mid) pubrel_dup_packet = paho_test.gen_pubrel(mid, dup=True) pubcomp_packet = paho_test.gen_pubcomp(mid) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(5)
# Test whether a client produces a correct connect with a unicode username and password. # The client should connect to port 1888 with keepalive=60, clean session set, # client id 01-unpwd-unicode-set, username and password from corresponding variables from __future__ import unicode_literals import context import paho_test rc = 1 keepalive = 60 username = "******" password = "******" connect_packet = paho_test.gen_connect( "01-unpwd-unicode-set", keepalive=keepalive, username=username, password=password) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): rc = 0 conn.close() finally: client.terminate()
import os import subprocess import socket import sys import time # 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 paho_test rc = 1 keepalive = 4 connect_packet = paho_test.gen_connect("01-keepalive-pingreq", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) pingreq_packet = paho_test.gen_pingreq() pingresp_packet = paho_test.gen_pingresp() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH']
#!/usr/bin/env python # Test whether a client produces a correct connect with a username and password. # The client should connect to port 1888 with keepalive=60, clean session set, # client id 01-unpwd-set, username set to uname and password set to empty string import context import paho_test rc = 1 keepalive = 60 username = "******" password = "" connect_packet = paho_test.gen_connect("01-unpwd-set", keepalive=keepalive, username=username, password=password) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): rc = 0 conn.close() finally:
#!/usr/bin/env python3 # Test whether a client sends a correct PUBLISH to a topic with QoS 1, # then responds correctly to a disconnect. # Use paho.mqtt.publish helper for that. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect( "publish-helper-qos1-disconnect-test", keepalive=keepalive, ) connack_packet = paho_test.gen_connack(rc=0) mid = 1 publish_packet = paho_test.gen_publish( u"pub/qos1/test", qos=1, mid=mid, payload="message" ) publish_packet_dup = paho_test.gen_publish( u"pub/qos1/test", qos=1, mid=mid, payload="message", dup=True, ) puback_packet = paho_test.gen_puback(mid) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client()
import 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-no-clean-session", clean_session=False, keepalive=keepalive) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError: pp = '' env['PYTHONPATH'] = '../../src:' + pp
#!/usr/bin/env python # Test whether a client produces a correct connect with a will. # Will QoS=1, will retain=1. # The client should connect to port 1888 with keepalive=60, clean session set, # client id 01-will-set will topic set to topic/on/unexpected/disconnect , will # payload set to "will message", will qos set to 1 and will retain set. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect( "01-will-set", keepalive=keepalive, will_topic="topic/on/unexpected/disconnect", will_qos=1, will_retain=True, will_payload="will message".encode('utf-8')) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): rc = 0 conn.close() finally:
# 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 paho_test rc = 1 keepalive = 60 username = u"úsérnámé-hélló" password = u"hélló" connect_packet = paho_test.gen_connect("01-unpwd-unicode-set", keepalive=keepalive, username=username.encode('utf-8'), password=password.encode('utf-8')) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError: pp = '' env['PYTHONPATH'] = '../../src:' + pp
# The client should connect to port 1888 with keepalive=60, clean session set, # and client id 08-ssl-connect-crt-auth # It should use the CA certificate ssl/all-ca.crt for verifying the server. # The test will send a CONNACK message to the client with rc=0. Upon receiving # the CONNACK and verifying that rc=0, the client should send a DISCONNECT # message. If rc!=0, the client should exit with an error. import context import paho_test from paho_test import ssl context.check_ssl() rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("08-ssl-connect-crt-auth-pw", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() ssock = paho_test.create_server_socket_ssl(cert_reqs=ssl.CERT_REQUIRED) client = context.start_client() try: (conn, address) = ssock.accept() conn.settimeout(10) paho_test.expect_packet(conn, "connect", connect_packet) conn.send(connack_packet) paho_test.expect_packet(conn, "disconnect", disconnect_packet)
import 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-unpwd-set", keepalive=keepalive, username="******", password="******") sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError: pp = '' env['PYTHONPATH'] = '../../src:' + pp
import sys import time # 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-con-discon-success", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError:
#!/usr/bin/env python # Test whether a client connects correctly with a zero length clientid. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("", keepalive=keepalive, proto_name="MQTT", proto_ver=4) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): conn.send(connack_packet) if paho_test.expect_packet(conn, "disconnect", disconnect_packet): rc = 0 conn.close() finally: client.terminate()
import os import subprocess import socket import sys import time # 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-con-discon-success", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError:
import time # 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 paho_test if sys.version < '2.7': print("WARNING: SSL not supported on Python 2.6") exit(0) rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("08-ssl-connect-no-auth", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) ssock = ssl.wrap_socket(sock, ca_certs="../ssl/all-ca.crt", keyfile="../ssl/server.key", certfile="../ssl/server.crt", server_side=True, ssl_version=ssl.PROTOCOL_TLSv1) ssock.settimeout(10) ssock.bind(('', 1888)) ssock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError:
# The client should connect to port 1888 with keepalive=60, clean session set, # and client id publish-helper-qos0-test # The test will send a CONNACK message to the client with rc=0. Upon receiving # the CONNACK and verifying that rc=0, the client should send a PUBLISH message # to topic "pub/qos0/test" with payload "message" and QoS=0. If rc!=0, the # client should exit with an error. # After sending the PUBLISH message, the client should send a # DISCONNECT message. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("publish-helper-qos0-test", keepalive=keepalive, proto_ver=5, properties=None) connack_packet = paho_test.gen_connack(rc=0, proto_ver=5) publish_packet = paho_test.gen_publish(u"pub/qos0/test", qos=0, payload="message", proto_ver=5) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client() try:
import inspect import os import subprocess import socket import 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-con-discon-success", keepalive=keepalive, proto_name="MQIsdp", proto_ver=3) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError:
#!/usr/bin/env python # Test whether a client sends a correct retained PUBLISH to a topic with QoS 0. import context import paho_test rc = 1 keepalive = 60 mid = 16 connect_packet = paho_test.gen_connect("retain-qos0-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) publish_packet = paho_test.gen_publish( u"retain/qos0/test", qos=0, payload="retained message".encode('utf-8'), retain=True) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): conn.send(connack_packet) if paho_test.expect_packet(conn, "publish", publish_packet): rc = 0 conn.close()
import subprocess import socket import 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-unpwd-set", keepalive=keepalive, username="******", password="******") sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(("", 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env["PYTHONPATH"] except KeyError: pp = "" env["PYTHONPATH"] = "../../src:" + pp client = subprocess.Popen(client_args, env=env)
#!/usr/bin/env python # Test whether a client produces a correct connect with clean session not set. # The client should connect to port 1888 with keepalive=60, clean session not # set, and client id 01-no-clean-session. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-no-clean-session", clean_session=False, keepalive=keepalive) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): rc = 0 conn.close() finally: client.terminate() client.wait() sock.close()
def test_message_callback(self, fake_broker): mqttc = client.Client("client-id") userdata = { 'on_message': 0, 'callback1': 0, 'callback2': 0, } mqttc.user_data_set(userdata) def on_message(client, userdata, msg): assert msg.topic == 'topic/value' userdata['on_message'] += 1 def callback1(client, userdata, msg): assert msg.topic == 'topic/callback/1' userdata['callback1'] += 1 def callback2(client, userdata, msg): assert msg.topic in ('topic/callback/3', 'topic/callback/1') userdata['callback2'] += 1 mqttc.on_message = on_message mqttc.message_callback_add('topic/callback/1', callback1) mqttc.message_callback_add('topic/callback/+', callback2) mqttc.connect_async("localhost", 1888) mqttc.loop_start() try: fake_broker.start() connect_packet = paho_test.gen_connect("client-id") packet_in = fake_broker.receive_packet(len(connect_packet)) assert packet_in # Check connection was not closed assert packet_in == connect_packet connack_packet = paho_test.gen_connack(rc=0) count = fake_broker.send_packet(connack_packet) assert count # Check connection was not closed assert count == len(connack_packet) publish_packet = paho_test.gen_publish(b"topic/value", qos=1, mid=1) count = fake_broker.send_packet(publish_packet) assert count # Check connection was not closed assert count == len(publish_packet) publish_packet = paho_test.gen_publish(b"topic/callback/1", qos=1, mid=2) count = fake_broker.send_packet(publish_packet) assert count # Check connection was not closed assert count == len(publish_packet) publish_packet = paho_test.gen_publish(b"topic/callback/3", qos=1, mid=3) count = fake_broker.send_packet(publish_packet) assert count # Check connection was not closed assert count == len(publish_packet) puback_packet = paho_test.gen_puback(mid=1) packet_in = fake_broker.receive_packet(len(puback_packet)) assert packet_in # Check connection was not closed assert packet_in == puback_packet puback_packet = paho_test.gen_puback(mid=2) packet_in = fake_broker.receive_packet(len(puback_packet)) assert packet_in # Check connection was not closed assert packet_in == puback_packet puback_packet = paho_test.gen_puback(mid=3) packet_in = fake_broker.receive_packet(len(puback_packet)) assert packet_in # Check connection was not closed assert packet_in == puback_packet mqttc.disconnect() disconnect_packet = paho_test.gen_disconnect() packet_in = fake_broker.receive_packet(len(disconnect_packet)) assert packet_in # Check connection was not closed assert packet_in == disconnect_packet finally: mqttc.loop_stop() packet_in = fake_broker.receive_packet(1) assert not packet_in # Check connection is closed assert userdata['on_message'] == 1 assert userdata['callback1'] == 1 assert userdata['callback2'] == 2
#!/usr/bin/env python3 # Test whether asyncio works import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("asyncio-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) subscribe_packet = paho_test.gen_subscribe(mid=1, topic=u"sub-test", qos=1) suback_packet = paho_test.gen_suback(mid=1, qos=1) unsubscribe_packet = paho_test.gen_unsubscribe(mid=2, topic=u"unsub-test") unsuback_packet = paho_test.gen_unsuback(mid=2) publish_packet = paho_test.gen_publish(u"b2c", qos=0, payload="msg") publish_packet_in = paho_test.gen_publish(u"asyncio", qos=1, mid=3, payload="message") puback_packet_in = paho_test.gen_puback(mid=3) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client()
#!/usr/bin/env python3 # Test whether a client connects correctly with a zero length clientid. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("", keepalive=keepalive, proto_ver=4) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) paho_test.expect_packet(conn, "connect", connect_packet) conn.send(connack_packet) paho_test.expect_packet(conn, "disconnect", disconnect_packet) rc = 0 conn.close() finally: client.terminate()
#!/usr/bin/env python # Test whether a client produces a correct connect with a will, username and password. # The client should connect to port 1888 with keepalive=60, clean session set, # client id 01-will-unpwd-set , will topic set to "will-topic", will payload # set to "will message", will qos=2, will retain not set, username set to # "oibvvwqw" and password set to "#'^2hg9a&nm38*us". import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-will-unpwd-set", keepalive=keepalive, username="******", password="******", will_topic="will-topic", will_qos=2, will_payload="will message".encode('utf-8')) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): rc = 0 conn.close() finally:
import sys import time # 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 paho_test rc = 1 keepalive = 4 connect_packet = paho_test.gen_connect("01-keepalive-pingreq", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) pingreq_packet = paho_test.gen_pingreq() pingresp_packet = paho_test.gen_pingresp() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH']
import os import subprocess import socket import sys import time # 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("publish-qos1-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() mid = 123 publish_packet = paho_test.gen_publish("pub/qos1/receive", qos=1, mid=mid, payload="message") puback_packet = paho_test.gen_puback(mid) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:]
#!/usr/bin/env python # Test whether a client sends a correct retained PUBLISH to a topic with QoS 0. import context import paho_test rc = 1 keepalive = 60 mid = 16 connect_packet = paho_test.gen_connect("retain-qos0-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) publish_packet = paho_test.gen_publish( u"retain/qos0/test", qos=0, payload="retained message".encode('utf-8'), retain=True) sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept() conn.settimeout(10) if paho_test.expect_packet(conn, "connect", connect_packet): conn.send(connack_packet) if paho_test.expect_packet(conn, "publish", publish_packet):
# 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect( "01-will-set", keepalive=keepalive, will_topic="topic/on/unexpected/disconnect", will_qos=1, will_retain=True, will_payload="will message") sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError:
import socket import 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("subscribe-qos2-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() mid = 1 subscribe_packet = paho_test.gen_subscribe(mid, "qos2/test", 2) suback_packet = paho_test.gen_suback(mid, 2) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:]
# The client should connect to port 1888 with keepalive=60, clean session set, # and client id publish-helper-qos0-test # The test will send a CONNACK message to the client with rc=0. Upon receiving # the CONNACK and verifying that rc=0, the client should send a PUBLISH message # to topic "pub/qos0/test" with payload "message" and QoS=0. If rc!=0, the # client should exit with an error. # After sending the PUBLISH message, the client should send a # DISCONNECT message. import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect( "publish-helper-qos0-test", keepalive=keepalive, ) connack_packet = paho_test.gen_connack(rc=0) publish_packet = paho_test.gen_publish( u"pub/qos0/test", qos=0, payload="message".encode('utf-8'), ) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client() try: (conn, address) = sock.accept()
import subprocess import socket import sys import time # 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-will-unpwd-set", keepalive=keepalive, username="******", password="******", will_topic="will-topic", will_qos=2, will_payload="will message") sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH'] except KeyError: pp = '' env['PYTHONPATH'] = '../../src:'+pp
import inspect import os import subprocess import socket import 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("subscribe-qos2-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() mid = 1 subscribe_packet = paho_test.gen_subscribe(mid, "qos2/test", 2) suback_packet = paho_test.gen_suback(mid, 2) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:]
import time # 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("01-con-discon-success", keepalive=keepalive, proto_name="MQTT", proto_ver=4) connack_packet = paho_test.gen_connack(rc=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try: pp = env['PYTHONPATH']
import os import subprocess import socket import sys import time # 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 paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("publish-qos0-test-np", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) publish_packet = paho_test.gen_publish("pub/qos0/no-payload/test", qos=0) disconnect_packet = paho_test.gen_disconnect() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.settimeout(10) sock.bind(('', 1888)) sock.listen(5) client_args = sys.argv[1:] env = dict(os.environ) try:
#!/usr/bin/env python3 # Test whether callback decorators work import context import paho_test rc = 1 keepalive = 60 connect_packet = paho_test.gen_connect("decorators-test", keepalive=keepalive) connack_packet = paho_test.gen_connack(rc=0) subscribe_packet = paho_test.gen_subscribe(mid=1, topic=u"sub-test", qos=1) suback_packet = paho_test.gen_suback(mid=1, qos=1) unsubscribe_packet = paho_test.gen_unsubscribe(mid=2, topic=u"unsub-test") unsuback_packet = paho_test.gen_unsuback(mid=2) publish_packet = paho_test.gen_publish(u"b2c", qos=0, payload="msg") publish_packet_in = paho_test.gen_publish(u"decorators", qos=1, mid=3, payload="message") puback_packet_in = paho_test.gen_puback(mid=3) disconnect_packet = paho_test.gen_disconnect() sock = paho_test.create_server_socket() client = context.start_client()