1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2010-2014 Intel Corporation 3 */ 4 5 #include <stdio.h> 6 #include <stdint.h> 7 #include <stdarg.h> 8 #include <sys/queue.h> 9 10 #include <rte_log.h> 11 #include <rte_memory.h> 12 #include <rte_launch.h> 13 #include <rte_eal.h> 14 #include <rte_per_lcore.h> 15 #include <rte_lcore.h> 16 17 #include "test.h" 18 19 /* for legacy log test */ 20 #define RTE_LOGTYPE_TESTAPP1 RTE_LOGTYPE_USER1 21 #define RTE_LOGTYPE_TESTAPP2 RTE_LOGTYPE_USER2 22 23 /* 24 * Logs 25 * ==== 26 * 27 * - Enable log types. 28 * - Set log level. 29 * - Send logs with different types and levels, some should not be displayed. 30 */ 31 static int 32 test_legacy_logs(void) 33 { 34 printf("== static log types\n"); 35 36 /* set logtype level low to so we can test global level */ 37 rte_log_set_level(RTE_LOGTYPE_TESTAPP1, RTE_LOG_DEBUG); 38 rte_log_set_level(RTE_LOGTYPE_TESTAPP2, RTE_LOG_DEBUG); 39 40 /* log in error level */ 41 rte_log_set_global_level(RTE_LOG_ERR); 42 RTE_LOG(ERR, TESTAPP1, "error message\n"); 43 RTE_LOG(CRIT, TESTAPP1, "critical message\n"); 44 45 /* log in critical level */ 46 rte_log_set_global_level(RTE_LOG_CRIT); 47 RTE_LOG(ERR, TESTAPP2, "error message (not displayed)\n"); 48 RTE_LOG(CRIT, TESTAPP2, "critical message\n"); 49 50 /* bump up single log type level above global to test it */ 51 rte_log_set_level(RTE_LOGTYPE_TESTAPP2, RTE_LOG_EMERG); 52 53 /* log in error level */ 54 rte_log_set_global_level(RTE_LOG_ERR); 55 RTE_LOG(ERR, TESTAPP1, "error message\n"); 56 RTE_LOG(ERR, TESTAPP2, "error message (not displayed)\n"); 57 58 return 0; 59 } 60 61 static int 62 test_logs(void) 63 { 64 int logtype1, logtype2; 65 int ret; 66 67 printf("== dynamic log types\n"); 68 69 logtype1 = rte_log_register("logtype1"); 70 if (logtype1 < 0) { 71 printf("Cannot register logtype1\n"); 72 return -1; 73 } 74 logtype2 = rte_log_register("logtype2"); 75 if (logtype2 < 0) { 76 printf("Cannot register logtype2\n"); 77 return -1; 78 } 79 80 /* set logtype level low to so we can test global level */ 81 rte_log_set_level(logtype1, RTE_LOG_DEBUG); 82 rte_log_set_level(logtype2, RTE_LOG_DEBUG); 83 84 /* log in error level */ 85 rte_log_set_global_level(RTE_LOG_ERR); 86 rte_log(RTE_LOG_ERR, logtype1, "error message\n"); 87 rte_log(RTE_LOG_CRIT, logtype1, "critical message\n"); 88 89 /* log in critical level */ 90 rte_log_set_global_level(RTE_LOG_CRIT); 91 rte_log(RTE_LOG_ERR, logtype2, "error message (not displayed)\n"); 92 rte_log(RTE_LOG_CRIT, logtype2, "critical message\n"); 93 94 /* bump up single log type level above global to test it */ 95 rte_log_set_level(logtype2, RTE_LOG_EMERG); 96 97 /* log in error level */ 98 rte_log_set_global_level(RTE_LOG_ERR); 99 rte_log(RTE_LOG_ERR, logtype1, "error message\n"); 100 rte_log(RTE_LOG_ERR, logtype2, "error message (not displayed)\n"); 101 102 ret = test_legacy_logs(); 103 if (ret < 0) 104 return ret; 105 106 return 0; 107 } 108 109 REGISTER_TEST_COMMAND(logs_autotest, test_logs); 110