void test_persist_state_open_failes_when_file_open_fails(void) { PersistState *state; unlink("test_invalid_magic.persist"); state = persist_state_new("test_invalid_magic.persist"); assert_false(persist_state_start_dump(state), "persist_state_start_dump returned with success when persist file open failed!"); cancel_and_destroy_persist_state(state); }
int main(int argc, char** argv) { struct arguments args; set_default_args(&args); if (parse_args(argc, argv, &args)) { return 1; } PersistEntryHandle handle; struct journald_state* journald_state = NULL; msg_init(TRUE); PersistState* state = persist_state_new(args.filename); gsize state_size; guint8 persist_version; persist_state_start_dump(state); switch (args.action) { case LIST: persist_state_foreach_entry(state, &handle_entry, NULL); break; case SHOW_JOURNALD_CURSOR: handle = persist_state_lookup_entry(state, systemd_journal, &state_size, &persist_version); if (handle == 0) break; journald_state = persist_state_map_entry(state, handle); printf("journald cursor: %s\n", journald_state->cursor); persist_state_unmap_entry(state, handle); break; case SAVE_JOURNALD_CURSOR: handle = persist_state_alloc_entry(state, systemd_journal, sizeof(struct journald_state)); if (handle == 0) break; journald_state = persist_state_map_entry(state, handle); journald_state->header.version = 0; journald_state->header.big_endian = (G_BYTE_ORDER == G_BIG_ENDIAN); strncpy(journald_state->cursor, args.action_arg.journald_cursor, MAX_CURSOR_LENGTH); persist_state_unmap_entry(state, handle); persist_state_commit(state); break; default:; } persist_state_free(state); msg_deinit(); return 0; }
void test_persist_state_open_fails_on_invalid_file_with_dump(void) { PersistState *state; int fd; unlink("test_invalid_magic.persist"); fd = open("test_invalid_magic.persist", O_CREAT | O_RDWR, 0777); write(fd, "aaa", 3); close(fd); state = persist_state_new("test_invalid_magic.persist"); assert_false(persist_state_start_dump(state), "persist_state_start_dump returned with success when persist file was invalid!"); cancel_and_destroy_persist_state(state); }
void test_persist_state_not_in_use_handle_is_loaded_in_dump_mode(void) { PersistState *state; guint8 version; gsize size; PersistEntryHandle handle; unlink("test_in_use.persist"); write_test_file_for_test_in_use_handle(FALSE); state = persist_state_new("test_in_use.persist"); persist_state_start_dump(state); handle = persist_state_lookup_entry(state, "alma", &size, &version); assert_false(handle == 0, "lookup failed in dump mode when looking for simple entry with in_use = FALSE!"); cancel_and_destroy_persist_state(state); }