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); }
void add_mock_entries(gpointer user_data) { Journald *journald = user_data; MockEntry *entry = mock_entry_new("test_data3"); mock_entry_add_data(entry, "MESSAGE=test message3"); mock_entry_add_data(entry, "KEY=VALUE3"); mock_entry_add_data(entry, "HOST=testhost3"); journald_mock_add_entry(journald, entry); entry = mock_entry_new("test_data4"); mock_entry_add_data(entry, "MESSAGE=test message4"); mock_entry_add_data(entry, "KEY=VALUE4"); mock_entry_add_data(entry, "HOST=testhost4"); journald_mock_add_entry(journald, entry); }
MockEntry * __create_real_entry(Journald *journal, gchar *cursor_name) { MockEntry *entry = mock_entry_new(cursor_name); mock_entry_add_data(entry, "PRIORITY=6"); mock_entry_add_data(entry, "_UID=0"); mock_entry_add_data(entry, "_GID=0"); mock_entry_add_data(entry, "_BOOT_ID=90129174f7d742e6b4d06eb846e94c87"); mock_entry_add_data(entry, "_MACHINE_ID=d0dc49b7a2784e18b3689d9d9c35f47d"); mock_entry_add_data(entry, "_HOSTNAME=localhost.localdomain"); mock_entry_add_data(entry, "_CAP_EFFECTIVE=1fffffffff"); mock_entry_add_data(entry, "_TRANSPORT=syslog"); mock_entry_add_data(entry, "SYSLOG_FACILITY=10"); mock_entry_add_data(entry, "SYSLOG_IDENTIFIER=sshd"); mock_entry_add_data(entry, "_COMM=sshd"); mock_entry_add_data(entry, "_EXE=/usr/sbin/sshd"); mock_entry_add_data(entry, "_SELINUX_CONTEXT=system_u:system_r:sshd_t:s0-s0:c0.c1023"); mock_entry_add_data(entry, "_AUDIT_LOGINUID=1000"); mock_entry_add_data(entry, "_SYSTEMD_OWNER_UID=1000"); mock_entry_add_data(entry, "_SYSTEMD_SLICE=user-1000.slice"); mock_entry_add_data(entry, "SYSLOG_PID=2240"); mock_entry_add_data(entry, "_PID=2240"); mock_entry_add_data(entry, "_CMDLINE=sshd: foo_user [priv]"); mock_entry_add_data(entry, "MESSAGE=pam_unix(sshd:session): session opened for user foo_user by (uid=0)"); mock_entry_add_data(entry, "_AUDIT_SESSION=2"); mock_entry_add_data(entry, "_SYSTEMD_CGROUP=/user.slice/user-1000.slice/session-2.scope"); mock_entry_add_data(entry, "_SYSTEMD_SESSION=2"); mock_entry_add_data(entry, "_SYSTEMD_UNIT=session-2.scope"); mock_entry_add_data(entry, "_SOURCE_REALTIME_TIMESTAMP=1408967385496986"); return entry; }
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); }
MockEntry * __create_dummy_entry(Journald *journal, gchar *cursor_name) { MockEntry *entry = mock_entry_new(cursor_name); mock_entry_add_data(entry, "MESSAGE=Dummy message"); mock_entry_add_data(entry, "_PID=2345"); mock_entry_add_data(entry, "_COMM=dummy"); return entry; }
void _test_program_field_init(TestCase *self, TestSource *src, Journald *journal, JournalReader *reader, JournalReaderOptions *options) { MockEntry *entry = mock_entry_new("test _COMM first win"); mock_entry_add_data(entry, "_COMM=comm_program"); mock_entry_add_data(entry, "SYSLOG_IDENTIFIER=syslog_program"); journald_mock_add_entry(journal, entry); entry = mock_entry_new("test _COMM second win"); mock_entry_add_data(entry, "SYSLOG_IDENTIFIER=syslog_program"); mock_entry_add_data(entry, "_COMM=comm_program"); journald_mock_add_entry(journal, entry); entry = mock_entry_new("no SYSLOG_IDENTIFIER"); mock_entry_add_data(entry, "_COMM=comm_program"); journald_mock_add_entry(journal, entry); self->user_data = journal; }