Allow tools to use networkinterface configs in tests

pull/4795/head
Sarah Marsh 2017-07-19 17:10:34 -05:00
parent 8f9242fe40
commit 8c0bc781d9
4 changed files with 55 additions and 4 deletions

View File

@ -608,6 +608,9 @@
"detect_code": ["0240"],
"device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE", "STDIO_MESSAGES", "STORAGE", "TRNG", "FLASH"],
"features": ["LWIP", "STORAGE"],
"network_test_configurations" : {
"EthernetInterface" : "mbed-os/tools/test/network_test_configs/EthernetInterface.json"
},
"release_versions": ["2", "5"],
"device_name": "MK64FN1M0xxx12",
"bootloader_supported": true

View File

@ -27,7 +27,7 @@ ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
sys.path.insert(0, ROOT)
from tools.config import ConfigException
from tools.test_api import test_path_to_name, find_tests, print_tests, build_tests, test_spec_from_test_builds
from tools.test_api import test_path_to_name, find_tests, find_configs, print_tests, build_tests, test_spec_from_test_builds
from tools.options import get_default_options_parser, extract_profile, extract_mcus
from tools.build_api import build_project, build_library
from tools.build_api import print_build_memory_usage
@ -84,6 +84,9 @@ if __name__ == '__main__':
parser.add_argument("-n", "--names", dest="names", type=argparse_many(str),
default=None, help="Limit the tests to a comma separated list of names")
parser.add_argument("--net-config", dest="net_config", type=str,
default="EthernetInterface", help="Limit the tests to a networkinterface")
parser.add_argument("--test-spec", dest="test_spec",
default=None, help="Destination path for a test spec file that can be used by the Greentea automated test tool")
@ -133,10 +136,19 @@ if __name__ == '__main__':
"Currently set search path: %s"
% (toolchain, search_path))
net_configs = find_configs(mcu) # will be {} if target has no network configs
# If there is no app config and the target has network configs
# TODO: merge app_config and net_config if there is both
if net_configs and not options.app_config:
# use a specified network config
config = net_configs[options.net_config]
else:
config = options.app_config
# Find all tests in the relevant paths
for path in all_paths:
all_tests.update(find_tests(path, mcu, toolchain,
app_config=options.app_config))
app_config=config))
# Filter tests by name if specified
if options.names:
@ -192,7 +204,7 @@ if __name__ == '__main__':
properties=build_properties, name="mbed-build",
macros=options.macros, verbose=options.verbose,
notify=notify, archive=False,
app_config=options.app_config,
app_config=config,
build_profile=profile)
library_build_success = True
@ -220,7 +232,7 @@ if __name__ == '__main__':
notify=notify,
jobs=options.jobs,
continue_on_build_fail=options.continue_on_build_fail,
app_config=options.app_config,
app_config=config,
build_profile=profile,
stats_depth=options.stats_depth)

View File

@ -0,0 +1,27 @@
{
"config": {
"header-file": {
"help" : "String for including your driver header file",
"value" : "\"EthernetInterface.h\""
},
"object-construction" : {
"value" : "new EthernetInterface()"
},
"connect-statement" : {
"help" : "Must use 'net' variable name",
"value" : "((EthernetInterface *)net)->connect()"
},
"echo-server-addr" : {
"help" : "IP address of echo server",
"value" : "\"195.34.89.241\""
},
"echo-server-port" : {
"help" : "Port of echo server",
"value" : "7"
},
"tcp-echo-prefix" : {
"help" : "Some servers send a prefix before echoed message",
"value" : "\"u-blox AG TCP/UDP test service\\n\""
}
}
}

View File

@ -1999,6 +1999,13 @@ def test_path_to_name(path, base):
return "-".join(name_parts).lower()
def find_configs(target_name):
target = TARGET_MAP[target_name]
try:
return target.network_test_configurations
except AttributeError:
return {}
def find_tests(base_dir, target_name, toolchain_name, app_config=None):
""" Finds all tests in a directory recursively
base_dir: path to the directory to scan for tests (ex. 'path/to/project')
@ -2010,6 +2017,8 @@ def find_tests(base_dir, target_name, toolchain_name, app_config=None):
tests = {}
configs = find_configs(target_name)
# Prepare the toolchain
toolchain = prepare_toolchain([base_dir], None, target_name, toolchain_name,
silent=True, app_config=app_config)