test-runner/adapters/rest/rest_control_api.py (47 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.
from .generated.e2erestapi import AzureIOTEndToEndTestWrapperRestApi as GeneratedSyncApi
from .generated.e2erestapi.aio import (
AzureIOTEndToEndTestWrapperRestApi as GeneratedAsyncApi,
)
import msrest
from .. import adapter_config
from ..abstract_control_api import AbstractControlApi
from .rest_decorators import log_entry_and_exit
class ControlApi(AbstractControlApi):
def __init__(self, hostname):
self.sync_rest_endpoint = GeneratedSyncApi(hostname).control
self.sync_rest_endpoint.config.retry_policy.retries = 0
self.rest_endpoint = GeneratedAsyncApi(hostname).control
self.rest_endpoint.config.retry_policy.retries = 0
def log_message_sync(self, message):
try:
self.sync_rest_endpoint.log_message_method(
{"message": "PYTEST: " + message},
timeout=adapter_config.print_message_timeout,
)
except msrest.exceptions.ClientRequestError:
print("PYTEST: error logging to " + str(self.sync_rest_endpoint))
# swallow this exception. logs are allowed to fail (especially if we're testing disconnection scenarios)
@log_entry_and_exit
def get_capabilities_sync(self):
return self.sync_rest_endpoint.get_capabilities(
timeout=adapter_config.default_api_timeout
)
@log_entry_and_exit
def set_flags_sync(self, flags):
return self.sync_rest_endpoint.set_flags(
flags, timeout=adapter_config.default_api_timeout
)
@log_entry_and_exit
def send_command_sync(self, cmd):
return self.sync_rest_endpoint.send_command(
cmd, timeout=adapter_config.default_api_timeout
)
@log_entry_and_exit
async def cleanup(self, cmd):
await self.rest_endpoint.cleanup(
cmd, timeout=adapter_config.default_api_timeout
)
@log_entry_and_exit
async def get_wrapper_stats(self):
return await self.rest_endpoint.get_wrapper_stats(
timeout=adapter_config.default_api_timeout
)