settings: Add test for settings commit priority
Add a test to validate settings commit priority Signed-off-by: Laczen JMS <laczenjms@gmail.com>
This commit is contained in:
parent
95fa167e45
commit
435587d368
5 changed files with 125 additions and 0 deletions
8
tests/subsys/settings_commit_prio/CMakeLists.txt
Normal file
8
tests/subsys/settings_commit_prio/CMakeLists.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
cmake_minimum_required(VERSION 3.20.0)
|
||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
project(test_settings_commit_prio)
|
||||
|
||||
FILE(GLOB app_sources src/*.c)
|
||||
target_sources(app PRIVATE ${app_sources})
|
18
tests/subsys/settings_commit_prio/README.rst
Normal file
18
tests/subsys/settings_commit_prio/README.rst
Normal file
|
@ -0,0 +1,18 @@
|
|||
.. _settings_commit_prio_test:
|
||||
|
||||
Settings Subsystem commit priority Test
|
||||
#######################################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
This test is used to test the Settings Subsystem commit priority.
|
||||
|
||||
Building and Testing
|
||||
********************
|
||||
|
||||
This application can be built and executed on native_sim as follows:
|
||||
|
||||
.. code-block:: console
|
||||
$ ./scripts/twister -p native_sim -T tests/subsys/settings_commit_prio
|
||||
To build for another board, change ``native_sim`` above to that board's name.
|
5
tests/subsys/settings_commit_prio/prj.conf
Normal file
5
tests/subsys/settings_commit_prio/prj.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
CONFIG_TEST=y
|
||||
CONFIG_ZTEST=y
|
||||
CONFIG_LOG=y
|
||||
CONFIG_SETTINGS=y
|
||||
CONFIG_SETTINGS_DYNAMIC_HANDLERS=y
|
90
tests/subsys/settings_commit_prio/src/main.c
Normal file
90
tests/subsys/settings_commit_prio/src/main.c
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* Copyright (c) 2024 Laczen
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <zephyr/settings/settings.h>
|
||||
#include <zephyr/ztest.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
|
||||
LOG_MODULE_REGISTER(test);
|
||||
|
||||
static int prio;
|
||||
|
||||
int commit0(void)
|
||||
{
|
||||
LOG_INF("%s Called", __func__);
|
||||
zassert_equal(prio, 0, "Bad commit order");
|
||||
prio++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int commit1(void)
|
||||
{
|
||||
LOG_INF("%s Called", __func__);
|
||||
zassert_equal(prio, 1, "Bad commit order");
|
||||
prio++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int commit2(void)
|
||||
{
|
||||
LOG_INF("%s Called", __func__);
|
||||
zassert_equal(prio, 2, "Bad commit order");
|
||||
prio++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int commit3(void)
|
||||
{
|
||||
LOG_INF("%s Called", __func__);
|
||||
zassert_equal(prio, 3, "Bad commit order");
|
||||
prio++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int commit5(void)
|
||||
{
|
||||
LOG_INF("%s Called", __func__);
|
||||
zassert_equal(prio, 0, "Bad commit order");
|
||||
return 0;
|
||||
}
|
||||
|
||||
SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(h0, "h0", NULL, NULL, commit0, NULL, 0);
|
||||
SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(h2, "h2", NULL, NULL, commit2, NULL, 2);
|
||||
|
||||
static struct settings_handler h1 = {
|
||||
.name = "h1",
|
||||
.h_commit = commit1,
|
||||
};
|
||||
|
||||
static struct settings_handler h3 = {
|
||||
.name = "h3",
|
||||
.h_commit = commit3,
|
||||
};
|
||||
|
||||
SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(h5, "h5", NULL, NULL, commit5, NULL, -1);
|
||||
|
||||
/**
|
||||
* @brief Test Settings commit order
|
||||
*
|
||||
* This test verifies the settings commit order.
|
||||
*/
|
||||
ZTEST(settings_commit_prio, test_commit_order)
|
||||
{
|
||||
int rc;
|
||||
|
||||
prio = 0;
|
||||
rc = settings_register_with_cprio(&h1, 1);
|
||||
zassert_equal(rc, 0, "Failed to register handler");
|
||||
rc = settings_register_with_cprio(&h3, 3);
|
||||
zassert_equal(rc, 0, "Failed to register handler");
|
||||
|
||||
rc = settings_commit();
|
||||
zassert_equal(rc, 0, "Commit failed with code [%d]", rc);
|
||||
zassert_equal(prio, 4, "Incorrect prio level reached [%d]", prio);
|
||||
}
|
||||
|
||||
ZTEST_SUITE(settings_commit_prio, NULL, NULL, NULL, NULL, NULL);
|
4
tests/subsys/settings_commit_prio/testcase.yaml
Normal file
4
tests/subsys/settings_commit_prio/testcase.yaml
Normal file
|
@ -0,0 +1,4 @@
|
|||
tests:
|
||||
settings.settings_commit_prio:
|
||||
platform_allow: native_sim
|
||||
tags: settings
|
Loading…
Add table
Add a link
Reference in a new issue