
Hi,
On Mon, 13 Nov 2023 at 18:41, AKASHI Takahiro takahiro.akashi@linaro.org wrote:
On Mon, Nov 13, 2023 at 11:01:17AM -0700, Simon Glass wrote:
Hi,
On Sun, 12 Nov 2023 at 18:46, AKASHI Takahiro takahiro.akashi@linaro.org wrote:
Hi Tom,
On Fri, Nov 10, 2023 at 01:21:37PM -0500, Tom Rini wrote:
On Wed, Oct 25, 2023 at 02:14:27PM +0900, AKASHI Takahiro wrote:
In this test, "scmi" command is tested against different sub-commands. Please note that scmi command is for debug purpose and is not intended in production system.
Signed-off-by: AKASHI Takahiro takahiro.akashi@linaro.org Reviewed-by: Simon Glass sjg@chromium.org Reviewed-by: Etienne Carriere etienne.carriere@foss.st.com
The test part of this still fails: https://source.denx.de/u-boot/u-boot/-/jobs/732077
I don't know why more output wasn't captured, when I run it locally instead I get: ========================================== FAILURES =========================================== _______________________________ test_ut[ut_dm_dm_test_scmi_cmd] _______________________________ test/py/u_boot_spawn.py:195: in expect c = os.read(self.fd, 1024).decode(errors='replace') E OSError: [Errno 5] Input/output error
During handling of the above exception, another exception occurred: test/py/tests/test_ut.py:502: in test_ut output = u_boot_console.run_command('ut ' + ut_subtest) test/py/u_boot_console_base.py:266: in run_command m = self.p.expect([self.prompt_compiled] + self.bad_patterns) test/py/u_boot_spawn.py:204: in expect raise ValueError('U-Boot exited with %s' % info) E ValueError: U-Boot exited with signal 11 (SIGSEGV)
The command uses global variables which hold pointers to 'struct udevice' which are to be shared between the main and the sub-commands. Since pytest framework executes ut tests twice, once with a (normal?) device tree and once with a flat tree, udevices will be *voided* between two executions.
Are you able to put the var in the uclass-priv data instead? The state should be cleared before running each DM test.
Well, I don't think we need such a trick. As you can see, we may simply fetch/find necessary udevices every time the command is called. It is enough given that the command is mainly for debug purpose.
OK. Let's see how it goes. When you mention global vars I get a bit nervous, but we do have these in some places.
Regards, Simon
-Takahiro Akashi
Regards, Simon
I will fix it in v2.
Thanks, -Takahiro Akashi
------------------------------------ Captured stdout call ------------------------------------- => ut dm dm_test_scmi_cmd Test: dm_test_scmi_cmd: scmi.c SCMI device: scmi protocol version: 0x20000 # of agents: 2 0: platform > 1: OSPM # of protocols: 4 Power domain management Clock management Reset domain management Voltage domain management vendor: U-Boot sub vendor: Sandbox impl version: 0x1 Denying access to device:0 failed (-13) Denying access to protocol:0x14 on device:0 failed (-13) Reset failed (-13) Test: dm_test_scmi_cmd: scmi.c (flat tree) SCMI device: Q =================================== short test summary info =================================== FAILED test/py/tests/test_ut.py::test_ut[ut_dm_dm_test_scmi_cmd] - ValueError: U-Boot exited...
-- Tom