mirror of
https://github.com/saymrwulf/uhd.git
synced 2026-05-16 21:10:10 +00:00
PATH was only set for the examples, but not for the initial
call to uhd_find_devices.
This reverts commit b7c296f583, which
tried to fix this but did so badly, and also amends it with the correct
fix.
134 lines
5.3 KiB
Python
Executable file
134 lines
5.3 KiB
Python
Executable file
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2015-2016 Ettus Research LLC
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
"""
|
|
Device test runner.
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import argparse
|
|
import logging
|
|
from usrp_probe import get_usrp_list
|
|
|
|
def setup_parser():
|
|
""" Set up argparser """
|
|
parser = argparse.ArgumentParser(description="Test utility for UHD/USRP.")
|
|
parser.add_argument('--devtest-pattern', '-p', default='*', help='e.g. b2xx')
|
|
parser.add_argument('--device-filter', '-f', default=None, required=True, help='b200, x300, ...')
|
|
parser.add_argument('--log-dir', '-l', default='.')
|
|
parser.add_argument('--src-dir', default='.', help='Directory where the test sources are stored')
|
|
parser.add_argument('--build-dir', default=None, help='Build dir (where examples/ and utils/ are)')
|
|
parser.add_argument('--build-type', default='Release')
|
|
return parser
|
|
|
|
def setup_env(args):
|
|
" Add build dir into lib + exe paths, depending on OS "
|
|
def setup_env_win(env, build_dir, build_type):
|
|
" Add build dir into paths (Windows)"
|
|
env['PATH'] = "{build_dir}/lib/{build_type};" + \
|
|
"{build_dir}/examples/{build_type};" + \
|
|
"{build_dir}/utils/{build_type};{path}".format(
|
|
build_dir=build_dir, build_type=build_type, path=env.get('PATH', '')
|
|
)
|
|
env['LIBPATH'] = "{build_dir}/lib/{build_type};{path}".format(
|
|
build_dir=build_dir, build_type=build_type, path=env.get('LIBPATH', '')
|
|
)
|
|
env['LIB'] = "{build_dir}/lib/{build_type};{path}".format(
|
|
build_dir=build_dir, build_type=build_type, path=env.get('LIB', '')
|
|
)
|
|
return env
|
|
def setup_env_unix(env, build_dir):
|
|
" Add build dir into paths (Unices)"
|
|
env['PATH'] = "{build_dir}/examples:{build_dir}/utils:{path}".format(
|
|
build_dir=build_dir, path=env.get('PATH', '')
|
|
)
|
|
env['LD_LIBRARY_PATH'] = "{build_dir}/lib:{path}".format(
|
|
build_dir=build_dir, path=env.get('LD_LIBRARY_PATH', '')
|
|
)
|
|
return env
|
|
def setup_env_osx(env, build_dir):
|
|
" Add build dir into paths (OS X)"
|
|
env['PATH'] = "{build_dir}/examples:{build_dir}/utils:{path}".format(
|
|
build_dir=build_dir, path=env.get('PATH', '')
|
|
)
|
|
env['DYLD_LIBRARY_PATH'] = "{build_dir}/lib:{path}".format(
|
|
build_dir=build_dir, path=env.get('DYLD_LIBRARY_PATH', '')
|
|
)
|
|
return env
|
|
### Go
|
|
env = os.environ
|
|
if sys.platform.startswith('linux'):
|
|
env = setup_env_unix(env, args.build_dir)
|
|
elif sys.platform.startswith('win'):
|
|
env = setup_env_win(env, args.build_dir, args.build_type)
|
|
elif sys.platform.startswith('darwin'):
|
|
env = setup_env_osx(env, args.build_dir)
|
|
else:
|
|
print("Devtest not supported on this platform ({0}).".format(sys.platform))
|
|
exit(1)
|
|
return env
|
|
|
|
def main():
|
|
" Go, go, go! "
|
|
args = setup_parser().parse_args()
|
|
env = setup_env(args)
|
|
devtest_pattern = "devtest_{p}.py".format(p=args.devtest_pattern)
|
|
uhd_args_list = get_usrp_list("type=" + args.device_filter, env)
|
|
if len(uhd_args_list) == 0:
|
|
print("No devices found. Exiting.")
|
|
exit(1)
|
|
tests_passed = True
|
|
for uhd_idx, uhd_info in enumerate(uhd_args_list):
|
|
print('--- Running all tests for device {dev} ({prod}, Serial: {ser}).'.format(
|
|
dev=uhd_idx,
|
|
prod=uhd_info.get('product', 'USRP'),
|
|
ser=uhd_info.get('serial')
|
|
))
|
|
print('--- This will take some time. Better grab a cup of tea.')
|
|
args_str = uhd_info['args']
|
|
env['_UHD_TEST_ARGS_STR'] = args_str
|
|
logfile_name = "log{}.log".format(
|
|
args_str.replace('type=', '_').replace('serial=', '_').replace(',', '')
|
|
)
|
|
resultsfile_name = "results{}.log".format(
|
|
args_str.replace('type=', '_').replace('serial=', '_').replace(',', '')
|
|
)
|
|
env['_UHD_TEST_LOGFILE'] = os.path.join(args.log_dir, logfile_name)
|
|
env['_UHD_TEST_RESULTSFILE'] = os.path.join(args.log_dir, resultsfile_name)
|
|
env['_UHD_TEST_LOG_LEVEL'] = str(logging.INFO)
|
|
env['_UHD_TEST_PRINT_LEVEL'] = str(logging.WARNING)
|
|
proc = subprocess.Popen(
|
|
[
|
|
"python", "-m", "unittest", "discover", "-v",
|
|
"-s", args.src_dir,
|
|
"-p", devtest_pattern,
|
|
],
|
|
env=env,
|
|
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
|
)
|
|
print(proc.communicate()[0])
|
|
if proc.returncode != 0:
|
|
tests_passed = False
|
|
print('--- Done testing all attached devices.')
|
|
return tests_passed
|
|
|
|
if __name__ == "__main__":
|
|
exit(not main())
|
|
|