JNIEXPORT jstring JNICALL Java_org_syslog_1ng_LogMessage_getValue(JNIEnv *env, jobject obj, jlong handle, jstring name) { LogMessage *msg = (LogMessage *)handle; const gchar *value; const char *name_str = (*env)->GetStringUTFChars(env, name, NULL); if (name_str == NULL) { return NULL; } value = log_msg_get_value_by_name(msg, name_str, NULL); (*env)->ReleaseStringUTFChars(env, name, name_str); if (value) { return (*env)->NewStringUTF(env, value); } else { return NULL; } }
static const gchar * _get_value_from_message(JournalReaderOptions *options, LogMessage *msg, gchar *key, gssize *value_length) { gchar name_with_prefix[256]; _format_value_name_with_prefix(name_with_prefix, sizeof(name_with_prefix), options, key); return log_msg_get_value_by_name(msg, name_with_prefix, value_length); }
void __test_other_has_prefix(TestCase *self, LogMessage *msg) { gchar *requested_name = g_strdup_printf("%s%s", (gchar *) self->user_data, "_CMDLINE"); gssize value_len; const gchar *value = log_msg_get_value_by_name(msg, requested_name, &value_len); cr_assert_str_eq(value, "sshd: foo_user [priv]", "%s", "Bad value for prefixed key"); g_free(requested_name); }
void assert_log_message_sdata_pairs(LogMessage *message, const gchar *expected_sd_pairs[][2]) { gint i; for (i = 0; expected_sd_pairs && expected_sd_pairs[i][0] != NULL;i++) { const gchar *actual_value = log_msg_get_value_by_name(message, expected_sd_pairs[i][0], NULL); assert_string(actual_value, expected_sd_pairs[i][1], NULL); } }
void assert_log_message_sdata_pairs(LogMessage *message, struct sdata_pair *expected_sd_pairs) { gint i; for (i = 0; expected_sd_pairs && expected_sd_pairs[i].name != NULL; i++) { const gchar *actual_value = log_msg_get_value_by_name(message, expected_sd_pairs[i].name, NULL); cr_assert_str_eq(actual_value, expected_sd_pairs[i].value); } }
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; }