blob: 2c3c6ff2ef1c2f5afa1167053e4621d3fb2944cd [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright 2017 - The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import enum
"""This module has the global key values that are used across framework
modules.
"""
class Config(enum.Enum):
"""Enum values for test config related lookups.
"""
# Keys used to look up values from test config files.
# These keys define the wording of test configs and their internal
# references.
key_log_path = 'logpath'
key_testbeds_under_test = 'testbeds_under_test'
key_testbed = 'testbed'
key_testbed_name = 'name'
# configpath is the directory. key_config_full_path is the file path.
key_config_path = 'configpath'
key_config_full_path = 'config_full_path'
key_test_paths = 'testpaths'
key_port = 'Port'
key_address = 'Address'
key_random = 'random'
key_test_case_iterations = 'test_case_iterations'
key_test_failure_tracebacks = 'test_failure_tracebacks'
# Config names for controllers packaged in ACTS.
key_android_device = 'AndroidDevice'
key_bluetooth_pts_device = 'BluetoothPtsDevice'
key_fuchsia_device = 'FuchsiaDevice'
key_chameleon_device = 'ChameleonDevice'
key_native_android_device = 'NativeAndroidDevice'
key_relay_device = 'RelayDevice'
key_access_point = 'AccessPoint'
key_attenuator = 'Attenuator'
key_iperf_server = 'IPerfServer'
key_iperf_client = 'IPerfClient'
key_packet_sender = 'PacketSender'
key_monsoon = 'Monsoon'
key_sniffer = 'Sniffer'
key_arduino_wifi_dongle = 'ArduinoWifiDongle'
key_packet_capture = 'PacketCapture'
# Internal keys, used internally, not exposed to user's config files.
ikey_user_param = 'user_params'
ikey_testbed_name = 'testbed_name'
ikey_logger = 'log'
ikey_logpath = 'log_path'
ikey_summary_writer = 'summary_writer'
ikey_cli_args = 'cli_args'
# module name of controllers packaged in ACTS.
m_key_monsoon = 'monsoon'
m_key_android_device = 'android_device'
m_key_fuchsia_device = 'fuchsia_device'
m_key_bluetooth_pts_device = 'bluetooth_pts_device'
m_key_chameleon_device = 'chameleon_controller'
m_key_native_android_device = 'native_android_device'
m_key_relay_device = 'relay_device_controller'
m_key_access_point = 'access_point'
m_key_attenuator = 'attenuator'
m_key_iperf_server = 'iperf_server'
m_key_iperf_client = 'iperf_client'
m_key_packet_sender = 'packet_sender'
m_key_sniffer = 'sniffer'
m_key_arduino_wifi_dongle = 'arduino_wifi_dongle'
m_key_packet_capture = 'packet_capture'
# A list of keys whose values in configs should not be passed to test
# classes without unpacking first.
reserved_keys = (key_testbed, key_log_path, key_test_paths)
# Controller names packaged with ACTS.
builtin_controller_names = [
key_android_device,
key_bluetooth_pts_device,
key_fuchsia_device,
key_native_android_device,
key_relay_device,
key_access_point,
key_attenuator,
key_iperf_server,
key_iperf_client,
key_packet_sender,
key_monsoon,
key_sniffer,
key_chameleon_device,
key_arduino_wifi_dongle,
key_packet_capture,
]
# Keys that are file or folder paths.
file_path_keys = [key_relay_device]
def get_name_by_value(value):
for name, member in Config.__members__.items():
if member.value == value:
return name
return None
def get_module_name(name_in_config):
"""Translates the name of a controller in config file to its module name.
"""
return value_to_value(name_in_config, 'm_%s')
def value_to_value(ref_value, pattern):
"""Translates the value of a key to the value of its corresponding key. The
corresponding key is chosen based on the variable name pattern.
"""
ref_key_name = get_name_by_value(ref_value)
if not ref_key_name:
return None
target_key_name = pattern % ref_key_name
try:
return getattr(Config, target_key_name).value
except AttributeError:
return None