blob: 86fd4437cb7f9742a9f2fd11b7087d0672a3d190 [file] [log] [blame]
/*
* Copyright (c) 2021 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Additional test case for log core
*
*/
#include <tc_util.h>
#include <stdbool.h>
#include <zephyr.h>
#include <ztest.h>
#include <logging/log_backend.h>
#include <logging/log_ctrl.h>
#include <logging/log.h>
/* Interfaces tested in these cases have been tested in kernel space.
* Test cases in this file run in user space to improve test coverage
*/
void test_log_from_user(void)
{
struct log_msg_ids src_level = {
.level = LOG_LEVEL_INF,
.domain_id = CONFIG_LOG_DOMAIN_ID,
.source_id = 0,
};
uint32_t cnt0, cnt1;
log_from_user(src_level, "log from user\n");
log_from_user(src_level, "log from user, level %d\n", src_level.level);
cnt0 = log_buffered_cnt();
while (log_process(false)) {
}
cnt1 = log_buffered_cnt();
zassert_true(cnt1 <= cnt0, "no message is handled");
}
void test_log_hexdump_from_user(void)
{
int32_t data = 128;
struct log_msg_ids src_level = {
.level = LOG_LEVEL_INF,
.domain_id = CONFIG_LOG_DOMAIN_ID,
.source_id = 0,
};
log_hexdump_from_user(src_level, "test_hexdump", &data, sizeof(data));
while (log_process(false)) {
}
}
static void call_log_generic(uint32_t source_id, const char *fmt, ...)
{
struct log_msg_ids src_level = {
.level = LOG_LEVEL_INF,
.domain_id = CONFIG_LOG_DOMAIN_ID,
.source_id = source_id,
};
va_list ap;
va_start(ap, fmt);
log_generic(src_level, fmt, ap, LOG_STRDUP_SKIP);
va_end(ap);
}
void test_log_generic(void)
{
uint32_t source_id = 0;
call_log_generic(source_id, "log generic\n");
while (log_process(false)) {
}
}
void test_log_filter_set(void)
{
log_filter_set(NULL, CONFIG_LOG_DOMAIN_ID, 0, LOG_LEVEL_WRN);
}
void test_log_panic(void)
{
struct log_msg_ids src_level = {
.level = LOG_LEVEL_ERR,
.domain_id = CONFIG_LOG_DOMAIN_ID,
.source_id = 0,
};
log_from_user(src_level, "log from user\n");
log_from_user(src_level, "log from user, level %d\n", src_level.level);
log_panic();
}
void test_main(void)
{
ztest_test_suite(test_log_list,
ztest_user_unit_test(test_log_from_user),
ztest_user_unit_test(test_log_hexdump_from_user),
ztest_user_unit_test(test_log_generic),
ztest_user_unit_test(test_log_filter_set),
ztest_user_unit_test(test_log_panic));
ztest_run_test_suite(test_log_list);
}