void __test_cursors(Journald *journald) { gchar *cursor; gint result = journald_get_cursor(journald, &cursor); assert_string(cursor, "test_data1", ASSERTION_ERROR("Bad cursor fetched"));\ g_free(cursor); result = journald_next(journald); assert_gint(result, 1, ASSERTION_ERROR("Bad next step result")); result = journald_get_cursor(journald, &cursor); assert_string(cursor, "test_data2", ASSERTION_ERROR("Bad cursor fetched")); g_free(cursor); result = journald_next(journald); assert_gint(result, 0, ASSERTION_ERROR("Should not contain more elements")); result = journald_seek_cursor(journald, "test_data1"); assert_gint(result, 0, ASSERTION_ERROR("Should find cursor")); result = journald_next(journald); assert_gint(result, 1, ASSERTION_ERROR("Bad next step result")); result = journald_get_cursor(journald, &cursor); assert_string(cursor, "test_data1", ASSERTION_ERROR("Bad cursor fetched")); g_free(cursor); result = journald_seek_cursor(journald, "test_data2"); assert_gint(result, 0, ASSERTION_ERROR("Should find cursor")); result = journald_next(journald); assert_gint(result, 1, ASSERTION_ERROR("Bad next step result")); result = journald_get_cursor(journald, &cursor); assert_string(cursor, "test_data2", ASSERTION_ERROR("Bad cursor fetched")); g_free(cursor); }
void __test_cursors(Journald *journald) { gchar *cursor; journald_seek_head(journald); journald_next(journald); gint result = journald_get_cursor(journald, &cursor); cr_assert_str_eq(cursor, "test_data1", "%s", "Bad cursor fetched"); \ g_free(cursor); result = journald_next(journald); cr_assert_eq(result, 1, "%s", "Bad next step result"); result = journald_get_cursor(journald, &cursor); cr_assert_str_eq(cursor, "test_data2", "%s", "Bad cursor fetched"); g_free(cursor); result = journald_next(journald); cr_assert_eq(result, 0, "%s", "Should not contain more elements"); result = journald_seek_cursor(journald, "test_data1"); cr_assert_eq(result, 0, "%s", "Should find cursor"); result = journald_next(journald); cr_assert_eq(result, 1, "%s", "Bad next step result"); result = journald_get_cursor(journald, &cursor); cr_assert_str_eq(cursor, "test_data1", "%s", "Bad cursor fetched"); g_free(cursor); result = journald_seek_cursor(journald, "test_data2"); cr_assert_eq(result, 0, "%s", "Should find cursor"); result = journald_next(journald); cr_assert_eq(result, 1, "%s", "Bad next step result"); result = journald_get_cursor(journald, &cursor); cr_assert_str_eq(cursor, "test_data2", "%s", "Bad cursor fetched"); g_free(cursor); }
static inline gboolean _seek_to_saved_state(JournalReader *self) { JournalReaderState *state = persist_state_map_entry(self->persist_state, self->persist_handle); gint rc = journald_seek_cursor(self->journal, state->cursor); persist_state_unmap_entry(self->persist_state, self->persist_handle); if (rc != 0) { msg_warning("Failed to seek journal to the saved cursor position", evt_tag_str("cursor", state->cursor), evt_tag_errno("error", errno)); return _seek_to_head(self); } else { msg_debug("Seeking the journal to the last cursor position", evt_tag_str("cursor", state->cursor)); } journald_next(self->journal); return TRUE; }