Commit 048e7dc5 authored by Fin Maaß's avatar Fin Maaß Committed by Benjamin Cabé
Browse files

tests: logging: log_output: net: add test for syslog output



add test for syslog log output.

Signed-off-by: default avatarFin Maaß <f.maass@vogl-electronic.com>
parent d95f82c3
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(log_output)

FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})
+15 −0
Original line number Diff line number Diff line
CONFIG_ZTEST=y
CONFIG_TEST_LOGGING_DEFAULTS=n
CONFIG_LOG=y
CONFIG_LOG_OUTPUT=y
CONFIG_LOG_PRINTK=n
CONFIG_ZTEST_STACK_SIZE=1152
CONFIG_LOG_BACKEND_NET=y
CONFIG_NET_TEST=y
CONFIG_NETWORKING=y
CONFIG_NET_UDP=y
CONFIG_LOG_MODE_IMMEDIATE=n
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_NET_SOCKETS=y
CONFIG_ENTROPY_GENERATOR=y
CONFIG_TEST_RANDOM_GENERATOR=y
+77 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2018 Nordic Semiconductor
 * Copyright (c) 2024 Vogl Electronic GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief Test log message
 */

#include <zephyr/logging/log.h>
#include <zephyr/logging/log_output.h>

#include <zephyr/tc_util.h>
#include <stdbool.h>
#include <zephyr/kernel.h>
#include <zephyr/ztest.h>

#define LOG_MODULE_NAME test
LOG_MODULE_REGISTER(LOG_MODULE_NAME);

#define SNAME    "src"
#define DNAME    "domain"
#define TEST_STR "test"

static uint8_t mock_buffer[512];
static uint8_t log_output_buf[4];
static uint32_t mock_len;

static void reset_mock_buffer(void)
{
	mock_len = 0U;
	memset(mock_buffer, 0, sizeof(mock_buffer));
}

static int mock_output_func(uint8_t *buf, size_t size, void *ctx)
{
	memcpy(&mock_buffer[mock_len], buf, size);
	mock_len += size;

	return size;
}

LOG_OUTPUT_DEFINE(log_output, mock_output_func, log_output_buf, sizeof(log_output_buf));

BUILD_ASSERT(IS_ENABLED(CONFIG_LOG_BACKEND_NET), "syslog backend not enabled");

ZTEST(test_log_output_net, test_format)
{
	char package[256];

	static const char *exp_str =
		"<134>1 1970-01-01T00:00:01.000000Z zephyr - - - - " DNAME "/" SNAME ": " TEST_STR;
	uint32_t flags = LOG_OUTPUT_FLAG_TIMESTAMP | LOG_OUTPUT_FLAG_FORMAT_TIMESTAMP |
			 LOG_OUTPUT_FLAG_FORMAT_SYSLOG;
	int err;

	log_output_timestamp_freq_set(1000000);

	err = cbprintf_package(package, sizeof(package), 0, TEST_STR);
	zassert_true(err > 0);

	log_output_process(&log_output, 1000000, DNAME, SNAME, NULL, LOG_LEVEL_INF, package, NULL,
			   0, flags);

	mock_buffer[mock_len] = '\0';
	zassert_str_equal(exp_str, mock_buffer, "expected: %s, is: %s", exp_str, mock_buffer);
}

static void before(void *notused)
{
	reset_mock_buffer();
}

ZTEST_SUITE(test_log_output_net, NULL, NULL, before, NULL, NULL);
+26 −0
Original line number Diff line number Diff line
common:
  depends_on: netif
  integration_platforms:
    - native_sim

tests:
  logging.output.net:
    tags:
      - log_output
      - logging
    extra_configs:
      - CONFIG_LOG_TIMESTAMP_64BIT=n
  logging.output.net.ts64:
    tags:
      - log_output
      - logging
    extra_configs:
      - CONFIG_LOG_TIMESTAMP_64BIT=y
  logging.output.net.fulllibc:
    tags:
      - log_output
      - logging
    extra_configs:
      - CONFIG_LOG_TIMESTAMP_64BIT=n
      - CONFIG_REQUIRES_FULL_LIBC=y
    filter: CONFIG_FULL_LIBC_SUPPORTED