tests: logging/log_api: add a few bits for tagged arguments

This adds a few bits to support testing for runtime tagged arguments
when CONFIG_LOG2_RUNTIME_USE_TAGGED_ARGUMENTS is enabled.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
Daniel Leung 2022-03-03 17:42:44 -08:00 committed by Stephanos Ioannidis
commit 8f97e25645
2 changed files with 256 additions and 2 deletions

View file

@ -22,9 +22,17 @@
LOG_MODULE_REGISTER(test, CONFIG_SAMPLE_MODULE_LOG_LEVEL);
#ifdef CONFIG_LOG2_USE_TAGGED_ARGUMENTS
/* The extra sizeof(int) is the end of arguments tag. */
#define LOG2_SIMPLE_MSG_LEN \
ROUND_UP(sizeof(struct log_msg2_hdr) + \
sizeof(struct cbprintf_package_hdr_ext) + \
sizeof(int), sizeof(long long))
#else
#define LOG2_SIMPLE_MSG_LEN \
ROUND_UP(sizeof(struct log_msg2_hdr) + \
sizeof(struct cbprintf_package_hdr_ext), sizeof(long long))
#endif
#ifdef CONFIG_LOG_TIMESTAMP_64BIT
#define TIMESTAMP_INIT_VAL 0x100000000
@ -375,12 +383,27 @@ static size_t get_max_hexdump(void)
static size_t get_long_hexdump(void)
{
if (IS_ENABLED(CONFIG_LOG2)) {
size_t extra_msg_sz = 0;
size_t extra_hexdump_sz = 0;
if (IS_ENABLED(CONFIG_LOG2_USE_TAGGED_ARGUMENTS)) {
/* First message with 2 arguments => 2 tags */
extra_msg_sz = 2 * sizeof(int);
/*
* Hexdump with an implicit "%s" and the "hexdump" string
* as argument => 1 tag.
*/
extra_hexdump_sz = sizeof(int);
}
return CONFIG_LOG_BUFFER_SIZE -
/* First message */
ROUND_UP(LOG2_SIMPLE_MSG_LEN + 2 * sizeof(int) + STR_SIZE("test %d %d"),
ROUND_UP(LOG2_SIMPLE_MSG_LEN + 2 * sizeof(int) + STR_SIZE("test %d %d") +
extra_msg_sz,
sizeof(long long)) -
/* Hexdump message excluding data */
ROUND_UP(LOG2_SIMPLE_MSG_LEN + STR_SIZE("hexdump"),
ROUND_UP(LOG2_SIMPLE_MSG_LEN + STR_SIZE("hexdump") + extra_hexdump_sz,
sizeof(long long)) - 2 * sizeof(int);
}

View file

@ -464,3 +464,234 @@ tests:
- CONFIG_LOG_BACKEND_XTENSA_SIM=n
- CONFIG_CPLUSPLUS=y
extra_args: EXTRA_CPPFLAGS=-DNO_BACKENDS=1
logging.log2_api_deferred_overflow_rt_filter.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_MODE_OVERFLOW=y
- CONFIG_LOG_RUNTIME_FILTERING=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_overflow.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_MODE_OVERFLOW=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_no_overflow.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_MODE_OVERFLOW=n
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_static_filter.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_printk.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_LOG_PRINTK=y
#When LOG_PRINTK is enabled, thread must process otherwise test output would be lost.
- CONFIG_LOG_PROCESS_THREAD=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_func_prefix.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_LOG_FUNC_NAME_PREFIX_DBG=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_64b_timestamp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_TIMESTAMP_64BIT=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_override_level.tagged_args:
# Testing on selected platforms as it enables all logs in the application
# and it cannot be handled on many platforms.
platform_allow: qemu_cortex_m3 qemu_cortex_a9
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_OVERRIDE_LEVEL=4
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_override_level_rt_filtering.tagged_args:
# Testing on selected platforms as it enables all logs in the application
# and it cannot be handled on many platforms.
platform_allow: qemu_cortex_m3 qemu_cortex_a9
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_RUNTIME_FILTERING=y
- CONFIG_LOG_OVERRIDE_LEVEL=4
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_printk.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG_PRINTK=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_rt_filter.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG_RUNTIME_FILTERING=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_static_filter.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_64b_timestamp.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG_TIMESTAMP_64BIT=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_overflow_rt_filter_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_MODE_OVERFLOW=y
- CONFIG_LOG_RUNTIME_FILTERING=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_overflow_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_MODE_OVERFLOW=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_no_overflow_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_MODE_OVERFLOW=n
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_static_filter_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_printk_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_LOG_PRINTK=y
#When LOG_PRINTK is enabled, thread must process otherwise test output would be lost.
- CONFIG_LOG_PROCESS_THREAD=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_func_prefix_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_LOG_FUNC_NAME_PREFIX_DBG=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_deferred_64b_timestamp_cpp.tagged_args:
# FIXME:see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_DEFERRED=y
- CONFIG_LOG_TIMESTAMP_64BIT=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_cpp.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_printk_cpp.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG_PRINTK=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_rt_filter_cpp.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG_RUNTIME_FILTERING=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_static_filter_cpp.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_SAMPLE_MODULE_LOG_LEVEL_DBG=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y
logging.log2_api_immediate_64b_timestamp_cpp.tagged_args:
# FIXME: qemu_arc_hs6x excluded, see #38041
platform_exclude: qemu_arc_hs6x
extra_configs:
- CONFIG_LOG_MODE_IMMEDIATE=y
- CONFIG_LOG_TIMESTAMP_64BIT=y
- CONFIG_CPLUSPLUS=y
- CONFIG_LOG2_USE_TAGGED_ARGUMENTS=y