[PATCH v4 9/9] cyclic: Add a simple test
Simon Glass
sjg at chromium.org
Tue Aug 16 13:48:12 CEST 2022
On Tue, 16 Aug 2022 at 04:28, Stefan Roese <sr at denx.de> wrote:
>
> Add a test for cyclic function registration and activation.
>
> Signed-off-by: Stefan Roese <sr at denx.de>
> ---
> v4:
> - New patch
>
> test/common/Makefile | 1 +
> test/common/cyclic.c | 31 +++++++++++++++++++++++++++++++
> test/test-main.c | 3 +++
> 3 files changed, 35 insertions(+)
> create mode 100644 test/common/cyclic.c
Reviewed-by: Simon Glass <sjg at chromium.org>
>
> diff --git a/test/common/Makefile b/test/common/Makefile
> index 9087788ba6a8..cc918f64e544 100644
> --- a/test/common/Makefile
> +++ b/test/common/Makefile
> @@ -1,4 +1,5 @@
> # SPDX-License-Identifier: GPL-2.0+
> obj-y += cmd_ut_common.o
> obj-$(CONFIG_AUTOBOOT) += test_autoboot.o
> +obj-$(CONFIG_CYCLIC) += cyclic.o
> obj-$(CONFIG_EVENT) += event.o
> diff --git a/test/common/cyclic.c b/test/common/cyclic.c
> new file mode 100644
> index 000000000000..58f1603137e9
> --- /dev/null
> +++ b/test/common/cyclic.c
> @@ -0,0 +1,31 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2022 Stefan Roese <sr at denx.de>
> + */
> +
> +#include <common.h>
> +#include <cyclic.h>
> +#include <dm.h>
> +#include <dm/test.h>
> +#include <test/test.h>
> +#include <test/ut.h>
> +#include <linux/delay.h>
> +
> +/* Test that cyclic function is called */
> +static bool cyclic_active = false;
> +
> +static void cyclic_test(void *ctx)
> +{
> + cyclic_active = true;
> +}
> +
> +static int dm_test_cyclic_running(struct unit_test_state *uts)
> +{
cyclic_active = false;
(since tests can be re-run)
> + ut_assertnonnull(cyclic_register(cyclic_test, 10 * 1000, "cyclic_demo",
> + NULL));
> + mdelay(100);
Instead of the delay, can you use WATCHDOG_RESET() ? This is the first
think udelay() does, after all.
It doesn't test as much code, but it does avoid a delay in the tests
(which slows them down).
> + ut_asserteq(true, cyclic_active);
> +
> + return 0;
> +}
> +DM_TEST(dm_test_cyclic_running, 0);
For this directory it should be COMMON_TEST() - see event.c
> diff --git a/test/test-main.c b/test/test-main.c
> index 31837e57a8fb..8a609a8a2fce 100644
> --- a/test/test-main.c
> +++ b/test/test-main.c
> @@ -6,6 +6,7 @@
>
> #include <common.h>
> #include <console.h>
> +#include <cyclic.h>
> #include <dm.h>
> #include <event.h>
> #include <dm/root.h>
> @@ -220,6 +221,7 @@ static int dm_test_restore(struct device_node *of_root)
> static int test_pre_run(struct unit_test_state *uts, struct unit_test *test)
> {
> ut_assertok(event_init());
> + ut_assertok(cyclic_init());
>
> if (test->flags & UT_TESTF_DM)
> ut_assertok(dm_test_pre_run(uts));
> @@ -265,6 +267,7 @@ static int test_post_run(struct unit_test_state *uts, struct unit_test *test)
> ut_unsilence_console(uts);
> if (test->flags & UT_TESTF_DM)
> ut_assertok(dm_test_post_run(uts));
> + ut_assertok(cyclic_uninit());
> ut_assertok(event_uninit());
>
> return 0;
> --
> 2.37.2
>
Regards,
Simon
More information about the U-Boot
mailing list