Question on running uboot_testpy with tbot

Simon Glass sjg at chromium.org
Sat Oct 30 21:47:13 CEST 2021


Hi again,

The relevant part of test-log.html is

 Section: flash
[-] Section: test_fpga_help

TIME: NOW: 2021/10/30 13:41:52.662614

TIME: SINCE-PREV: 0:00:00.142842

TIME: SINCE-START: 0:00:00.148402

SKIPPED:
('/home/sglass/tbot-workdir/uboot-rpi3/test/py/conftest.py', 486, 'Skipped:
.config feature "cmd_fpga" not enabled')

TIME: SINCE-SECTION: 0:00:00.000684

[-] Section: test_help

TIME: NOW: 2021/10/30 13:41:52.663392

TIME: SINCE-PREV: 0:00:00.000778

TIME: SINCE-START: 0:00:00.149180

[-] Section: test_help/Starting U-Boot

TIME: NOW: 2021/10/30 13:41:52.663511

TIME: SINCE-PREV: 0:00:00.000119

TIME: SINCE-START: 0:00:00.149299

Resetting board

[-] Stream: u-boot-test-reset

+u-boot-test-reset unknown na

TIME: NOW: 2021/10/30 13:41:52.666658

TIME: SINCE-PREV: 0:00:00.003147

TIME: SINCE-START: 0:00:00.152446

TIME: NOW: 2021/10/30 13:42:22.797678

TIME: SINCE-PREV: 0:00:30.131020

TIME: SINCE-START: 0:00:30.283466

TIME: SINCE-SECTION: 0:00:30.134391

FAILED:
request = <SubRequest 'u_boot_console' for <Function test_help>>

    @pytest.fixture(scope='function')
    def u_boot_console(request):
        """Generate the value of a test's u_boot_console fixture.

        Args:
            request: The pytest request.

        Returns:
            The fixture value.
        """

>       console.ensure_spawned()

test/py/conftest.py:364:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _
test/py/u_boot_console_base.py:372: in ensure_spawned
    m = self.p.expect([pattern_u_boot_main_signon] + self.bad_patterns)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _

self = <u_boot_spawn.Spawn object at 0x7f5a4979e208>
patterns = [re.compile('(U-Boot \\d{4}\\.\\d{2}[^\r\n]*\\))'),
re.compile('(U-Boot SPL \\d{4}\\.\\d{2}[^\r\n]*\\))'),
re.compile(...d{2}[^\r\n]*\\))'), re.compile('Hit any key to stop autoboot:
'), re.compile("Unknown command '.*' - try 'help'"), ...]

    def expect(self, patterns):
        """Wait for the sub-process to emit specific data.

        This function waits for the process to emit one pattern from the
        supplied list of patterns, or for a timeout to occur.

        Args:
            patterns: A list of strings or regex objects that we expect to
                see in the sub-process' stdout.

        Returns:
            The index within the patterns array of the pattern the process
            emitted.

        Notable exceptions:
            Timeout, if the process did not emit any of the patterns within
            the expected time.
        """

        for pi in range(len(patterns)):
            if type(patterns[pi]) == type(''):
                patterns[pi] = re.compile(patterns[pi])

        tstart_s = time.time()
        try:
            while True:
                earliest_m = None
                earliest_pi = None
                for pi in range(len(patterns)):
                    pattern = patterns[pi]
                    m = pattern.search(self.buf)
                    if not m:
                        continue
                    if earliest_m and m.start() >= earliest_m.start():
                        continue
                    earliest_m = m
                    earliest_pi = pi
                if earliest_m:
                    pos = earliest_m.start()
                    posafter = earliest_m.end()
                    self.before = self.buf[:pos]
                    self.after = self.buf[pos:posafter]
                    self.output += self.buf[:posafter]
                    self.buf = self.buf[posafter:]
                    return earliest_pi
                tnow_s = time.time()
                if self.timeout:
                    tdelta_ms = (tnow_s - tstart_s) * 1000
                    poll_maxwait = self.timeout - tdelta_ms
                    if tdelta_ms > self.timeout:
                        raise Timeout()
                else:
                    poll_maxwait = None
                events = self.poll.poll(poll_maxwait)
                if not events:
>                   raise Timeout()
E                   u_boot_spawn.Timeout

test/py/u_boot_spawn.py:170: Timeout

TIME: SINCE-SECTION: 0:00:30.159899

[-] Section: Status Report

TIME: NOW: 2021/10/30 13:42:22.825745

TIME: SINCE-PREV: 0:00:00.028067

TIME: SINCE-START: 0:00:30.311533

0 passed

1 skipped

... test_fpga_help

1 failed

... test_help

322 not run


Regards,
Simon


On Sat, 30 Oct 2021 at 13:34, Simon Glass <sjg at chromium.org> wrote:

> Hi,
>
> I am trying to run the pytests on my unit. The documentation doesn't
> really explain how it works.
>
> This is what I am trying:
>
> $ tbot -vv -l kea.py -b rpi3.py -T tbot/contrib  -p 'testpy_args=["-k",
> "help", "-vv"]' uboot_testpy
> tbot starting ...
> ├─Parameters:
> │     testpy_args = ['-k', 'help', '-vv']
> ├─Calling uboot_testpy ...
> │   ├─Logging in on sglass at kea:22 ...
> │   ├─[sglass] bash --norc --noprofile
> │   ├─Calling uboot_setup_testhooks ...
> │   │   ├─[sglass] echo " ${HOME}"
> │   │   │    ##  /home/sglass
> │   │   ├─[sglass] mkdir -p /home/sglass/tbot-workdir
> │   │   ├─[sglass] test -d /home/sglass/tbot-workdir/uboot-testpy-tbot
> │   │   ├─Creating FIFOs ...
> │   │   ├─[sglass] rm -rf
> /home/sglass/tbot-workdir/uboot-testpy-tbot/fifo_console_send
> │   │   ├─[sglass] mkfifo
> /home/sglass/tbot-workdir/uboot-testpy-tbot/fifo_console_send
> │   │   ├─[sglass] rm -rf
> /home/sglass/tbot-workdir/uboot-testpy-tbot/fifo_console_recv
> │   │   ├─[sglass] mkfifo
> /home/sglass/tbot-workdir/uboot-testpy-tbot/fifo_console_recv
> │   │   ├─[sglass] rm -rf
> /home/sglass/tbot-workdir/uboot-testpy-tbot/fifo_commands
> │   │   ├─[sglass] mkfifo
> /home/sglass/tbot-workdir/uboot-testpy-tbot/fifo_commands
> │   │   ├─[sglass] cat
> /home/sglass/tbot-workdir/uboot-testpy-tbot/tbot-scripts.sha256
> │   │   │    ##
> 2d30892b61eb713ce9413e06c4f2a0cd00d2a74b6b8c2ac6624e1e49909b1897
> │   │   ├─Hooks are up to date, skipping deployment ...
> │   │   ├─Adding hooks to $PATH ...
> │   │   ├─[sglass] echo " ${PATH}"
> │   │   │    ##
>  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/cosarm/depot_tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/cosarm/depot_tools:/home/sglass/.local/bin:/vid/software/devel/ubtest/u-boot-test-hooks/bin:/vid/software/devel/ubtest/standalone-hdctools
> │   │   ├─[sglass] export
> PATH=/home/sglass/tbot-workdir/uboot-testpy-tbot:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/cosarm/depot_tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/cosarm/depot_tools:/home/sglass/.local/bin:/vid/software/devel/ubtest/u-boot-test-hooks/bin:/vid/software/devel/ubtest/standalone-hdctools
> │   │   ├─Open console & command channels ...
> │   │   ├─[sglass] /home/sglass/tbot-workdir/uboot-testpy-tbot/tbot-console
> │   │   ├─[sglass]
> /home/sglass/tbot-workdir/uboot-testpy-tbot/tbot-commands
> │   │   └─Done. (0.028s)
> │   ├─Calling uboot_checkout ...
> │   │   ├─Builder: rpi3
> │   │   ├─[sglass] test -d /home/sglass/tbot-workdir/uboot-rpi3/.git
> │   │   ├─[sglass] git -C /home/sglass/tbot-workdir/uboot-rpi3 fetch
> │   │   └─Done. (0.121s)
> │   ├─[sglass] test -e /home/sglass/tbot-workdir/uboot-rpi3/.config
> │   ├─[sglass] test -e /home/sglass/tbot-workdir/uboot-rpi3/include/
> autoconf.mk
> │   ├─[sglass] picocom -q -b 115200 /dev/ttyusb_port1
> │   ├─POWERON (rpi3)
> │   ├─[sglass] sd-mux-ctrl --device-serial sdwire-18 --dut
> │   ├─[sglass] ykushcmd -s YK17698 -g 1
> │   │    ##
> │   │    ##
> │   │    ## Downstream port 1 is OFF
> │   │    ##
> │   ├─[sglass] ykushcmd -s YK17698 -u 1
> │   ├─UBOOT (rpi3-u-boot)
> │   │    <>
> │   │    <>
> │   │    <> U-Boot 2020.10-rc2-00140-g392aa09f310 (Oct 30 2021 - 12:38:07
> -0600)
> │   │    <>
> │   │    <> DRAM:  992 MiB
> │   │    <> RPI 3 Model B (0xa22082)
> │   │    <> MMC:   mmc at 7e202000: 0, sdhci at 7e300000: 1
> │   │    <> Loading Environment from FAT... *** Warning - bad CRC, using
> default environment
> │   │    <>
> │   │    <> In:    serial
> │   │    <> Out:   vidconsole
> │   │    <> Err:   vidconsole
> │   │    <> Net:   No ethernet found.
> │   │    <> Hit any key to stop autoboot:  0
> │   │    <> U-Boot>
> │   ├─[sglass] cd /home/sglass/tbot-workdir/uboot-rpi3
> │   ├─[sglass] ./test/py/test.py --build-dir . --board-type unknown -k
> help -vv
> │   │    ## +u-boot-test-flash unknown na
> │   │    ## ============================= test session starts
> ==============================
> │   │    ## platform linux -- Python 3.6.9, pytest-5.2.1, py-1.8.0,
> pluggy-0.13.0 -- /usr/bin/python3
> │   │    ## cachedir: .pytest_cache
> │   │    ## rootdir: /home/sglass/tbot-workdir/uboot-rpi3/test/py,
> inifile: pytest.ini
> │   │    ## collected 324 items / 322 deselected / 2 selected
>
> │   │    ##
> │   │    ## test/py/tests/test_fpga.py::test_fpga_help SKIPPED
>           [ 50%]│   ├─[sglass] ykushcmd -s YK17698 -d 1
> │   ├─[sglass] sd-mux-ctrl --device-serial sdwire-18 --ts
> │   ├─Exiting poweroff
> │   ├─[sglass] sd-mux-ctrl --device-serial sdwire-18 --dut
> │   ├─[sglass] ykushcmd -s YK17698 -g 1
> │   │    ##
> │   │    ##
> │   │    ## Downstream port 1 is OFF
> │   │    ##
> │   ├─[sglass] ykushcmd -s YK17698 -u 1
>
> │   ├─POWEROFF (rpi3)
> │   ├─[sglass] ykushcmd -s YK17698 -d 1
> │   ├─[sglass] sd-mux-ctrl --device-serial sdwire-18 --ts
> │   ├─Exiting poweroff
> │   └─Fail. (38.376s)
> ├─Exception:
> │   Traceback (most recent call last):
> │     File
> "/home/sglass/.local/lib/python3.8/site-packages/tbot-0.9.2-py3.8.egg/tbot/main.py",
> line 345, in main
> │       func(**params)
> │     File
> "/home/sglass/.local/lib/python3.8/site-packages/tbot-0.9.2-py3.8.egg/tbot/decorators.py",
> line 92, in wrapped
> │       return tc(*args, **kwargs)
> │     File
> "/home/sglass/.local/lib/python3.8/site-packages/tbot-0.9.2-py3.8.egg/tbot/decorators.py",
> line 157, in wrapped
> │       return tc(lh, *args, **kwargs)
> │     File
> "/home/sglass/.local/lib/python3.8/site-packages/tbot-0.9.2-py3.8.egg/tbot/tc/uboot/testpy.py",
> line 321, in testpy
> │       os.write(chan_console.fileno(), data)
> │   OSError: [Errno 9] Bad file descriptor
> ├─────────────────────────────────────────
> └─FAILURE (38.488s)
>
>
> I don't see the output appearing and I'm not sure how pytest is sending
> the commands to the board?
>
> Regards,
> Simon
>
>


More information about the tbot mailing list