def on_message(self, client, userdata, msg): """This function will recevie all message from mqtt client the client instance for this callback userdata the private user data as set in Client() or userdata_set() message an instance of MQTTMessage. This is a class with members topic, payload, qos, retain. """ try: message = Message(msg.payload) except (TypeError, ValueError) as e: logger.debug(e) return if message.type() == MessageType.UNKNOWN: logger.debug("Got an UNKNOWN message, don't dispatch") return if message.type() == MessageType.RESPONSE: self.res_queue.put(message) if message.type() == MessageType.REQUEST or \ message.type() == MessageType.DIRECT or \ message.type() == MessageType.HOOK or \ message.type() == MessageType.EVENT: self.req_queue.put(message)
def test_init(self): msg = Message({ "method": "get", "resource": "/model/123" }, generate_id=True) self.assertGreater(msg.id, 0) self.assertLess(msg.id, 655350) self.assertEqual(msg.type(), MessageType.REQUEST) msg_noid = Message({"method": "get", "resource": "/model/123"}) self.assertEqual(msg_noid.type(), MessageType.UNKNOWN) with self.assertRaises(ValueError): Message("{") with self.assertRaises(TypeError): Message(123)
def test_request_msg(self): msg = { "id": 123124, "resource": "/network/cellular/1", "method": "get", "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.REQUEST)
def test_event_msg(self): msg = { "code": 200, "resource": "/network/cellular/1", "method": "get", "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.EVENT)
def test_hook_msg(self): msg = { "id": 123124, "resource": "/network/cellular/1", "method": "get", "sign": ["abc", "def"], "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.HOOK)
def test_direct_msg(self): msg = { "id": 123124, "resource": "/network/cellular/1", "method": "get", "tunnel": "asdf", "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.DIRECT)
def test_response_msg(self): msg = { "id": 123124, "code": 200, "resource": "/network/cellular/1", "method": "get", "sign": ["test"], "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.RESPONSE)
def test_init(self): msg = Message({ "method": "get", "resource": "/model/123" }, generate_id=True) self.assertGreater(msg.id, 0) self.assertLess(msg.id, 65535) self.assertEqual(msg.type(), MessageType.REQUEST) msg_noid = Message({ "method": "get", "resource": "/model/123" }) self.assertEqual(msg_noid.type(), MessageType.UNKNOWN) with self.assertRaises(ValueError): Message("{") with self.assertRaises(TypeError): Message(123)
def test_unknow_msg(self): msg = { "id": 123124, "resource": "/network/cellular/1", "method": "get", "sign": ["abc", "def"], "tunnel": "123", "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.UNKNOWN) msg = { "resource": "/network/cellular/1", "method": "get", "sign": ["abc", "def"], "tunnel": "123", "data": {} } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.UNKNOWN) msg = { "method": "get", "sign": ["abc", "def"], "tunnel": "123", } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.UNKNOWN) msg = { "method": "get", "sign": ["abc", "def"], } sanjimsg = Message(msg) self.assertEqual(sanjimsg.type(), MessageType.UNKNOWN)