Message ID | 1453831183-22998-2-git-send-email-swarren@wwwdotorg.org |
---|---|
State | Accepted |
Commit | be1df82656b15663dee9216a320dc177c7d9c6c4 |
Delegated to: | Simon Glass |
Headers | show |
On 26 January 2016 at 10:59, Stephen Warren <swarren@wwwdotorg.org> wrote: > From: Stephen Warren <swarren@nvidia.com> > > The DFU test requests U-Boot configure its USB controller in device mode, > then waits for the host machine to enumerate the USB device and create a > device node for it. However, this wait can be fooled if the USB device > node already exists before the test starts, e.g. if some previous software > stack already configured the USB controller into device mode and never > de-configured it. This "previous software stack" could even be another > test/py test, if U-Boot's own USB teardown does not operate correctly. If > this happens, dfu-util may be run before U-Boot is ready to serve DFU > commands, which may cause false test failures. > > Enhance the dfu test to fail if the device node exists before it is > expected to. > > Signed-off-by: Stephen Warren <swarren@nvidia.com> > --- > This patch depends on the previous patch "ARM: tegra: shut down USB > device controller at boot", so needs to be applied in the same branch. > Otherwise, test failures will occur. > --- > test/py/tests/test_dfu.py | 6 ++++++ > 1 file changed, 6 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org>
On 26 January 2016 at 12:59, Simon Glass <sjg@chromium.org> wrote: > On 26 January 2016 at 10:59, Stephen Warren <swarren@wwwdotorg.org> wrote: >> From: Stephen Warren <swarren@nvidia.com> >> >> The DFU test requests U-Boot configure its USB controller in device mode, >> then waits for the host machine to enumerate the USB device and create a >> device node for it. However, this wait can be fooled if the USB device >> node already exists before the test starts, e.g. if some previous software >> stack already configured the USB controller into device mode and never >> de-configured it. This "previous software stack" could even be another >> test/py test, if U-Boot's own USB teardown does not operate correctly. If >> this happens, dfu-util may be run before U-Boot is ready to serve DFU >> commands, which may cause false test failures. >> >> Enhance the dfu test to fail if the device node exists before it is >> expected to. >> >> Signed-off-by: Stephen Warren <swarren@nvidia.com> >> --- >> This patch depends on the previous patch "ARM: tegra: shut down USB >> device controller at boot", so needs to be applied in the same branch. >> Otherwise, test failures will occur. >> --- >> test/py/tests/test_dfu.py | 6 ++++++ >> 1 file changed, 6 insertions(+) > > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot-dm, thanks!
diff --git a/test/py/tests/test_dfu.py b/test/py/tests/test_dfu.py index cc4b8d8e04e6..6c1a363b02df 100644 --- a/test/py/tests/test_dfu.py +++ b/test/py/tests/test_dfu.py @@ -100,6 +100,12 @@ def test_dfu(u_boot_console, env__usb_dev_port, env__dfu_config): Nothing. ''' + fh = u_boot_utils.attempt_to_open_file( + env__usb_dev_port['host_usb_dev_node']) + if fh: + fh.close() + raise Exception('USB device present before dfu command invoked') + u_boot_console.log.action( 'Starting long-running U-Boot dfu shell command')