void test_journald_helper() { Journald *journald = journald_mock_new(); journald_open(journald, 0); MockEntry *entry = mock_entry_new("test_data1"); mock_entry_add_data(entry, "MESSAGE=test message"); mock_entry_add_data(entry, "KEY=VALUE"); mock_entry_add_data(entry, "HOST=testhost"); journald_mock_add_entry(journald, entry); journald_seek_head(journald); journald_next(journald); GHashTable *result = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); journald_foreach_data(journald, __helper_test, result); gchar *message = g_hash_table_lookup(result, "MESSAGE"); gchar *key = g_hash_table_lookup(result, "KEY"); gchar *host = g_hash_table_lookup(result, "HOST"); assert_string(message, "test message", ASSERTION_ERROR("Bad item")); assert_string(key, "VALUE", ASSERTION_ERROR("Bad item")); assert_string(host, "testhost", ASSERTION_ERROR("Bad item")); journald_close(journald); journald_free(journald); g_hash_table_unref(result); }
Test(systemd_journal, test_journald_helper) { const gchar *persist_file = "test_systemd_journal2.persist"; _init_cfg_with_persist_file(persist_file); Journald *journald = journald_mock_new(); journald_open(journald, 0); MockEntry *entry = mock_entry_new("test_data1"); mock_entry_add_data(entry, "MESSAGE=test message"); mock_entry_add_data(entry, "KEY=VALUE"); mock_entry_add_data(entry, "HOST=testhost"); journald_mock_add_entry(journald, entry); journald_seek_head(journald); journald_next(journald); GHashTable *result = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); journald_foreach_data(journald, __helper_test, result); gchar *message = g_hash_table_lookup(result, "MESSAGE"); gchar *key = g_hash_table_lookup(result, "KEY"); gchar *host = g_hash_table_lookup(result, "HOST"); cr_assert_str_eq(message, "test message", "%s", "Bad item"); cr_assert_str_eq(key, "VALUE", "%s", "Bad item"); cr_assert_str_eq(host, "testhost", "%s", "Bad item"); journald_close(journald); journald_free(journald); g_hash_table_unref(result); _deinit_cfg(persist_file); }
void test_journald_mock() { Journald *journald = journald_mock_new(); gint result = journald_open(journald, 0); assert_gint(result, 0, ASSERTION_ERROR("Can't open journald mock")); __test_seeks(journald); __test_cursors(journald); __test_fd_handling(journald); journald_close(journald); journald_free(journald); }
int main(int argc, char* argv[]) { journald_client* j; char buf[4096]; long rd; if (argc != 3) return 1; j = journald_open(argv[1], argv[2]); if (!j) return 2; for(;;) { rd = read(0, buf, sizeof buf); if (rd == -1) return 3; if (!rd) break; if (!journald_write(j, buf, rd)) return 4; } if (!journald_close(j)) return 5; return 0; }
static gboolean _init(LogPipe *s) { JournalReader *self = (JournalReader *)s; if (journal_reader_initialized) { msg_error("The configuration must not contain more than one systemd-journal() source", NULL); return FALSE; } if (!log_source_init(s)) return FALSE; gint res = journald_open(self->journal, SD_JOURNAL_LOCAL_ONLY); if (res < 0) { msg_error("Error opening the journal", evt_tag_errno("error", errno), NULL); return FALSE; } if (!_set_starting_position(self)) { journald_close(self->journal); return FALSE; } if (!_add_poll_events(self)) { return FALSE; } self->immediate_check = TRUE; journal_reader_initialized = TRUE; _update_watches(self); iv_event_register(&self->schedule_wakeup); return TRUE; }
Test(systemd_journal, test_journald_mock) { const gchar *persist_file = "test_systemd_journal3.persist"; _init_cfg_with_persist_file(persist_file); Journald *journald = journald_mock_new(); gint result = journald_open(journald, 0); cr_assert_eq(result, 0, "%s", "Can't open journald mock"); __test_seeks(journald); __test_cursors(journald); __test_fd_handling(journald); journald_close(journald); journald_free(journald); _deinit_cfg(persist_file); }