diff mbox series

[v2,14/14] test: dm: add test for spawn and wait commands

Message ID 2f17fd7ec21b59218d5bf88f045c13db08f906ca.1740499185.git.jerome.forissier@linaro.org
State Superseded
Headers show
Series Uthreads | expand

Commit Message

Jerome Forissier Feb. 25, 2025, 4:34 p.m. UTC
Test the spawn and wait commands.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
---
 test/cmd/Makefile |  1 +
 test/cmd/spawn.c  | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 test/cmd/spawn.c

Comments

Simon Glass Feb. 27, 2025, 4:25 p.m. UTC | #1
Hi Jerome,

On Tue, 25 Feb 2025 at 09:35, Jerome Forissier
<jerome.forissier@linaro.org> wrote:
>
> Test the spawn and wait commands.
>
> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
> ---
>  test/cmd/Makefile |  1 +
>  test/cmd/spawn.c  | 33 +++++++++++++++++++++++++++++++++
>  2 files changed, 34 insertions(+)
>  create mode 100644 test/cmd/spawn.c
>
> diff --git a/test/cmd/Makefile b/test/cmd/Makefile
> index d8a5e77402d..cf47f04851c 100644
> --- a/test/cmd/Makefile
> +++ b/test/cmd/Makefile
> @@ -39,3 +39,4 @@ obj-$(CONFIG_CMD_WGET) += wget.o
>  endif
>  obj-$(CONFIG_ARM_FFA_TRANSPORT) += armffa.o
>  endif
> +obj-$(CONFIG_CMD_SPAWN) += spawn.o
> diff --git a/test/cmd/spawn.c b/test/cmd/spawn.c
> new file mode 100644
> index 00000000000..5e0770858c0
> --- /dev/null
> +++ b/test/cmd/spawn.c
> @@ -0,0 +1,33 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Tests for spawn and wait commands
> + *
> + * Copyright 2025, Linaro Ltd.
> + */
> +
> +#include <command.h>
> +#include <dm.h>
> +#include <dm/test.h>
> +#include <test/test.h>
> +#include <test/ut.h>
> +
> +static int dm_test_cmd_spawn(struct unit_test_state *uts)
> +{
> +       ut_assertok(run_command("wait; spawn sleep 2; setenv j ${job_id}; "
> +                               "spawn setenv spawned true; "
> +                               "setenv jj ${job_id}; wait; "
> +                               "echo ${j} ${jj} ${spawned}", 0));
> +       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
> +       ut_asserteq_ptr(uts->actual_str,
> +                       strstr(uts->actual_str, "1 2 true"));
> +
> +       ut_assertok(run_command("spawn true; wait; setenv t $?; spawn false; "
> +                               "wait; setenv f $?; wait; echo $t $f $?", 0));
> +       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
> +       ut_asserteq_ptr(uts->actual_str,
> +                       strstr(uts->actual_str, "0 1 0"));
> +       ut_assert_console_end();
> +
> +       return 0;
> +}
> +DM_TEST(dm_test_cmd_spawn, UTF_CONSOLE);
> --
> 2.43.0
>

This doesn't look like a DM test as it doesn't use devices. Could it
be a CMD test?

Regards,
Simon
Jerome Forissier Feb. 27, 2025, 5:12 p.m. UTC | #2
Hi Simon,

On 2/27/25 17:25, Simon Glass wrote:
> Hi Jerome,
> 
> On Tue, 25 Feb 2025 at 09:35, Jerome Forissier
> <jerome.forissier@linaro.org> wrote:
>>
>> Test the spawn and wait commands.
>>
>> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
>> ---
>>  test/cmd/Makefile |  1 +
>>  test/cmd/spawn.c  | 33 +++++++++++++++++++++++++++++++++
>>  2 files changed, 34 insertions(+)
>>  create mode 100644 test/cmd/spawn.c
>>
>> diff --git a/test/cmd/Makefile b/test/cmd/Makefile
>> index d8a5e77402d..cf47f04851c 100644
>> --- a/test/cmd/Makefile
>> +++ b/test/cmd/Makefile
>> @@ -39,3 +39,4 @@ obj-$(CONFIG_CMD_WGET) += wget.o
>>  endif
>>  obj-$(CONFIG_ARM_FFA_TRANSPORT) += armffa.o
>>  endif
>> +obj-$(CONFIG_CMD_SPAWN) += spawn.o
>> diff --git a/test/cmd/spawn.c b/test/cmd/spawn.c
>> new file mode 100644
>> index 00000000000..5e0770858c0
>> --- /dev/null
>> +++ b/test/cmd/spawn.c
>> @@ -0,0 +1,33 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Tests for spawn and wait commands
>> + *
>> + * Copyright 2025, Linaro Ltd.
>> + */
>> +
>> +#include <command.h>
>> +#include <dm.h>
>> +#include <dm/test.h>
>> +#include <test/test.h>
>> +#include <test/ut.h>
>> +
>> +static int dm_test_cmd_spawn(struct unit_test_state *uts)
>> +{
>> +       ut_assertok(run_command("wait; spawn sleep 2; setenv j ${job_id}; "
>> +                               "spawn setenv spawned true; "
>> +                               "setenv jj ${job_id}; wait; "
>> +                               "echo ${j} ${jj} ${spawned}", 0));
>> +       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
>> +       ut_asserteq_ptr(uts->actual_str,
>> +                       strstr(uts->actual_str, "1 2 true"));
>> +
>> +       ut_assertok(run_command("spawn true; wait; setenv t $?; spawn false; "
>> +                               "wait; setenv f $?; wait; echo $t $f $?", 0));
>> +       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
>> +       ut_asserteq_ptr(uts->actual_str,
>> +                       strstr(uts->actual_str, "0 1 0"));
>> +       ut_assert_console_end();
>> +
>> +       return 0;
>> +}
>> +DM_TEST(dm_test_cmd_spawn, UTF_CONSOLE);
>> --
>> 2.43.0
>>
> 
> This doesn't look like a DM test as it doesn't use devices. Could it
> be a CMD test?

Absolutely. In fact I started from a copy of test/cmd/hash.c, which is
not a DM test either is it?

Regards,
Simon Glass March 4, 2025, 1:14 p.m. UTC | #3
Hi Jerome,

On Thu, 27 Feb 2025 at 10:12, Jerome Forissier
<jerome.forissier@linaro.org> wrote:
>
> Hi Simon,
>
> On 2/27/25 17:25, Simon Glass wrote:
> > Hi Jerome,
> >
> > On Tue, 25 Feb 2025 at 09:35, Jerome Forissier
> > <jerome.forissier@linaro.org> wrote:
> >>
> >> Test the spawn and wait commands.
> >>
> >> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
> >> ---
> >>  test/cmd/Makefile |  1 +
> >>  test/cmd/spawn.c  | 33 +++++++++++++++++++++++++++++++++
> >>  2 files changed, 34 insertions(+)
> >>  create mode 100644 test/cmd/spawn.c
> >>
> >> diff --git a/test/cmd/Makefile b/test/cmd/Makefile
> >> index d8a5e77402d..cf47f04851c 100644
> >> --- a/test/cmd/Makefile
> >> +++ b/test/cmd/Makefile
> >> @@ -39,3 +39,4 @@ obj-$(CONFIG_CMD_WGET) += wget.o
> >>  endif
> >>  obj-$(CONFIG_ARM_FFA_TRANSPORT) += armffa.o
> >>  endif
> >> +obj-$(CONFIG_CMD_SPAWN) += spawn.o
> >> diff --git a/test/cmd/spawn.c b/test/cmd/spawn.c
> >> new file mode 100644
> >> index 00000000000..5e0770858c0
> >> --- /dev/null
> >> +++ b/test/cmd/spawn.c
> >> @@ -0,0 +1,33 @@
> >> +// SPDX-License-Identifier: GPL-2.0-or-later
> >> +/*
> >> + * Tests for spawn and wait commands
> >> + *
> >> + * Copyright 2025, Linaro Ltd.
> >> + */
> >> +
> >> +#include <command.h>
> >> +#include <dm.h>
> >> +#include <dm/test.h>
> >> +#include <test/test.h>
> >> +#include <test/ut.h>
> >> +
> >> +static int dm_test_cmd_spawn(struct unit_test_state *uts)
> >> +{
> >> +       ut_assertok(run_command("wait; spawn sleep 2; setenv j ${job_id}; "
> >> +                               "spawn setenv spawned true; "
> >> +                               "setenv jj ${job_id}; wait; "
> >> +                               "echo ${j} ${jj} ${spawned}", 0));
> >> +       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
> >> +       ut_asserteq_ptr(uts->actual_str,
> >> +                       strstr(uts->actual_str, "1 2 true"));
> >> +
> >> +       ut_assertok(run_command("spawn true; wait; setenv t $?; spawn false; "
> >> +                               "wait; setenv f $?; wait; echo $t $f $?", 0));
> >> +       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
> >> +       ut_asserteq_ptr(uts->actual_str,
> >> +                       strstr(uts->actual_str, "0 1 0"));
> >> +       ut_assert_console_end();
> >> +
> >> +       return 0;
> >> +}
> >> +DM_TEST(dm_test_cmd_spawn, UTF_CONSOLE);
> >> --
> >> 2.43.0
> >>
> >
> > This doesn't look like a DM test as it doesn't use devices. Could it
> > be a CMD test?
>
> Absolutely. In fact I started from a copy of test/cmd/hash.c, which is
> not a DM test either is it?

That's right. Since DM had the first tests nearly everything started
out as a DM test, so you could clean those up if you have time.

Regards,
SImon
diff mbox series

Patch

diff --git a/test/cmd/Makefile b/test/cmd/Makefile
index d8a5e77402d..cf47f04851c 100644
--- a/test/cmd/Makefile
+++ b/test/cmd/Makefile
@@ -39,3 +39,4 @@  obj-$(CONFIG_CMD_WGET) += wget.o
 endif
 obj-$(CONFIG_ARM_FFA_TRANSPORT) += armffa.o
 endif
+obj-$(CONFIG_CMD_SPAWN) += spawn.o
diff --git a/test/cmd/spawn.c b/test/cmd/spawn.c
new file mode 100644
index 00000000000..5e0770858c0
--- /dev/null
+++ b/test/cmd/spawn.c
@@ -0,0 +1,33 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Tests for spawn and wait commands
+ *
+ * Copyright 2025, Linaro Ltd.
+ */
+
+#include <command.h>
+#include <dm.h>
+#include <dm/test.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int dm_test_cmd_spawn(struct unit_test_state *uts)
+{
+	ut_assertok(run_command("wait; spawn sleep 2; setenv j ${job_id}; "
+				"spawn setenv spawned true; "
+				"setenv jj ${job_id}; wait; "
+				"echo ${j} ${jj} ${spawned}", 0));
+	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
+	ut_asserteq_ptr(uts->actual_str,
+			strstr(uts->actual_str, "1 2 true"));
+
+	ut_assertok(run_command("spawn true; wait; setenv t $?; spawn false; "
+				"wait; setenv f $?; wait; echo $t $f $?", 0));
+	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
+	ut_asserteq_ptr(uts->actual_str,
+			strstr(uts->actual_str, "0 1 0"));
+	ut_assert_console_end();
+
+	return 0;
+}
+DM_TEST(dm_test_cmd_spawn, UTF_CONSOLE);