Host test copy functionality migration: added required parameters for host_test.py command line: path to image, copy method

pull/719/head
Przemek Wirkus 2014-10-27 15:46:15 +00:00
parent 01d4b853e9
commit ae4be96c86
3 changed files with 48 additions and 12 deletions

View File

@ -56,6 +56,16 @@ class Mbed:
help="The target disk path", help="The target disk path",
metavar="DISK_PATH") metavar="DISK_PATH")
parser.add_option("-f", "--image-path",
dest="image_path",
help="Path with target's image",
metavar="IMAGE_PATH")
parser.add_option("-c", "--copy",
dest="copy_method",
help="Copy method selector",
metavar="COPY_METHOD")
parser.add_option("-t", "--timeout", parser.add_option("-t", "--timeout",
dest="timeout", dest="timeout",
help="Timeout", help="Timeout",
@ -84,8 +94,12 @@ class Mbed:
if self.options.port is None: if self.options.port is None:
raise Exception("The serial port of the target mbed have to be provided as command line arguments") raise Exception("The serial port of the target mbed have to be provided as command line arguments")
# Options related to copy / reset mbed device
self.port = self.options.port self.port = self.options.port
self.disk = self.options.disk self.disk = self.options.disk
self.image_path = self.options.image_path
self.copy_method = self.options.copy_method
self.extra_port = self.options.extra self.extra_port = self.options.extra
self.extra_serial = None self.extra_serial = None
self.serial = None self.serial = None
@ -157,12 +171,6 @@ class Mbed:
result = None result = None
return result return result
def touch_file(self, path):
""" Touch file and set timestamp to items
"""
with open(path, 'a'):
os.utime(path, None)
def reset_timeout(self, timeout): def reset_timeout(self, timeout):
""" Timeout executed just after reset command is issued """ Timeout executed just after reset command is issued
""" """
@ -183,6 +191,22 @@ class Mbed:
reset_tout_s = self.options.forced_reset_timeout if self.options.forced_reset_timeout is not None else self.DEFAULT_RESET_TOUT reset_tout_s = self.options.forced_reset_timeout if self.options.forced_reset_timeout is not None else self.DEFAULT_RESET_TOUT
self.reset_timeout(reset_tout_s) self.reset_timeout(reset_tout_s)
def copy_image(self, image_path=None, disk=None, copy_method=None):
""" Copy file depending on method you want to use. Handles exception
and return code from shell copy commands.
"""
image_path = image_path if image_path is not None else self.image_path
disk = disk if disk is not None else self.disk
copy_method = copy_method if copy_method is not None else self.copy_method
if copy_method is not None:
# image_path - Where is binary with target's firmware
result = host_tests_plugins.call_plugin('CopyMethod', copy_method, image_path=image_path, destination_disk=disk)
else:
copy_method = 'default'
result = host_tests_plugins.call_plugin('CopyMethod', copy_method, image_path=image_path, destination_disk=disk)
return result;
def flush(self): def flush(self):
""" Flush serial ports """ Flush serial ports
""" """
@ -202,6 +226,7 @@ class TestResults:
self.RESULT_FAILURE = 'failure' self.RESULT_FAILURE = 'failure'
self.RESULT_ERROR = 'error' self.RESULT_ERROR = 'error'
self.RESULT_IO_SERIAL = 'ioerr_serial' self.RESULT_IO_SERIAL = 'ioerr_serial'
self.RESULT_NO_IMAGE = 'no_image'
class Test(TestResults): class Test(TestResults):

View File

@ -713,11 +713,13 @@ class SingleTestRunner(object):
host_test_verbose = self.opts_verbose_test_result_only or self.opts_verbose host_test_verbose = self.opts_verbose_test_result_only or self.opts_verbose
host_test_reset = self.opts_mut_reset_type if reset_type is None else reset_type host_test_reset = self.opts_mut_reset_type if reset_type is None else reset_type
single_test_result, single_test_output = self.run_host_test(test.host_test, disk, port, duration, single_test_result, single_test_output = self.run_host_test(test.host_test,
image_path, disk, port, duration,
micro=target_name, micro=target_name,
verbose=host_test_verbose, verbose=host_test_verbose,
reset=host_test_reset, reset=host_test_reset,
reset_tout=reset_tout) reset_tout=reset_tout,
copy_method=selected_copy_method)
# Store test result # Store test result
test_all_result.append(single_test_result) test_all_result.append(single_test_result)
@ -793,7 +795,9 @@ class SingleTestRunner(object):
result = test_all_result[0] result = test_all_result[0]
return result return result
def run_host_test(self, name, disk, port, duration, micro=None, reset=None, reset_tout=None, verbose=False, extra_serial=None): def run_host_test(self, name, image_path, disk, port, duration,
micro=None, reset=None, reset_tout=None,
verbose=False, extra_serial=None, copy_method=None):
""" Function creates new process with host test configured with particular test case. """ Function creates new process with host test configured with particular test case.
Function also is pooling for serial port activity from process to catch all data Function also is pooling for serial port activity from process to catch all data
printed by test runner and host test during test execution printed by test runner and host test during test execution
@ -827,9 +831,16 @@ class SingleTestRunner(object):
return result return result
# print "{%s} port:%s disk:%s" % (name, port, disk), # print "{%s} port:%s disk:%s" % (name, port, disk),
cmd = ["python", "%s.py" % name, '-p', port, '-d', disk, '-t', str(duration)] cmd = ["python",
'%s.py'% name,
'-d', disk,
'-f', '"%s"'% image_path,
'-p', port,
'-t', str(duration)]
# Add extra parameters to host_test # Add extra parameters to host_test
if copy_method is not None:
cmd += ["-c", copy_method]
if micro is not None: if micro is not None:
cmd += ["-m", micro] cmd += ["-m", micro]
if extra_serial is not None: if extra_serial is not None: