From be9c06b4b6f92bb871e04ca0f045d2183926d25a Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 29 Jan 2014 22:05:07 +0000 Subject: [PATCH] Update tests for default protocol version. Add test for MQTT v3.1.1. Change-Id: Ia7b38ba92f848d88255a1ad96ca8504cd193fc6f --- test/lib/01-con-discon-success-mqtt311.py | 64 +++++++++++++++++++ test/lib/Makefile | 1 + .../python/01-con-discon-success-mqtt311.test | 33 ++++++++++ .../01-con-discon-success-mqtt311.test | 33 ++++++++++ test/paho_test.py | 2 +- 5 files changed, 132 insertions(+), 1 deletion(-) create mode 100755 test/lib/01-con-discon-success-mqtt311.py create mode 100755 test/lib/python/01-con-discon-success-mqtt311.test create mode 100755 test/lib/python3/01-con-discon-success-mqtt311.test diff --git a/test/lib/01-con-discon-success-mqtt311.py b/test/lib/01-con-discon-success-mqtt311.py new file mode 100755 index 0000000..5b61c4c --- /dev/null +++ b/test/lib/01-con-discon-success-mqtt311.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +# Test whether a client produces a correct connect and subsequent disconnect. + +# The client should connect to port 1888 with keepalive=60, clean session set, +# and client id 01-con-discon-success +# 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 inspect +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, 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'] +except KeyError: + pp = '' +env['PYTHONPATH'] = '../../src:'+pp +client = subprocess.Popen(client_args, env=env) + +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() + client.wait() + sock.close() + +exit(rc) + diff --git a/test/lib/Makefile b/test/lib/Makefile index 655ecf3..f73527b 100644 --- a/test/lib/Makefile +++ b/test/lib/Makefile @@ -7,6 +7,7 @@ test : python python3 python python3 : ./01-con-discon-success.py $@/01-con-discon-success.test + ./01-con-discon-success-mqtt311.py $@/01-con-discon-success-mqtt311.test ./01-will-set.py $@/01-will-set.test ./01-unpwd-set.py $@/01-unpwd-set.test ./01-will-unpwd-set.py $@/01-will-unpwd-set.test diff --git a/test/lib/python/01-con-discon-success-mqtt311.test b/test/lib/python/01-con-discon-success-mqtt311.test new file mode 100755 index 0000000..5d17347 --- /dev/null +++ b/test/lib/python/01-con-discon-success-mqtt311.test @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +import os +import subprocess +import socket +import sys +import time +from struct import * + +import paho.mqtt.client as mqtt + + +def on_connect(mqttc, obj, flags, rc): + if rc != 0: + exit(rc) + else: + mqttc.disconnect() + +def on_disconnect(mqttc, obj, rc): + mqttc.loop() + obj = rc + + +run = -1 +mqttc = mqtt.Client("01-con-discon-success", run, protocol=mqtt.MQTTv311) +mqttc.on_connect = on_connect +mqttc.on_disconnect = on_disconnect + +mqttc.connect("localhost", 1888) +while run == -1: + mqttc.loop() + +exit(run) diff --git a/test/lib/python3/01-con-discon-success-mqtt311.test b/test/lib/python3/01-con-discon-success-mqtt311.test new file mode 100755 index 0000000..f128ec0 --- /dev/null +++ b/test/lib/python3/01-con-discon-success-mqtt311.test @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +import os +import subprocess +import socket +import sys +import time +from struct import * + +import paho.mqtt.client as mqtt + + +def on_connect(mqttc, obj, flags, rc): + if rc != 0: + exit(rc) + else: + mqttc.disconnect() + +def on_disconnect(mqttc, obj, rc): + mqttc.loop() + obj = rc + + +run = -1 +mqttc = mqtt.Client("01-con-discon-success", run, protocol=mqtt.MQTTv311) +mqttc.on_connect = on_connect +mqttc.on_disconnect = on_disconnect + +mqttc.connect("localhost", 1888) +while run == -1: + mqttc.loop() + +exit(run) diff --git a/test/paho_test.py b/test/paho_test.py index a16c5d4..9cc6b0c 100644 --- a/test/paho_test.py +++ b/test/paho_test.py @@ -201,7 +201,7 @@ def to_string(packet): # Reserved return "0xF0" -def gen_connect(client_id, clean_session=True, keepalive=60, username=None, password=None, will_topic=None, will_qos=0, will_retain=False, will_payload="", proto_name="MQTT", proto_ver=4): +def gen_connect(client_id, clean_session=True, keepalive=60, username=None, password=None, will_topic=None, will_qos=0, will_retain=False, will_payload="", proto_name="MQIsdp", proto_ver=3): if client_id == None: remaining_length = 12 else: -- 2.39.5