diff options
author | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-05-12 15:08:39 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-05-12 15:08:39 +1000 |
commit | 7f227cb47a2d04715d09c29914e48f728d55b5fe (patch) | |
tree | b7e356379c8bf3b6ddc23152e62aab1dd2ad12f1 | |
parent | 8b5fca359a8cfecb9d66ca436a553b46e7b5cc4b (diff) | |
download | skiboot-7f227cb47a2d04715d09c29914e48f728d55b5fe.zip skiboot-7f227cb47a2d04715d09c29914e48f728d55b5fe.tar.gz skiboot-7f227cb47a2d04715d09c29914e48f728d55b5fe.tar.bz2 |
Add test for pr_fmt
(missed this from pr_fmt commit, whoops)
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r-- | core/test/run-console-log-pr_fmt.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/core/test/run-console-log-pr_fmt.c b/core/test/run-console-log-pr_fmt.c new file mode 100644 index 0000000..33b2e37 --- /dev/null +++ b/core/test/run-console-log-pr_fmt.c @@ -0,0 +1,72 @@ +/* Copyright 2013-2014 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <config.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> +#include <stdarg.h> + +#define __TEST__ + +static inline unsigned long mftb(void) +{ + return 42; +} + +#define pr_fmt(f) "PREFIX: " f +#include "../../libc/include/stdio.h" +#include "../console-log.c" +#include "../../libc/stdio/snprintf.c" +#include "../../libc/stdio/vsnprintf.c" + +struct debug_descriptor debug_descriptor; + +bool flushed_to_drivers; +char console_buffer[4096]; + +ssize_t console_write(bool flush_to_drivers, const void *buf, size_t count) +{ + flushed_to_drivers = flush_to_drivers; + memcpy(console_buffer, buf, count); + return count; +} + +int main(void) +{ + debug_descriptor.console_log_levels = 0x75; + + prlog(PR_EMERG, "Hello World"); + assert(memcmp(console_buffer, "[42,0] PREFIX: Hello World", strlen("[42,0] PREFIX: Hello World")) == 0); + assert(flushed_to_drivers==true); + + memset(console_buffer, 0, sizeof(console_buffer)); + + // Below log level + prlog(PR_TRACE, "Hello World"); + assert(console_buffer[0] == 0); + + // Should not be flushed to console + prlog(PR_DEBUG, "Hello World"); + assert(memcmp(console_buffer, "[42,7] PREFIX: Hello World", strlen("[42,7] PREFIX: Hello World")) == 0); + assert(flushed_to_drivers==false); + + printf("Hello World"); + assert(memcmp(console_buffer, "[42,5] PREFIX: Hello World", strlen("[42,5] PREFIX: Hello World")) == 0); + assert(flushed_to_drivers==true); + + return 0; +} |