X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Funit%2Ftest_event_rule.c;h=f2514e158a5c956060e6663bc3558077aca3d69f;hb=695f70446965aeac8b1118bb08d572630c96114d;hp=e6a55bc49d3c0973ef4b5b9767b27e45d5c106a6;hpb=0a23a07d7db04d7e9f1fcf08a5824fccbf2b53da;p=lttng-tools.git diff --git a/tests/unit/test_event_rule.c b/tests/unit/test_event_rule.c index e6a55bc49..f2514e158 100644 --- a/tests/unit/test_event_rule.c +++ b/tests/unit/test_event_rule.c @@ -18,12 +18,14 @@ #include #include #include +#include +#include #include #include #include #include -#include -#include +#include +#include #include #include #include @@ -42,7 +44,7 @@ int lttng_opt_quiet = 1; int lttng_opt_verbose; int lttng_opt_mi; -#define NUM_TESTS 278 +#define NUM_TESTS 212 struct tracepoint_test { enum lttng_domain_type type; @@ -51,128 +53,10 @@ struct tracepoint_test { typedef const char *(*log_level_name_getter)(int log_level); -static -void test_event_rule_tracepoint_by_domain(const struct tracepoint_test *test) -{ - unsigned int count; - struct lttng_event_rule *tracepoint = NULL; - struct lttng_event_rule *tracepoint_from_buffer = NULL; - enum lttng_event_rule_status status; - enum lttng_domain_type domain_type, type; - const char *pattern="my_event_*"; - const char *filter="msg_id == 23 && size >= 2048"; - const char *tmp; - const char *name_pattern_exclusions[] = {"my_event_test1", "my_event_test2" ,"my_event_test3"}; - struct lttng_log_level_rule *log_level_rule = NULL; - const struct lttng_log_level_rule *log_level_rule_return = NULL; - struct lttng_payload payload; - - type = test->type; - diag("Testing domain %d.", type); - - lttng_payload_init(&payload); - - log_level_rule = lttng_log_level_rule_exactly_create(LTTNG_LOGLEVEL_INFO); - assert(log_level_rule); - - tracepoint = lttng_event_rule_tracepoint_create(type); - ok(tracepoint, "tracepoint object."); - - status = lttng_event_rule_tracepoint_get_domain_type(tracepoint, &domain_type); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "get tracepoint domain."); - ok(domain_type == type, "domain type got %d expected %d.", domain_type, type); - - status = lttng_event_rule_tracepoint_set_name_pattern(tracepoint, pattern); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting pattern."); - status = lttng_event_rule_tracepoint_get_name_pattern(tracepoint, &tmp); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting pattern."); - ok(!strncmp(pattern, tmp, strlen(pattern)), "pattern is equal."); - - status = lttng_event_rule_tracepoint_set_filter(tracepoint, filter); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting filter."); - status = lttng_event_rule_tracepoint_get_filter(tracepoint, &tmp); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting filter."); - ok(!strncmp(filter, tmp, strlen(filter)), "filter is equal."); - - status = lttng_event_rule_tracepoint_get_log_level_rule(tracepoint, &log_level_rule_return); - ok(status == LTTNG_EVENT_RULE_STATUS_UNSET, "get unset log level rule."); - - if (type != LTTNG_DOMAIN_KERNEL) { - status = lttng_event_rule_tracepoint_set_log_level_rule(tracepoint, log_level_rule); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting log level rule."); - status = lttng_event_rule_tracepoint_get_log_level_rule(tracepoint, &log_level_rule_return); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "get log level rule."); - } - - if (test->support_name_pattern_exclusion) { - int i; - - for (i = 0; i < 3; i++) { - status = lttng_event_rule_tracepoint_add_name_pattern_exclusion(tracepoint, name_pattern_exclusions[i]); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting name pattern exclusions \"%s\"", name_pattern_exclusions[i]); - } - - status = lttng_event_rule_tracepoint_get_name_pattern_exclusion_count(tracepoint, &count); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting name pattern exclusion count."); - ok(count == 3, "count is %d/3", count); - - for (i = 0; i < count; i++) { - status = lttng_event_rule_tracepoint_get_name_pattern_exclusion_at_index(tracepoint, i, &tmp); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting name pattern exclusion at index %d.", i); - ok(!strncmp(name_pattern_exclusions[i], tmp, strlen(name_pattern_exclusions[i])), "%s == %s.", tmp, name_pattern_exclusions[i]); - } - } else { - int i; - - for (i = 0; i < 3; i++) { - status = lttng_event_rule_tracepoint_add_name_pattern_exclusion(tracepoint, name_pattern_exclusions[i]); - ok(status == LTTNG_EVENT_RULE_STATUS_UNSUPPORTED, "setting name pattern exclusions unsupported \"%s\".", name_pattern_exclusions[i]); - } - - status = lttng_event_rule_tracepoint_get_name_pattern_exclusion_count(tracepoint, &count); - ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting name pattern exclusion count."); - ok(count == 0, "count is %d/0", count); - } - - ok(lttng_event_rule_serialize(tracepoint, &payload) == 0, "Serializing."); - - { - struct lttng_payload_view view = - lttng_payload_view_from_payload( - &payload, 0, -1); - - ok(lttng_event_rule_create_from_payload( - &view, &tracepoint_from_buffer) > 0, - "Deserializing."); - } - - ok(lttng_event_rule_is_equal(tracepoint, tracepoint_from_buffer), "serialized and from buffer are equal."); - - lttng_payload_reset(&payload); - lttng_event_rule_destroy(tracepoint); - lttng_event_rule_destroy(tracepoint_from_buffer); - lttng_log_level_rule_destroy(log_level_rule); -} - -static -void test_event_rule_tracepoint(void) -{ - int i; - struct lttng_event_rule *tracepoint = NULL; - struct tracepoint_test tests[] = {{LTTNG_DOMAIN_JUL, false}, - {LTTNG_DOMAIN_KERNEL, false}, - {LTTNG_DOMAIN_LOG4J, false}, - {LTTNG_DOMAIN_PYTHON, false}, - {LTTNG_DOMAIN_UST, true}}; - - diag("Testing lttng_event_rule_tracepoint."); - tracepoint = lttng_event_rule_tracepoint_create(LTTNG_DOMAIN_NONE); - ok(!tracepoint, "Domain type restriction on create."); - - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { - test_event_rule_tracepoint_by_domain(&tests[i]); - } -} +typedef struct lttng_event_rule *(*event_rule_create)(void); +typedef enum lttng_event_rule_status (*event_rule_set_log_level)( + struct lttng_event_rule *rule, + const struct lttng_log_level_rule *log_level_rule); static void test_event_rule_kernel_tracepoint(void) @@ -366,6 +250,201 @@ static void test_event_rule_syscall(void) lttng_event_rule_destroy(syscall_from_buffer); } +static +void test_event_rule_jul_logging(void) +{ + struct lttng_event_rule *jul_logging = NULL; + struct lttng_event_rule *jul_logging_from_buffer = NULL; + enum lttng_event_rule_status status; + const char *pattern="my_event_*"; + const char *filter="msg_id == 23 && size >= 2048"; + const char *tmp; + struct lttng_log_level_rule *log_level_rule = NULL; + const struct lttng_log_level_rule *log_level_rule_return = NULL; + struct lttng_payload payload; + + diag("Testing lttng_event_rule_user_jul_logging."); + + lttng_payload_init(&payload); + + log_level_rule = lttng_log_level_rule_exactly_create(LTTNG_LOGLEVEL_INFO); + assert(log_level_rule); + + jul_logging = lttng_event_rule_jul_logging_create(); + ok(jul_logging, "jul_logging object."); + + status = lttng_event_rule_jul_logging_set_name_pattern(jul_logging, pattern); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting pattern."); + status = lttng_event_rule_jul_logging_get_name_pattern(jul_logging, &tmp); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting pattern."); + ok(!strncmp(pattern, tmp, strlen(pattern)), "pattern is equal."); + + status = lttng_event_rule_jul_logging_set_filter(jul_logging, filter); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting filter."); + status = lttng_event_rule_jul_logging_get_filter(jul_logging, &tmp); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting filter."); + ok(!strncmp(filter, tmp, strlen(filter)), "filter is equal."); + + status = lttng_event_rule_jul_logging_get_log_level_rule(jul_logging, &log_level_rule_return); + ok(status == LTTNG_EVENT_RULE_STATUS_UNSET, "get unset log level rule."); + + status = lttng_event_rule_jul_logging_set_log_level_rule( + jul_logging, log_level_rule); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting log level rule."); + status = lttng_event_rule_jul_logging_get_log_level_rule( + jul_logging, &log_level_rule_return); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "get log level rule."); + + ok(lttng_event_rule_serialize(jul_logging, &payload) == 0, "Serializing."); + + { + struct lttng_payload_view view = + lttng_payload_view_from_payload( + &payload, 0, -1); + + ok(lttng_event_rule_create_from_payload( + &view, &jul_logging_from_buffer) > 0, + "Deserializing."); + } + + ok(lttng_event_rule_is_equal(jul_logging, jul_logging_from_buffer), "serialized and from buffer are equal."); + + lttng_payload_reset(&payload); + lttng_event_rule_destroy(jul_logging); + lttng_event_rule_destroy(jul_logging_from_buffer); + lttng_log_level_rule_destroy(log_level_rule); +} + +static +void test_event_rule_log4j_logging(void) +{ + struct lttng_event_rule *log4j_logging = NULL; + struct lttng_event_rule *log4j_logging_from_buffer = NULL; + enum lttng_event_rule_status status; + const char *pattern="my_event_*"; + const char *filter="msg_id == 23 && size >= 2048"; + const char *tmp; + struct lttng_log_level_rule *log_level_rule = NULL; + const struct lttng_log_level_rule *log_level_rule_return = NULL; + struct lttng_payload payload; + + diag("Testing lttng_event_rule_user_log4j_logging."); + + lttng_payload_init(&payload); + + log_level_rule = lttng_log_level_rule_exactly_create(LTTNG_LOGLEVEL_INFO); + assert(log_level_rule); + + log4j_logging = lttng_event_rule_log4j_logging_create(); + ok(log4j_logging, "log4j_logging object."); + + status = lttng_event_rule_log4j_logging_set_name_pattern(log4j_logging, pattern); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting pattern."); + status = lttng_event_rule_log4j_logging_get_name_pattern(log4j_logging, &tmp); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting pattern."); + ok(!strncmp(pattern, tmp, strlen(pattern)), "pattern is equal."); + + status = lttng_event_rule_log4j_logging_set_filter(log4j_logging, filter); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting filter."); + status = lttng_event_rule_log4j_logging_get_filter(log4j_logging, &tmp); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting filter."); + ok(!strncmp(filter, tmp, strlen(filter)), "filter is equal."); + + status = lttng_event_rule_log4j_logging_get_log_level_rule(log4j_logging, &log_level_rule_return); + ok(status == LTTNG_EVENT_RULE_STATUS_UNSET, "get unset log level rule."); + + status = lttng_event_rule_log4j_logging_set_log_level_rule( + log4j_logging, log_level_rule); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting log level rule."); + status = lttng_event_rule_log4j_logging_get_log_level_rule( + log4j_logging, &log_level_rule_return); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "get log level rule."); + + ok(lttng_event_rule_serialize(log4j_logging, &payload) == 0, "Serializing."); + + { + struct lttng_payload_view view = + lttng_payload_view_from_payload( + &payload, 0, -1); + + ok(lttng_event_rule_create_from_payload( + &view, &log4j_logging_from_buffer) > 0, + "Deserializing."); + } + + ok(lttng_event_rule_is_equal(log4j_logging, log4j_logging_from_buffer), "serialized and from buffer are equal."); + + lttng_payload_reset(&payload); + lttng_event_rule_destroy(log4j_logging); + lttng_event_rule_destroy(log4j_logging_from_buffer); + lttng_log_level_rule_destroy(log_level_rule); +} + +static +void test_event_rule_python_logging(void) +{ + struct lttng_event_rule *python_logging = NULL; + struct lttng_event_rule *python_logging_from_buffer = NULL; + enum lttng_event_rule_status status; + const char *pattern="my_event_*"; + const char *filter="msg_id == 23 && size >= 2048"; + const char *tmp; + struct lttng_log_level_rule *log_level_rule = NULL; + const struct lttng_log_level_rule *log_level_rule_return = NULL; + struct lttng_payload payload; + + diag("Testing lttng_event_rule_user_python_logging."); + + lttng_payload_init(&payload); + + log_level_rule = lttng_log_level_rule_exactly_create(LTTNG_LOGLEVEL_INFO); + assert(log_level_rule); + + python_logging = lttng_event_rule_python_logging_create(); + ok(python_logging, "python_logging object."); + + status = lttng_event_rule_python_logging_set_name_pattern(python_logging, pattern); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting pattern."); + status = lttng_event_rule_python_logging_get_name_pattern(python_logging, &tmp); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting pattern."); + ok(!strncmp(pattern, tmp, strlen(pattern)), "pattern is equal."); + + status = lttng_event_rule_python_logging_set_filter(python_logging, filter); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting filter."); + status = lttng_event_rule_python_logging_get_filter(python_logging, &tmp); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "getting filter."); + ok(!strncmp(filter, tmp, strlen(filter)), "filter is equal."); + + status = lttng_event_rule_python_logging_get_log_level_rule(python_logging, &log_level_rule_return); + ok(status == LTTNG_EVENT_RULE_STATUS_UNSET, "get unset log level rule."); + + status = lttng_event_rule_python_logging_set_log_level_rule( + python_logging, log_level_rule); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "setting log level rule."); + status = lttng_event_rule_python_logging_get_log_level_rule( + python_logging, &log_level_rule_return); + ok(status == LTTNG_EVENT_RULE_STATUS_OK, "get log level rule."); + + ok(lttng_event_rule_serialize(python_logging, &payload) == 0, "Serializing."); + + { + struct lttng_payload_view view = + lttng_payload_view_from_payload( + &payload, 0, -1); + + ok(lttng_event_rule_create_from_payload( + &view, &python_logging_from_buffer) > 0, + "Deserializing."); + } + + ok(lttng_event_rule_is_equal(python_logging, python_logging_from_buffer), "serialized and from buffer are equal."); + + lttng_payload_reset(&payload); + lttng_event_rule_destroy(python_logging); + lttng_event_rule_destroy(python_logging_from_buffer); + lttng_log_level_rule_destroy(log_level_rule); +} + static void test_event_rule_userspace_probe(void) { struct lttng_event_rule *uprobe = NULL; @@ -514,6 +593,7 @@ static void test_event_rule_kernel_probe(void) static void test_set_event_rule_log_level_rules( struct lttng_event_rule *event_rule, + event_rule_set_log_level set_log_level, int log_level, enum lttng_event_rule_status *exactly_status, enum lttng_event_rule_status *as_severe_status) @@ -524,21 +604,22 @@ static void test_set_event_rule_log_level_rules( log_level); assert(log_level_rule); - *as_severe_status = lttng_event_rule_tracepoint_set_log_level_rule( + *as_severe_status = set_log_level( event_rule, log_level_rule); lttng_log_level_rule_destroy(log_level_rule); log_level_rule = lttng_log_level_rule_exactly_create(log_level); assert(log_level_rule); - *exactly_status = lttng_event_rule_tracepoint_set_log_level_rule( + *exactly_status = set_log_level( event_rule, log_level_rule); lttng_log_level_rule_destroy(log_level_rule); } -static void test_event_rule_log_level_generic(const char *domain_name, - enum lttng_domain_type domain, +static void test_event_rule_log_level_generic(enum lttng_event_rule_type event_rule_type, log_level_name_getter get_log_level_name, + event_rule_create create_event_rule, + event_rule_set_log_level set_log_level, const int tagged_log_level_values[], size_t tagged_log_level_values_count, const int valid_log_level_values[], @@ -547,27 +628,30 @@ static void test_event_rule_log_level_generic(const char *domain_name, size_t invalid_log_level_values_count) { size_t i; - struct lttng_event_rule *tracepoint_rule; + struct lttng_event_rule *rule; enum lttng_event_rule_status er_exactly_status, er_as_severe_status; + const char *event_rule_type_str = lttng_event_rule_type_str(event_rule_type); - diag("Test %s event rule + log level rule", domain_name); - tracepoint_rule = lttng_event_rule_tracepoint_create(domain); - assert(tracepoint_rule); + + diag("Test %s event rule + log level rule", event_rule_type_str); + + rule = create_event_rule(); + assert(rule); for (i = 0; i < tagged_log_level_values_count; i++) { const int tagged_log_level_value = tagged_log_level_values[i]; - test_set_event_rule_log_level_rules(tracepoint_rule, + test_set_event_rule_log_level_rules(rule, set_log_level, tagged_log_level_value, &er_exactly_status, &er_as_severe_status); ok(er_exactly_status == LTTNG_EVENT_RULE_STATUS_OK, - "Log level rule \"exactly\" accepted by %s tracepoint event rule: level = %s", - domain_name, + "Log level rule \"exactly\" accepted by %s event rule: level = %s", + event_rule_type_str, get_log_level_name( tagged_log_level_value)); ok(er_as_severe_status == LTTNG_EVENT_RULE_STATUS_OK, - "Log level rule \"as least as severe as\" accepted by %s tracepoint event rule: level = %s", - domain_name, + "Log level rule \"as least as severe as\" accepted by %s event rule: level = %s", + event_rule_type_str, get_log_level_name( tagged_log_level_value)); } @@ -575,36 +659,36 @@ static void test_event_rule_log_level_generic(const char *domain_name, for (i = 0; i < valid_log_level_values_count; i++) { const int valid_log_level_value = valid_log_level_values[i]; - test_set_event_rule_log_level_rules(tracepoint_rule, + test_set_event_rule_log_level_rules(rule, set_log_level, valid_log_level_value, &er_exactly_status, &er_as_severe_status); ok(er_exactly_status == LTTNG_EVENT_RULE_STATUS_OK, - "Log level rule \"exactly\" accepted by %s tracepoint event rule: level = %d", - domain_name, + "Log level rule \"exactly\" accepted by %s event rule: level = %d", + event_rule_type_str, valid_log_level_value); ok(er_as_severe_status == LTTNG_EVENT_RULE_STATUS_OK, - "Log level rule \"as least as severe as\" accepted by %s tracepoint event rule: level = %d", - domain_name, + "Log level rule \"as least as severe as\" accepted by %s event rule: level = %d", + event_rule_type_str, valid_log_level_value); } for (i = 0; i < invalid_log_level_values_count; i++) { const int invalid_log_level_value = invalid_log_level_values[i]; - test_set_event_rule_log_level_rules(tracepoint_rule, + test_set_event_rule_log_level_rules(rule, set_log_level, invalid_log_level_value, &er_exactly_status, &er_as_severe_status); ok(er_exactly_status == LTTNG_EVENT_RULE_STATUS_INVALID, - "Log level rule \"exactly\" rejected by %s tracepoint event rule: level = %d", - domain_name, + "Log level rule \"exactly\" rejected by %s event rule: level = %d", + event_rule_type_str, invalid_log_level_value); ok(er_as_severe_status == LTTNG_EVENT_RULE_STATUS_INVALID, - "Log level rule \"as least as severe as\" rejected by %s tracepoint event rule: level = %d", - domain_name, + "Log level rule \"as least as severe as\" rejected by %s event rule: level = %d", + event_rule_type_str, invalid_log_level_value); } - lttng_event_rule_destroy(tracepoint_rule); + lttng_event_rule_destroy(rule); } static void test_event_rule_log_level_ust(void) @@ -633,10 +717,12 @@ static void test_event_rule_log_level_ust(void) LTTNG_LOGLEVEL_EMERG - 1, }; - test_event_rule_log_level_generic("user space", LTTNG_DOMAIN_UST, - loglevel_value_to_name, tagged_log_level_values, - ARRAY_SIZE(tagged_log_level_values), - NULL, 0, + test_event_rule_log_level_generic(LTTNG_EVENT_RULE_TYPE_USER_TRACEPOINT, + loglevel_value_to_name, + lttng_event_rule_user_tracepoint_create, + lttng_event_rule_user_tracepoint_set_log_level_rule, + tagged_log_level_values, + ARRAY_SIZE(tagged_log_level_values), NULL, 0, invalid_log_level_values, ARRAY_SIZE(invalid_log_level_values)); } @@ -660,8 +746,11 @@ static void test_event_rule_log_level_jul(void) 1995 }; - test_event_rule_log_level_generic("Java Util Logging", LTTNG_DOMAIN_JUL, - loglevel_jul_value_to_name, tagged_log_level_values, + test_event_rule_log_level_generic(LTTNG_EVENT_RULE_TYPE_JUL_LOGGING, + loglevel_jul_value_to_name, + lttng_event_rule_jul_logging_create, + lttng_event_rule_jul_logging_set_log_level_rule, + tagged_log_level_values, ARRAY_SIZE(tagged_log_level_values), valid_log_level_values, ARRAY_SIZE(valid_log_level_values), NULL, 0); @@ -685,8 +774,11 @@ static void test_event_rule_log_level_log4j(void) 1995 }; - test_event_rule_log_level_generic("Log4j", LTTNG_DOMAIN_LOG4J, - loglevel_log4j_value_to_name, tagged_log_level_values, + test_event_rule_log_level_generic(LTTNG_EVENT_RULE_TYPE_LOG4J_LOGGING, + loglevel_log4j_value_to_name, + lttng_event_rule_log4j_logging_create, + lttng_event_rule_log4j_logging_set_log_level_rule, + tagged_log_level_values, ARRAY_SIZE(tagged_log_level_values), valid_log_level_values, ARRAY_SIZE(valid_log_level_values), NULL, 0); @@ -709,8 +801,11 @@ static void test_event_rule_log_level_python(void) -657, }; - test_event_rule_log_level_generic("Python", LTTNG_DOMAIN_PYTHON, - loglevel_python_value_to_name, tagged_log_level_values, + test_event_rule_log_level_generic(LTTNG_EVENT_RULE_TYPE_PYTHON_LOGGING, + loglevel_python_value_to_name, + lttng_event_rule_python_logging_create, + lttng_event_rule_python_logging_set_log_level_rule, + tagged_log_level_values, ARRAY_SIZE(tagged_log_level_values), valid_log_level_values, ARRAY_SIZE(valid_log_level_values), @@ -720,12 +815,14 @@ static void test_event_rule_log_level_python(void) int main(int argc, const char *argv[]) { plan_tests(NUM_TESTS); - test_event_rule_tracepoint(); test_event_rule_kernel_tracepoint(); test_event_rule_user_tracepoint(); test_event_rule_syscall(); test_event_rule_userspace_probe(); test_event_rule_kernel_probe(); + test_event_rule_log4j_logging(); + test_event_rule_jul_logging(); + test_event_rule_python_logging(); test_event_rule_log_level_ust(); test_event_rule_log_level_jul(); test_event_rule_log_level_log4j();