def main()

in test.py [0:0]


def main():
    session = boto3.Session(profile_name = 'default')
    client = session.client('iot')

    test_MQTTClient = None    
    
    event_loop_group = io.EventLoopGroup(1)
    host_resolver = io.DefaultHostResolver(event_loop_group)
    client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)

    ENDPOINT = "a3m15yqfy6j3pe-ats.iot.us-west-2.amazonaws.com"
    CLIENT_ID = "LSH14J4C4KA097058"
    PATH_TO_CERT = "certs/LSH14J4C4KA097083/production-certificate.pem.crt"
    PATH_TO_KEY = "certs/LSH14J4C4KA097083/csr-bootstrap.key"
    PATH_TO_ROOT = "certs/root.ca.pem"
    MESSAGE = "Hello World"
    TOPIC = "test"
    RANGE = 20

    test_MQTTClient = mqtt_connection_builder.mtls_from_path(
        endpoint=ENDPOINT,
        cert_filepath=PATH_TO_CERT,
        pri_key_filepath=PATH_TO_KEY,
        client_bootstrap=client_bootstrap,
        ca_filepath=PATH_TO_ROOT,
        client_id=CLIENT_ID,
        clean_session=False,
        on_connection_interrupted=on_connection_interrupted,
        on_connection_resumed=on_connection_resumed,
        keep_alive_secs=6)
    
            
    print("Connecting with Prod certs to {} with client ID '{}'...".format(ENDPOINT,CLIENT_ID))
    connect_future = test_MQTTClient.connect()
    # Future.result() waits until a result is available
    connect_future.result()

    print("Connected with Prod certs!")
    #time.sleep(10)
    new_cert_topic = "dt/cvra/{deviceid}/cardata".format(deviceid=CLIENT_ID)
    #new_cert_topic = TOPIC
    print("Subscribing to topic '{}'...".format(new_cert_topic))
    mqtt_topic_subscribe_future, _ = test_MQTTClient.subscribe(
        topic=new_cert_topic,
        qos=mqtt.QoS.AT_LEAST_ONCE,
        callback=on_message_received)

    # Wait for subscription to succeed
    mqtt_topic_subscribe_result = mqtt_topic_subscribe_future.result()
    print("Subscribed with {}".format(str(mqtt_topic_subscribe_result['qos'])))

    publish_count = 1
    while (publish_count <= 10):
        message = "{} [{}]".format("test", publish_count)
        print("Publishing message to topic '{}': {}".format(new_cert_topic, message))
        test_MQTTClient.publish(
            topic=new_cert_topic,
            payload=message,
            qos=mqtt.QoS.AT_LEAST_ONCE)
        time.sleep(1)
        publish_count += 1

    # Wait for all messages to be received.
    # This waits forever if count was set to 0.
    if not received_all_event.is_set():
        print("Waiting for all messages to be received...")

    received_all_event.wait()
    print("{} message(s) received.".format(received_count))

    # Disconnect
    print("Disconnecting...")
    disconnect_future = test_MQTTClient.disconnect()
    disconnect_future.result()
    print("Disconnected!")