def test_CtrlConn_on_message_cmd_response(mqtt_client, lock, topic): def lock_wrapper(func): def wrapper(*args, **kwargs): ret = func(*args, **kwargs) lock.release() return ret return wrapper def sub(func): mqtt_client.on_message = lock_wrapper(func) return func sub.remove_callback = partial(mqtt_client.message_callback_remove, topic) mqtt_client.subscribe(topic) ctrl = CtrlConn(sub=sub) ctrl.da_ready = True mqtt_client.publish(topic, '{"state": "ok", "msg_id": "magic"}') lock.acquire()
def test_CtrlConn_on_message_offline(mqtt_client, lock, topic, resource): def lock_wrapper(func): def wrapper(*args, **kwargs): ret = func(*args, **kwargs) lock.release() return ret return wrapper def sub(func): mqtt_client.on_message = lock_wrapper(func) return func sub.remove_callback = partial(mqtt_client.message_callback_remove, topic) rev = str(resource.revision) mqtt_client.subscribe(topic) ctrl = CtrlConn(sub=sub, rev=rev) ctrl.da_ready = True mqtt_client.publish(topic, '{"state": "offline", "rev": "%s"}' % rev) lock.acquire() assert ctrl.da_ready == False