void test_set_field_cloned() { LogRewrite *test_rewrite = create_rewrite_rule("groupset(\"value\" values(\"field1\") condition( program(\"program\") ) );"); LogPipe *cloned_rule = log_pipe_clone(&test_rewrite->super); assert_true(cloned_rule != NULL, ASSERTION_ERROR("Can't cloned the rewrite")); log_pipe_unref(cloned_rule); cfg_free(configuration); }
void test_reference_on_condition_cloned() { LogRewrite *test_rewrite = create_rewrite_rule("set(\"00100\", value(\"device_id\") condition(program(\"ARCGIS\")));"); LogPipe *cloned_rule = log_pipe_clone(&test_rewrite->super); assert_guint32(test_rewrite->condition->ref_cnt, 2, ASSERTION_ERROR("Bad reference number of condition")); log_pipe_unref(cloned_rule); assert_guint32(test_rewrite->condition->ref_cnt, 1, ASSERTION_ERROR("Bad reference number of condition")); cfg_free(configuration); }
static LogMessage * parse_kv_into_log_message_no_check(const gchar *kv) { LogMessage *msg; LogPathOptions path_options = LOG_PATH_OPTIONS_INIT; LogParser *cloned_parser; cloned_parser = (LogParser *) log_pipe_clone(&kv_parser->super); msg = log_msg_new_empty(); if (!log_parser_process(cloned_parser, &msg, &path_options, kv, strlen(kv))) { log_msg_unref(msg); log_pipe_unref(&cloned_parser->super); return NULL; } log_pipe_unref(&cloned_parser->super); return msg; }
static LogMessage * parse_geoip_into_log_message_no_check(const gchar *input) { LogMessage *msg; LogPathOptions path_options = LOG_PATH_OPTIONS_INIT; LogParser *cloned_parser; gboolean success; cloned_parser = (LogParser *) log_pipe_clone(&geoip_parser->super); log_pipe_init(&cloned_parser->super); msg = log_msg_new_empty(); log_msg_set_value(msg, LM_V_MESSAGE, input, -1); success = log_parser_process_message(cloned_parser, &msg, &path_options); if (!success) { log_msg_unref(msg); msg = NULL; } log_pipe_deinit(&cloned_parser->super); log_pipe_unref(&cloned_parser->super); return msg; }
int testcase(gchar *msg, guint parse_flags, gint max_columns, gint dialect, guint32 flags, gchar *delimiters, gchar *quotes, gchar *null_value, const gchar *string_delims[], gchar *first_value, ...) { LogMessage *logmsg; LogParser *p, *pclone; gchar *expected_value; gint i; va_list va; NVTable *nvtable; const gchar *column_array[] = { "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13", "C14", "C15", "C16", "C17", "C18", "C19", "C20", "C21", "C22", "C23", "C24", "C25", "C26", "C27", "C28", "C29", "C30", NULL }; gboolean success; if (max_columns != -1) { g_assert(max_columns < (sizeof(column_array) / sizeof(column_array[0]))); column_array[max_columns] = NULL; } parse_options.flags = parse_flags; logmsg = log_msg_new(msg, strlen(msg), NULL, &parse_options); p = csv_parser_new(NULL); csv_scanner_options_set_flags(csv_parser_get_scanner_options(p), flags); csv_scanner_options_set_dialect(csv_parser_get_scanner_options(p), dialect); csv_scanner_options_set_columns(csv_parser_get_scanner_options(p), string_array_to_list(column_array)); if (delimiters) csv_scanner_options_set_delimiters(csv_parser_get_scanner_options(p), delimiters); if (quotes) csv_scanner_options_set_quote_pairs(csv_parser_get_scanner_options(p), quotes); if (null_value) csv_scanner_options_set_null_value(csv_parser_get_scanner_options(p), null_value); if (string_delims) csv_scanner_options_set_string_delimiters(csv_parser_get_scanner_options(p), string_array_to_list(string_delims)); pclone = (LogParser *) log_pipe_clone(&p->super); log_pipe_unref(&p->super); nvtable = nv_table_ref(logmsg->payload); success = log_parser_process(pclone, &logmsg, NULL, log_msg_get_value(logmsg, LM_V_MESSAGE, NULL), -1); nv_table_unref(nvtable); if (success && !first_value) { fprintf(stderr, "unexpected match; msg=%s\n", msg); exit(1); } if (!success && first_value) { fprintf(stderr, "unexpected non-match; msg=%s\n", msg); exit(1); } log_pipe_unref(&pclone->super); va_start(va, first_value); expected_value = first_value; i = 0; while (expected_value && column_array[i]) { const gchar *value; gssize value_len; value = log_msg_get_value_by_name(logmsg, column_array[i], &value_len); if (expected_value && expected_value[0]) { TEST_ASSERT(value && value[0], "expected value set, but no actual value"); TEST_ASSERT(strlen(expected_value) == value_len, "value length doesn't match actual length"); TEST_ASSERT(strncmp(value, expected_value, value_len) == 0, "value does not match expected value"); } else { TEST_ASSERT(!(value && value[0]), "expected unset, but actual value present"); } expected_value = va_arg(va, char *); i++; } log_msg_unref(logmsg); return 1; }