
On Sat, 15 Feb 2020 at 03:14, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Provide unit tests for the syslog logging driver.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
v3: new patch
test/log/Makefile | 4 + test/log/syslog_test.c | 186 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+) create mode 100644 test/log/syslog_test.c
Reviewed-by: Simon Glass sjg@chromium.org
This is a great set of tests.
But please see below.
diff --git a/test/log/Makefile b/test/log/Makefile index 98178f5e2b..4c92550f6e 100644 --- a/test/log/Makefile +++ b/test/log/Makefile @@ -8,6 +8,10 @@ ifdef CONFIG_UT_LOG
obj-y += test-main.o
+ifdef CONFIG_SANDBOX +obj-$(CONFIG_LOG_SYSLOG) += syslog_test.o +endif
ifndef CONFIG_LOG obj-$(CONFIG_CONSOLE_RECORD) += nolog_test.o endif diff --git a/test/log/syslog_test.c b/test/log/syslog_test.c new file mode 100644 index 0000000000..7f3321f680 --- /dev/null +++ b/test/log/syslog_test.c @@ -0,0 +1,186 @@ +// SPDX-License-Identifier: GPL-2.0+ +/*
- Copyright (c) 2020, Heinrich Schuchardt xypron.glpk@gmx.de
- Logging function tests for CONFIG_LOG_SYSLOG=y.
- Invoke the test with: ./u-boot -d arch/sandbox/dts/test.dtb
- */
+/* Override CONFIG_LOG_MAX_LEVEL */ +#define LOG_DEBUG
+#include <common.h> +#include <dm/device.h> +#include <hexdump.h> +#include <test/log.h> +#include <test/test.h> +#include <test/suites.h> +#include <test/ut.h> +#include <asm/eth.h>
+DECLARE_GLOBAL_DATA_PTR;
+const char *expected;
comment? It seems to have strange behaviour.
+static int sb_log_tx_handler(struct udevice *dev, void *packet,
unsigned int len)
Add function comment
+{
struct eth_sandbox_priv *priv = dev_get_priv(dev);
struct unit_test_state *uts = priv->priv;
char *buf = packet;
struct ethernet_hdr *eth_hdr = packet;
struct ip_udp_hdr *ip_udp_hdr;
/* Check Ethernet header */
ut_asserteq_mem(ð_hdr->et_dest, net_bcast_ethaddr, ARP_HLEN);
ut_asserteq(ntohs(eth_hdr->et_protlen), PROT_IP);
/* Check IP header */
buf += sizeof(struct ethernet_hdr);
ip_udp_hdr = (struct ip_udp_hdr *)buf;
ut_asserteq(ip_udp_hdr->ip_p, IPPROTO_UDP);
ut_asserteq(ip_udp_hdr->ip_dst.s_addr, 0xffffffff);
ut_asserteq(ntohs(ip_udp_hdr->udp_dst), 514);
ut_asserteq(UDP_HDR_SIZE + strlen(expected) + 1,
ntohs(ip_udp_hdr->udp_len));
/* Check payload */
buf += sizeof(struct ip_udp_hdr);
ut_asserteq_mem(expected, buf,
ntohs(ip_udp_hdr->udp_len) - UDP_HDR_SIZE);
expected = NULL;
return 0;
+}
+static int syslog_test_log_err(struct unit_test_state *uts) +{
int old_log_level = gd->default_log_level;
gd->log_fmt = LOGF_DEFAULT;
gd->default_log_level = LOGL_INFO;
env_set("ethact", "eth@10002000");
env_set("log_hostname", "sandbox");
expected = "<3>sandbox uboot[1]: syslog_test_log_err() "
"testing log_err\n";
sandbox_eth_set_tx_handler(0, sb_log_tx_handler);
/* Used by ut_assert macros in the tx_handler */
sandbox_eth_set_priv(0, uts);
log_err("testing %s\n", "log_err");
sandbox_eth_set_tx_handler(0, NULL);
gd->default_log_level = old_log_level;
return 0;
+} +LOG_TEST(syslog_test_log_err);
+static int syslog_test_log_warning(struct unit_test_state *uts) +{
int old_log_level = gd->default_log_level;
gd->log_fmt = LOGF_DEFAULT;
gd->default_log_level = LOGL_INFO;
env_set("ethact", "eth@10002000");
env_set("log_hostname", "sandbox");
expected = "<4>sandbox uboot[1]: syslog_test_log_warning() "
"testing log_warning\n";
sandbox_eth_set_tx_handler(0, sb_log_tx_handler);
/* Used by ut_assert macros in the tx_handler */
sandbox_eth_set_priv(0, uts);
log_warning("testing %s\n", "log_warning");
sandbox_eth_set_tx_handler(0, NULL);
ut_assertnull(expected);
Comment here that expected is set to NULL in the tx handler
gd->default_log_level = old_log_level;
return 0;
+} +LOG_TEST(syslog_test_log_warning);
Regards, Simon