Beispiel #1
0
int file_test(badblocks_list bb)
{
	badblocks_list new_bb = 0;
	errcode_t	retval;
	FILE	*f;

	f = tmpfile();
	if (!f) {
		fprintf(stderr, "Error opening temp file: %s\n",
			error_message(errno));
		return 1;
	}
	retval = ext2fs_write_bb_FILE(bb, 0, f);
	if (retval) {
		com_err("file_test", retval, "while writing bad blocks");
		return 1;
	}

	rewind(f);
	retval = ext2fs_read_bb_FILE2(0, f, &new_bb, 0, 0);
	if (retval) {
		com_err("file_test", retval, "while reading bad blocks");
		return 1;
	}
	fclose(f);

	if (ext2fs_badblocks_equal(bb, new_bb)) {
		printf("Block bitmap matched after reading and writing.\n");
	} else {
		printf("Block bitmap NOT matched.\n");
		test_fail++;
	}
	return 0;
}
int file_test_invalid(badblocks_list bb)
{
    badblocks_list new_bb = 0;
    errcode_t	retval;
    ext2_filsys 	fs;
    FILE	*f;

    fs = malloc(sizeof(struct struct_ext2_filsys));
    memset(fs, 0, sizeof(struct struct_ext2_filsys));
    fs->magic = EXT2_ET_MAGIC_EXT2FS_FILSYS;
    fs->super = malloc(SUPERBLOCK_SIZE);
    memset(fs->super, 0, SUPERBLOCK_SIZE);
    fs->super->s_first_data_block = 1;
    fs->super->s_blocks_count = 100;

    f = tmpfile();
    if (!f) {
        fprintf(stderr, "Error opening temp file: %s\n",
                error_message(errno));
        return 1;
    }
    retval = ext2fs_write_bb_FILE(bb, 0, f);
    if (retval) {
        com_err("file_test", retval, "while writing bad blocks");
        return 1;
    }
    fprintf(f, "34500\n");

    rewind(f);
    test_expected_fail = 0;
    retval = ext2fs_read_bb_FILE(fs, f, &new_bb, invalid_proc);
    if (retval) {
        com_err("file_test", retval, "while reading bad blocks");
        return 1;
    }
    fclose(f);
    if (!test_expected_fail) {
        printf("Expected test failure didn't happen!\n");
        test_fail++;
    }


    if (ext2fs_badblocks_equal(bb, new_bb)) {
        printf("Block bitmap matched after reading and writing.\n");
    } else {
        printf("Block bitmap NOT matched.\n");
        test_fail++;
    }
    return 0;
}
int file_test(badblocks_list bb)
{
    char	tmp_filename[20] = "#testXXXXXX";
    badblocks_list new_bb = 0;
    errcode_t	retval;
    FILE	*f;

    mktemp(tmp_filename);

    unlink(tmp_filename);
    f = fopen(tmp_filename, "w");
    if (!f) {
        fprintf(stderr, "Error opening temp file %s: %s\n",
                tmp_filename, error_message(errno));
        return 1;
    }
    retval = ext2fs_write_bb_FILE(bb, 0, f);
    if (retval) {
        com_err("file_test", retval, "while writing bad blocks");
        return 1;
    }
    fclose(f);

    f = fopen(tmp_filename, "r");
    if (!f) {
        fprintf(stderr, "Error re-opening temp file %s: %s\n",
                tmp_filename, error_message(errno));
        return 1;
    }
    retval = ext2fs_read_bb_FILE2(0, f, &new_bb, 0, 0);
    if (retval) {
        com_err("file_test", retval, "while reading bad blocks");
        return 1;
    }
    fclose(f);

    if (ext2fs_badblocks_equal(bb, new_bb)) {
        printf("Block bitmap matched after reading and writing.\n");
    } else {
        printf("Block bitmap NOT matched.\n");
        test_fail++;
    }
    return 0;
}
Beispiel #4
0
int main(int argc, char **argv)
{
	badblocks_list bb1, bb2, bb3, bb4, bb5;
	int	equal;
	errcode_t	retval;

	bb1 = bb2 = bb3 = bb4 = bb5 = 0;

	printf("test1: ");
	retval = create_test_list(test1, &bb1);
	if (retval == 0)
		print_list(bb1, 1);
	printf("\n");
	
	printf("test2: ");
	retval = create_test_list(test2, &bb2);
	if (retval == 0)
		print_list(bb2, 1);
	printf("\n");

	printf("test3: ");
	retval = create_test_list(test3, &bb3);
	if (retval == 0)
		print_list(bb3, 1);
	printf("\n");
	
	printf("test4: ");
	retval = create_test_list(test4, &bb4);
	if (retval == 0) {
		print_list(bb4, 0);
		printf("\n");
		validate_test_seq(bb4, test4a);
	}
	printf("\n");

	printf("test5: ");
	retval = create_test_list(test5, &bb5);
	if (retval == 0) {
		print_list(bb5, 0);
		printf("\n");
		do_test_seq(bb5, test5a);
		printf("After test5 sequence: ");
		print_list(bb5, 0);
		printf("\n");
	}
	printf("\n");

	if (bb1 && bb2 && bb3 && bb4 && bb5) {
		printf("Comparison tests:\n");
		equal = ext2fs_badblocks_equal(bb1, bb2);
		printf("bb1 and bb2 are %sequal.\n", equal ? "" : "NOT "); 
		if (equal)
			test_fail++;

		equal = ext2fs_badblocks_equal(bb1, bb3);
		printf("bb1 and bb3 are %sequal.\n", equal ? "" : "NOT "); 
		if (!equal)
			test_fail++;
		
		equal = ext2fs_badblocks_equal(bb1, bb4);
		printf("bb1 and bb4 are %sequal.\n", equal ? "" : "NOT "); 
		if (equal)
			test_fail++;

		equal = ext2fs_badblocks_equal(bb4, bb5);
		printf("bb4 and bb5 are %sequal.\n", equal ? "" : "NOT "); 
		if (!equal)
			test_fail++;
		printf("\n");
	}
	
	file_test(bb4);
	
	if (test_fail == 0)
		printf("ext2fs library badblocks tests checks out OK!\n");

	if (bb1)
		ext2fs_badblocks_list_free(bb1);
	if (bb2)
		ext2fs_badblocks_list_free(bb2);
	if (bb3)
		ext2fs_badblocks_list_free(bb3);
	if (bb4)
		ext2fs_badblocks_list_free(bb4);

	return test_fail;

}