test-runner/limitations.py (53 lines of code) (raw):

# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. See LICENSE file in the project root for # full license information. import pytest from horton_settings import settings all_languages = set(["pythonv2", "c", "csharp", "java", "node"]) all_transports = set(["amqp", "amqpws", "mqtt", "mqttws"]) def get_maximum_telemetry_message_size(client): """ Returns the maximum message size (in bytes) the client can support """ if client.settings.language == "java" and client.settings.transport == "amqpws": # java amqpws limitation. Actual number is unknown. This just blocks 63K+ tests. # The real limit is probably near an even number like 32K return 62 * 1024 elif client.settings.language == "node": # node swagger wrapper limitation return 64 * 1024 else: return 255 * 1024 def can_always_overlap_telemetry_messages(client): """ Returns True if the client can reliably overlay telemetry messages """ if client.settings.language == "node": # node will fail test_send_5_telemetry_events_to_iothub 1/10 times return False else: return True def _verify_and_make_set(var, allowed_values): """ Turn a string or a list into a set so we can use set operations """ if isinstance(var, str): var = set([var]) elif isinstance(var, list): var = set(var) elif isinstance(var, set): pass else: raise ValueError("invalid type") if (var & allowed_values) != var: raise ValueError("invalid value") return var def uses_shared_key_auth(client): """ return True if the client supports shared key auth """ return client.settings.connection_type.startswith("connection_string") def only_run_test_for(client, languages): """ only run the test for the given language(s) """ languages = _verify_and_make_set(languages, all_languages) if client.settings.language not in languages: pytest.skip() def skip_test_for(client, languages, transports=all_transports): """ skip the test for the given language(s) """ languages = _verify_and_make_set(languages, all_languages) transports = _verify_and_make_set(transports, all_transports) if ( client.settings.language in languages and client.settings.transport in transports ): pytest.skip() def skip_if_no_system_control(): """ Skip the test if we don't have a system_control API """ if not settings.system_control.adapter: pytest.skip() def only_run_test_on_iotedge_module(client): if client.settings.object_type != "iotedge_module": pytest.skip() def only_run_test_on_iothub_device(client): if client.settings.object_type != "iothub_device": pytest.skip() def needs_manual_connect(client): return client.settings.language == "pythonv2"