X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=tests%2Funit%2Ftest_event_rule.c;h=4a6740b6fefefd5cf40eaaef737f79ad02dbd812;hb=f30f4bf468bfc6cb30344cd6a2424f8e2b80c34a;hp=5ef1bf992b55476ea429496e44ab1d449a5dd435;hpb=08662c9bc42734d841537b67e55cc9dca505ec22;p=lttng-tools.git diff --git a/tests/unit/test_event_rule.c b/tests/unit/test_event_rule.c index 5ef1bf992..4a6740b6f 100644 --- a/tests/unit/test_event_rule.c +++ b/tests/unit/test_event_rule.c @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include #include @@ -44,7 +46,7 @@ int lttng_opt_quiet = 1; int lttng_opt_verbose; int lttng_opt_mi; -#define NUM_TESTS 304 +#define NUM_TESTS 317 struct tracepoint_test { enum lttng_domain_type type; @@ -498,6 +500,71 @@ void test_event_rule_log4j_logging(void) 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; @@ -860,6 +927,7 @@ int main(int argc, const char *argv[]) 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();