]> git.michaelhowe.org Git - packages/p/paho-mqtt.git/commitdiff
Update tests for default protocol version.
authorRoger A. Light <roger@atchoo.org>
Wed, 29 Jan 2014 22:05:07 +0000 (22:05 +0000)
committerRoger A. Light <roger@atchoo.org>
Wed, 29 Jan 2014 22:05:07 +0000 (22:05 +0000)
Add test for MQTT v3.1.1.

Change-Id: Ia7b38ba92f848d88255a1ad96ca8504cd193fc6f

test/lib/01-con-discon-success-mqtt311.py [new file with mode: 0755]
test/lib/Makefile
test/lib/python/01-con-discon-success-mqtt311.test [new file with mode: 0755]
test/lib/python3/01-con-discon-success-mqtt311.test [new file with mode: 0755]
test/paho_test.py

diff --git a/test/lib/01-con-discon-success-mqtt311.py b/test/lib/01-con-discon-success-mqtt311.py
new file mode 100755 (executable)
index 0000000..5b61c4c
--- /dev/null
@@ -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)
+
index 655ecf3e46cad03bdd239fb1d4550095b55f4792..f73527b85b9ae28dc29c85f49e1a5fa11a6361b7 100644 (file)
@@ -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 (executable)
index 0000000..5d17347
--- /dev/null
@@ -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 (executable)
index 0000000..f128ec0
--- /dev/null
@@ -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)
index a16c5d4a310053fab76716e75925f20bdb88a2b9..9cc6b0c7fe15f40a5697ea496e93c25a97b2624d 100644 (file)
@@ -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: