From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Wed, 18 May 2016 16:55:21 +0200 Subject: [U-Boot] [PATCH] test/py: Support setting up specific timeout In-Reply-To: <573C75F5.6040708@monstr.eu> References: <88a2374b2079a197528f54200db8543ecd3755dc.1463577081.git.michal.simek@xilinx.com> <573C75F5.6040708@monstr.eu> Message-ID: <573C8259.50705@xilinx.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 18.5.2016 16:02, Michal Simek wrote: > On 18.5.2016 15:11, Michal Simek wrote: >> Large file transfers, flash erasing and more complicated tests >> requires more time to finish. Provide a way to setup specific >> timeout directly in test. >> >> For example description for 50s test: >> timeout = 50000 >> with u_boot_console.temporary_timeout(timeout): >> u_boot_console.run_command(...) >> >> Signed-off-by: Michal Simek >> --- >> >> test/py/u_boot_console_base.py | 33 +++++++++++++++++++++++++++++++++ >> 1 file changed, 33 insertions(+) >> >> diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py >> index f7434363fbcb..82bbba43463e 100644 >> --- a/test/py/u_boot_console_base.py >> +++ b/test/py/u_boot_console_base.py >> @@ -56,6 +56,24 @@ class ConsoleDisableCheck(object): >> self.console.disable_check_count[self.check_type] -= 1 >> self.console.eval_bad_patterns() >> >> + >> +class ConsoleSetupTimeout(object): >> + """Context manager (for Python's with statement) that temporarily setup >> + timeout for specific comnand. This is useful when execution time is greater >> + then default 30s.""" >> + >> + def __init__(self, console, timeout): >> + self.console = console >> + self.console.orig_timeout = self.console.p.timeout >> + self.console.p.timeout = timeout >> + >> + def __enter__(self): >> + return self >> + >> + def __exit__(self, extype, value, traceback): >> + self.console.p = self.console.get_spawn() > > This line should be there. It is resetting console. I will do more > testing on real hw not on qemu. > > Thanks, > Michal > >> + self.console.p.timeout = self.console.orig_timeout This is also wrong because self.console.p is closed when timeout occurs which caused exception which calls cleanup_spawn which close p. This exit should be like this. def __exit__(self, extype, value, traceback): if not self.console.p: return self.console.p.timeout = self.orig_timeout Thanks, Michal