add disk access checks to confirm consistency between values stored in RAM and on Disk, and pass Writetest
This commit is contained in:
parent
ac6eb21b64
commit
9a2289e296
@ -54,59 +54,64 @@ TEST(FileOperationTest, MkdirnodTest) {
|
|||||||
EXPECT_TRUE(fsop->fischl_mkdir("/foo/bar/..", mode) < 0);
|
EXPECT_TRUE(fsop->fischl_mkdir("/foo/bar/..", mode) < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TEST(FileOperationTest, WriteTest) {
|
TEST(FileOperationTest, WriteTest) {
|
||||||
// // write to files (TODO: fischl_write)
|
// write to files (TODO: fischl_write)
|
||||||
// // read and write to indirect datablocks are not supported yet
|
// read and write to indirect datablocks are not supported yet
|
||||||
// printf("=== Part 2: write to files ===\n");
|
//get inode info from disk
|
||||||
// char buffer[IO_BLOCK_SIZE] = {0};
|
char buffer[IO_BLOCK_SIZE] = {0};
|
||||||
// INode inode;
|
INode inode;
|
||||||
// inode.inode_construct(file1, *H);
|
u_int64_t get_disk_inum;
|
||||||
// buffer[0] = '1';
|
//file test
|
||||||
// fsop.write_datablock(inode, 0, buffer);
|
get_disk_inum = fsop->disk_namei("/test");
|
||||||
// inode.inode_save(*H);
|
inode.inode_construct(get_disk_inum, *H);
|
||||||
// inode.inode_construct(file4, *H);
|
buffer[0] = '1';
|
||||||
// buffer[0] = '4';
|
fsop->write_datablock(inode, 0, buffer);
|
||||||
// fsop.write_datablock(inode, 3, buffer);
|
inode.inode_save(*H);
|
||||||
// buffer[0] = '5';
|
//other file baz
|
||||||
// fsop.write_datablock(inode, 101, buffer);
|
get_disk_inum = fsop->disk_namei("/foo/bar/baz");
|
||||||
// inode.inode_save(*H);
|
inode.inode_construct(get_disk_inum, *H);
|
||||||
// // TODO: guard against overwriting directory datablocks
|
buffer[0] = '4';
|
||||||
// }
|
fsop->write_datablock(inode, 3, buffer);
|
||||||
|
buffer[0] = '5';
|
||||||
|
fsop->write_datablock(inode, 101, buffer);
|
||||||
|
inode.inode_save(*H);
|
||||||
|
// TODO: guard against overwriting directory datablocks
|
||||||
|
}
|
||||||
|
|
||||||
TEST(FileOperationTest, RamTest) {
|
TEST(FileOperationTest, RamDiskTest) {
|
||||||
//use find_entry(specify certain files or directory)
|
//use find_entry(specify certain files or directory)
|
||||||
FileNode* get_dir;
|
FileNode* get_dir;
|
||||||
|
u_int64_t get_disk_inum;
|
||||||
|
|
||||||
get_dir = fischl_find_entry(fsop->root_node, "/test");//this is file
|
get_dir = fischl_find_entry(fsop->root_node, "/test");//this is file
|
||||||
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
||||||
EXPECT_STREQ(get_dir->name, "test");
|
EXPECT_STREQ(get_dir->name, "test");
|
||||||
|
get_disk_inum = fsop->disk_namei("/test");
|
||||||
|
EXPECT_EQ(get_disk_inum, get_dir->inode_number);
|
||||||
|
|
||||||
get_dir = fischl_find_entry(fsop->root_node, "/foo/bar/baz");//this is file
|
get_dir = fischl_find_entry(fsop->root_node, "/foo/bar/baz");//this is file
|
||||||
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
||||||
EXPECT_STREQ(get_dir->name, "baz");
|
EXPECT_STREQ(get_dir->name, "baz");
|
||||||
|
get_disk_inum = fsop->disk_namei("/foo/bar/baz");
|
||||||
|
EXPECT_EQ(get_disk_inum, get_dir->inode_number);
|
||||||
|
|
||||||
get_dir = fischl_find_entry(fsop->root_node, "/foo/bar/..");
|
get_dir = fischl_find_entry(fsop->root_node, "/foo/bar/..");
|
||||||
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
||||||
EXPECT_STREQ(get_dir->name, "foo");
|
EXPECT_STREQ(get_dir->name, "foo");
|
||||||
ASSERT_TRUE(get_dir->subdirectory != NULL);//secure it is directory
|
ASSERT_TRUE(get_dir->subdirectory != NULL);//secure it is directory
|
||||||
|
get_disk_inum = fsop->disk_namei("/foo/bar/..");
|
||||||
|
EXPECT_EQ(get_disk_inum, get_dir->inode_number);
|
||||||
|
fsop->printDirectory(get_disk_inum);
|
||||||
|
|
||||||
get_dir = fischl_find_entry(fsop->root_node, "/foo/bar/.");
|
get_dir = fischl_find_entry(fsop->root_node, "/foo/bar/.");
|
||||||
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
EXPECT_TRUE(get_dir != NULL);//detect this should find success
|
||||||
EXPECT_STREQ(get_dir->name, "bar");
|
EXPECT_STREQ(get_dir->name, "bar");
|
||||||
ASSERT_TRUE(get_dir->subdirectory != NULL);//secure it is directory
|
ASSERT_TRUE(get_dir->subdirectory != NULL);//secure it is directory
|
||||||
|
get_disk_inum = fsop->disk_namei("/foo/bar/.");
|
||||||
|
EXPECT_EQ(get_disk_inum, get_dir->inode_number);
|
||||||
|
fsop->printDirectory(get_disk_inum);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TEST(FileOperationTest, DiskTest) {
|
|
||||||
// // retrieve inode-number by path
|
|
||||||
// u_int64_t file_test = fsop.namei("/test");
|
|
||||||
// printf("inode number for \"/test\" is %llu\n", file_test);
|
|
||||||
// assert(file_test == file1);
|
|
||||||
// u_int64_t file_baz = fsop.namei("/foo/bar/baz");
|
|
||||||
// printf("inode number for \"/foo/bar/baz\" is %llu\n", file_baz);
|
|
||||||
// assert(file_baz == file4);
|
|
||||||
// u_int64_t file_foo = fsop.namei("/foo/bar/..");
|
|
||||||
// printf("inode number for \"/foo/bar/..\" is %llu\n", file_foo);
|
|
||||||
// assert(file_foo == file2);
|
|
||||||
// u_int64_t file_bar = fsop.namei("/foo/bar/.");
|
|
||||||
// printf("inode number for \"/foo/bar/.\" is %llu\n", file_bar);
|
|
||||||
// assert(file_bar == file3);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// TEST(FileOperationTest, ReadTest) {
|
// TEST(FileOperationTest, ReadTest) {
|
||||||
// // read files (TODO: fischl_read)
|
// // read files (TODO: fischl_read)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user