示例#1
0
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);
}
示例#2
0
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;
}
示例#3
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);
}
示例#4
0
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);
}