int main() { int size; mydisk_init("diskfile", MAX_BLOCKS, 0); init_cache(CACHED_BLOCKS); /* Test case 1: read/write block */ size = BLOCK_SIZE; memset(buffer, 0, size); strcpy(buffer, "hello world\n"); mydisk_write_block(0, buffer); memset(buffer2, 0, size); mydisk_read_block(0, buffer2); check_test(memcmp(buffer2, "hello world\n", 13)); /* Test case 2: basic read/write */ memset(buffer, 0, size); mydisk_read(0, 13, buffer); check_test(memcmp(buffer, "hello world\n", 13)); /* Test case 3: read in the middle */ memset(buffer, 0, BLOCK_SIZE); mydisk_read(8, 5, buffer); check_test(memcmp(buffer, "rld\n", 5)); /* Test case 4: read/write across blocks */ size = BLOCK_SIZE; rand_str(buffer, size); mydisk_write(144, size, buffer); memset(buffer2, 0, size); mydisk_read(144, size, buffer2); check_test(memcmp(buffer, buffer2, size)); /* Test case 5: large read/write */ size = BLOCK_SIZE * (MAX_BLOCKS - 1); rand_str(buffer, size); mydisk_write(276, size, buffer); mydisk_read(276, size, buffer2); check_test(memcmp(buffer, buffer2, size)); /* Test case 6~9: read/write exception */ check_test(!mydisk_read(-1, 0, buffer)); check_test(!mydisk_read(0, -10, buffer)); check_test(!mydisk_read(100, BLOCK_SIZE * MAX_BLOCKS, buffer)); check_test(mydisk_write(0, 0, buffer)); check_test(stress_test()); check_test(stress_test2()); close_cache(); mydisk_close(); return 0; }
int test_file(){ int i; char buffer[32]; if ( open_test() < 0 ){ printf("Open test failed\n"); return -1; } if ( stress_test1() < 0 ){ printf("stress test 1 failed\n"); return -1; } if ( stress_test2() < 0 ){ printf("stress test 2 failed\n"); return -1; } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "file%d.txt", i); if ( test_rw_trunc(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "file_long%d.txt", i); if ( test_rw_long_trunc(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "file_short%d.txt", i); if ( test_rw_short_trunc(buffer) < 0 ){ return -1; } } return 0; for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "file%d.txt", i); if ( test_rw_exist(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "file_long%d.txt", i); if ( test_rw_long_exist(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "file_short%d.txt", i); if ( test_rw_short_exist(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "wfile%d.txt", i); if ( test_wr_trunc(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "wfile_long%d.txt", i); if ( test_wr_long_trunc(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "wfile_short%d.txt", i); if ( test_wr_short_trunc(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "wfile%d.txt", i); if ( test_wr_exist(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "wfile_long%d.txt", i); if ( test_wr_long_exist(buffer) < 0 ){ return -1; } } for(i=0; i < NUM_RW_TESTS; i++){ sprintf(buffer, "wfile_short%d.txt", i); if ( test_wr_short_exist(buffer) < 0 ){ return -1; } } return 0; }