cyclic: Add a simple test

Add a test for cyclic function registration and activation.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Stefan Roese 2022-09-02 13:57:54 +02:00 committed by Tom Rini
parent 00275f5ead
commit af042c211d
3 changed files with 39 additions and 0 deletions

View File

@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
obj-y += cmd_ut_common.o obj-y += cmd_ut_common.o
obj-$(CONFIG_AUTOBOOT) += test_autoboot.o obj-$(CONFIG_AUTOBOOT) += test_autoboot.o
obj-$(CONFIG_CYCLIC) += cyclic.o
obj-$(CONFIG_EVENT) += event.o obj-$(CONFIG_EVENT) += event.o

35
test/common/cyclic.c Normal file
View File

@ -0,0 +1,35 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2022 Stefan Roese <sr@denx.de>
*/
#include <common.h>
#include <cyclic.h>
#include <dm.h>
#include <test/common.h>
#include <test/test.h>
#include <test/ut.h>
#include <watchdog.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;
ut_assertnonnull(cyclic_register(cyclic_test, 10 * 1000, "cyclic_demo",
NULL));
/* Execute all registered cyclic functions */
WATCHDOG_RESET();
ut_asserteq(true, cyclic_active);
return 0;
}
COMMON_TEST(dm_test_cyclic_running, 0);

View File

@ -6,6 +6,7 @@
#include <common.h> #include <common.h>
#include <console.h> #include <console.h>
#include <cyclic.h>
#include <dm.h> #include <dm.h>
#include <event.h> #include <event.h>
#include <dm/root.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) static int test_pre_run(struct unit_test_state *uts, struct unit_test *test)
{ {
ut_assertok(event_init()); ut_assertok(event_init());
ut_assertok(cyclic_init());
if (test->flags & UT_TESTF_DM) if (test->flags & UT_TESTF_DM)
ut_assertok(dm_test_pre_run(uts)); 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); ut_unsilence_console(uts);
if (test->flags & UT_TESTF_DM) if (test->flags & UT_TESTF_DM)
ut_assertok(dm_test_post_run(uts)); ut_assertok(dm_test_post_run(uts));
ut_assertok(cyclic_uninit());
ut_assertok(event_uninit()); ut_assertok(event_uninit());
return 0; return 0;