def test_bind_device_to_gateway_and_unbind(test_topic, capsys): gateway_id = device_id_template.format('RS256') device_id = device_id_template.format('noauthbind') manager.create_registry(service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway(service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device(service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway(service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.unbind_device_from_gateway(service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Clean up manager.delete_device(service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device(service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry(service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'Device Bound' in out assert 'Device unbound' in out assert 'HttpError 404' not in out
def test_gateway_trigger_error_topic(test_topic, capsys): gateway_id = device_id_template.format('RS256-err') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Setup for listening for config messages num_messages = 4 # Hardcoded callback for causing an error def trigger_error(client): cloudiot_mqtt_example.attach_device(client, 'invalid_device_id', '') # Connect the gateway cloudiot_mqtt_example.listen_for_messages( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, 'mqtt.googleapis.com', 443, 20, 42, trigger_error) # Try to connect the gateway aagin on 8883 cloudiot_mqtt_example.listen_for_messages( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, 'mqtt.googleapis.com', 8883, 20, 15, trigger_error) # Clean up manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'GATEWAY_ATTACHMENT_ERROR' in out
def test_gateway_trigger_error_topic(test_topic, capsys): gateway_id = device_id_template.format('RS256-err') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Setup for listening for config messages num_messages = 4 # Hardcoded callback for causing an error def trigger_error(client): cloudiot_mqtt_example.attach_device(client, 'invalid_device_id', '') # Connect the gateway cloudiot_mqtt_example.listen_for_messages( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, 'mqtt.googleapis.com', 443, 20, 15, trigger_error) # Clean up manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'GATEWAY_ATTACHMENT_ERROR' in out
def test_gateway_send_data_for_device(test_topic, capsys): gateway_id = device_id_template.format('RS256') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Setup for listening for config messages num_messages = 5 jwt_exp_time = 60 listen_time = 20 # Connect the gateway cloudiot_mqtt_example.send_data_from_bound_device( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, mqtt_bridge_hostname, mqtt_bridge_port, jwt_exp_time, listen_time) # Clean up manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'Publishing message 5/5' in out assert 'Out of memory' not in out # Indicates could not connect
def test_gateway_send_data_for_device(test_topic, capsys): gateway_id = device_id_template.format('RS256') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Setup for listening for config messages num_messages = 5 jwt_exp_time = 60 listen_time = 20 # Connect the gateway cloudiot_mqtt_example.send_data_from_bound_device( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, mqtt_bridge_hostname, mqtt_bridge_port, jwt_exp_time, listen_time) # Clean up manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'Publishing message 5/5' in out assert 'Out of memory' not in out # Indicates could not connect
def test_gateway_listen_for_bound_device_configs(test_topic, capsys): gateway_id = device_id_template.format('RS256') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Setup for listening for config messages num_messages = 0 jwt_exp_time = 60 listen_time = 30 # Connect the gateway cloudiot_mqtt_example.listen_for_messages( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, mqtt_bridge_hostname, mqtt_bridge_port, jwt_exp_time, listen_time, None) # Clean up manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'Received message' in out
def test_gateway_listen_for_bound_device_configs(test_topic, capsys): gateway_id = device_id_template.format('RS256') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Setup for listening for config messages num_messages = 0 jwt_exp_time = 60 listen_time = 30 # Connect the gateway cloudiot_mqtt_example.listen_for_messages( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id, num_messages, rsa_private_path, 'RS256', ca_cert_path, mqtt_bridge_hostname, mqtt_bridge_port, jwt_exp_time, listen_time, None) # Clean up manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'Received message' in out
def test_bind_device_to_gateway_and_unbind(test_topic, capsys): gateway_id = device_id_template.format('RS256') device_id = device_id_template.format('noauthbind') manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) manager.unbind_device_from_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # Clean up manager.delete_device( service_account_json, project_id, cloud_region, registry_id, device_id) manager.delete_device( service_account_json, project_id, cloud_region, registry_id, gateway_id) manager.delete_registry( service_account_json, project_id, cloud_region, registry_id) out, _ = capsys.readouterr() assert 'Device Bound' in out assert 'Device unbound' in out assert 'HttpError 404' not in out
def create_device(): manager.create_device(service_account_json, project_id, cloud_region, test_registry_id, device_id)
manager.create_registry( service_account_json, project_id, cloud_region, pubsub_topic, registry_id) # [END iot_gateway_demo_create_registry] # [START iot_gateway_demo_create_gateway] print('Creating gateway: {}'.format(gateway_id)) manager.create_gateway( service_account_json, project_id, cloud_region, registry_id, None, gateway_id, rsa_cert_path, 'RS256') # [END iot_gateway_demo_create_gateway] # [START iot_gateway_demo_create_bound_device] print('Creating device to bind: {}'.format(device_id)) manager.create_device( service_account_json, project_id, cloud_region, registry_id, device_id) # [END iot_gateway_demo_create_bound_device] # [START iot_gateway_demo_bind_device] print('Binding device') manager.bind_device_to_gateway( service_account_json, project_id, cloud_region, registry_id, device_id, gateway_id) # [END iot_gateway_demo_bind_device] # [START iot_gateway_demo_listen] print('Listening for messages for {} seconds'.format(listen_time)) print('Try setting configuration in: ') print('\t{}'.format(edit_template.format(registry_id, project_id))) try: