mosquitto/test/broker/01-connect-auto-id.py

50 lines
2.7 KiB
Python
Executable file

#!/usr/bin/env python3
from mosq_test_helper import *
from broker_config import BrokerConfig, ListenerConfig
from mosquitto_broker import MosquittoBroker
def do_test(port1_prefix, port2_prefix, global_prefix, client_port, auto_id):
connect_packet = mqtt_packets.gen_connect("", proto_ver=5)
props = mqtt5_props.gen_string_prop(mqtt5_props.ASSIGNED_CLIENT_IDENTIFIER, f"{auto_id}xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
connack_packet = mqtt_packets.gen_connack(rc=0, proto_ver=5, properties=props)
# Remove the "xxxx" part - this means the front part of the packet
# is correct (so remaining length etc. is correct), but we don't
# need to match against the random id.
connack_packet = connack_packet[:-44]
broker_config = BrokerConfig(
listeners = [
ListenerConfig(
port=port2,
listener_auto_id_prefix=port2_prefix,
),
ListenerConfig(
port=port1,
listener_auto_id_prefix=port1_prefix,
),
],
allow_anonymous=True,
auto_id_prefix=global_prefix,
)
broker = MosquittoBroker(config=broker_config)
with broker:
sock = mosq_test.do_client_connect(connect_packet, connack_packet, port=client_port)
sock.close()
(port1, port2) = mosq_test.get_port(2)
do_test(port1_prefix=None, port2_prefix=None, global_prefix=None, client_port=port1, auto_id="auto-")
do_test(port1_prefix=None, port2_prefix=None, global_prefix=None, client_port=port2, auto_id="auto-")
do_test(port1_prefix=None, port2_prefix=None, global_prefix="new-", client_port=port1, auto_id="new-")
do_test(port1_prefix=None, port2_prefix=None, global_prefix="new-", client_port=port2, auto_id="new-")
do_test(port1_prefix=None, port2_prefix="port2-", global_prefix=None, client_port=port1, auto_id="auto-")
do_test(port1_prefix=None, port2_prefix="port2-", global_prefix=None, client_port=port2, auto_id="port2-")
do_test(port1_prefix="port1-", port2_prefix="port2-", global_prefix=None, client_port=port1, auto_id="port1-")
do_test(port1_prefix="port1-", port2_prefix="port2-", global_prefix=None, client_port=port2, auto_id="port2-")
do_test(port1_prefix="port1-", port2_prefix="port2-", global_prefix="global-", client_port=port1, auto_id="port1-")
do_test(port1_prefix="port1-", port2_prefix="port2-", global_prefix="global-", client_port=port2, auto_id="port2-")
do_test(port1_prefix="port1-", port2_prefix=None, global_prefix="global-", client_port=port1, auto_id="port1-")
do_test(port1_prefix="port1-", port2_prefix=None, global_prefix="global-", client_port=port2, auto_id="global-")