Hi, Just pinging this thread in case someone can explain how to use this feature.
Regards, Simon On Sat, 30 Oct 2021 at 13:47, Simon Glass <[email protected]> wrote: > > 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 <[email protected]> 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@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@7e202000: 0, sdhci@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 >>

