]>
git.ipfire.org Git - people/ms/u-boot.git/blob - test/log/log_test.c
2 * Logging support test program
4 * Copyright (c) 2017 Google, Inc
5 * Written by Simon Glass <sjg@chromium.org>
7 * SPDX-License-Identifier: GPL-2.0+
12 /* emit some sample log records in different ways, for testing */
13 static int log_run(enum uclass_id cat
, const char *file
)
18 for (i
= LOGL_FIRST
; i
< LOGL_COUNT
; i
++) {
19 log(cat
, i
, "log %d\n", i
);
20 _log(log_uc_cat(cat
), i
, file
, 100 + i
, "func", "_log %d\n",
27 static int log_test(int testnum
)
31 printf("test %d\n", testnum
);
34 /* Check a category filter using the first category */
35 enum log_category_t cat_list
[] = {
36 log_uc_cat(UCLASS_MMC
), log_uc_cat(UCLASS_SPI
),
40 ret
= log_add_filter("console", cat_list
, LOGL_MAX
, NULL
);
43 log_run(UCLASS_MMC
, "file");
44 ret
= log_remove_filter("console", ret
);
50 /* Check a category filter using the second category */
51 enum log_category_t cat_list
[] = {
52 log_uc_cat(UCLASS_MMC
), log_uc_cat(UCLASS_SPI
), LOGC_END
55 ret
= log_add_filter("console", cat_list
, LOGL_MAX
, NULL
);
58 log_run(UCLASS_SPI
, "file");
59 ret
= log_remove_filter("console", ret
);
65 /* Check a category filter that should block log entries */
66 enum log_category_t cat_list
[] = {
67 log_uc_cat(UCLASS_MMC
), LOGC_NONE
, LOGC_END
70 ret
= log_add_filter("console", cat_list
, LOGL_MAX
, NULL
);
73 log_run(UCLASS_SPI
, "file");
74 ret
= log_remove_filter("console", ret
);
80 /* Check a passing file filter */
81 ret
= log_add_filter("console", NULL
, LOGL_MAX
, "file");
84 log_run(UCLASS_SPI
, "file");
85 ret
= log_remove_filter("console", ret
);
91 /* Check a failing file filter */
92 ret
= log_add_filter("console", NULL
, LOGL_MAX
, "file");
95 log_run(UCLASS_SPI
, "file2");
96 ret
= log_remove_filter("console", ret
);
102 /* Check a passing file filter (second in list) */
103 ret
= log_add_filter("console", NULL
, LOGL_MAX
, "file,file2");
106 log_run(UCLASS_SPI
, "file2");
107 ret
= log_remove_filter("console", ret
);
113 /* Check a passing file filter */
114 ret
= log_add_filter("console", NULL
, LOGL_MAX
,
115 "file,file2,log/log_test.c");
118 log_run(UCLASS_SPI
, "file2");
119 ret
= log_remove_filter("console", ret
);
125 /* Check a log level filter */
126 ret
= log_add_filter("console", NULL
, LOGL_WARNING
, NULL
);
129 log_run(UCLASS_SPI
, "file");
130 ret
= log_remove_filter("console", ret
);
136 /* Check two filters, one of which passes everything */
139 ret
= log_add_filter("console", NULL
, LOGL_WARNING
, NULL
);
143 ret
= log_add_filter("console", NULL
, LOGL_MAX
, NULL
);
147 log_run(UCLASS_SPI
, "file");
148 ret
= log_remove_filter("console", filt1
);
151 ret
= log_remove_filter("console", filt2
);
157 /* Check three filters, which together pass everything */
158 int filt1
, filt2
, filt3
;
160 ret
= log_add_filter("console", NULL
, LOGL_MAX
, "file)");
164 ret
= log_add_filter("console", NULL
, LOGL_MAX
, "file2");
168 ret
= log_add_filter("console", NULL
, LOGL_MAX
,
173 log_run(UCLASS_SPI
, "file2");
174 ret
= log_remove_filter("console", filt1
);
177 ret
= log_remove_filter("console", filt2
);
180 ret
= log_remove_filter("console", filt3
);
190 #ifdef CONFIG_LOG_TEST
191 int do_log_test(cmd_tbl_t
*cmdtp
, int flag
, int argc
, char *const argv
[])
197 testnum
= simple_strtoul(argv
[1], NULL
, 10);
199 ret
= log_test(testnum
);
201 printf("Test failure (err=%d)\n", ret
);
203 return ret
? CMD_RET_FAILURE
: 0;