add renameTest and revise .. name from subdirectory(underconstruct)
This commit is contained in:
parent
afd3ba7f32
commit
8a6b5ffcac
@ -790,10 +790,11 @@ int FilesOperation::fischl_rename(const char *old_path, const char *new_path, un
|
|||||||
RenameInfo rename_info;
|
RenameInfo rename_info;
|
||||||
rename_info.exchangeExist = false;
|
rename_info.exchangeExist = false;
|
||||||
rename_info.oldParentNode = fischl_find_entry(root_node, oldParentPath);
|
rename_info.oldParentNode = fischl_find_entry(root_node, oldParentPath);
|
||||||
rename_info.oldFileNode = fischl_find_entry(rename_info.oldParentNode->subdirectory, filename);
|
//if path end with / means to rename directory
|
||||||
|
rename_info.oldFileNode = strlen(filename)? fischl_find_entry(rename_info.oldParentNode->subdirectory, filename):rename_info.oldParentNode;
|
||||||
|
|
||||||
if (rename_info.oldFileNode == NULL) {
|
if (rename_info.oldFileNode == NULL) {
|
||||||
printf("path %s not found by fischl_find_entry\n", old_path);
|
fprintf(stderr,"[%s ,%d] path %s not found by fischl_find_entry\n",__func__,__LINE__, old_path);
|
||||||
free(pathdup);
|
free(pathdup);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -832,7 +833,10 @@ int FilesOperation::fischl_rename(const char *old_path, const char *new_path, un
|
|||||||
|
|
||||||
// Normal rename logic if no flags are specified; can overwirte
|
// Normal rename logic if no flags are specified; can overwirte
|
||||||
// Hard Disk rename
|
// Hard Disk rename
|
||||||
|
if(rename_info.oldFileNode->subdirectory != NULL){//secure its directory
|
||||||
|
//remove its record from subdirectory; find .. from subdirectory
|
||||||
|
|
||||||
|
}
|
||||||
// remove its record from parent
|
// remove its record from parent
|
||||||
INode_Data parent_INode;
|
INode_Data parent_INode;
|
||||||
parent_INode.inode_num = rename_info.oldParentNode->inode_number;
|
parent_INode.inode_num = rename_info.oldParentNode->inode_number;
|
||||||
|
@ -206,6 +206,34 @@ TEST(FileOperationTest, UnlinkTest) {
|
|||||||
printf("/AAA...AAA is inode %llu, it is a file\n", filelong);
|
printf("/AAA...AAA is inode %llu, it is a file\n", filelong);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(FileOperationTest, renameTest){
|
||||||
|
struct fuse_file_info fi;
|
||||||
|
char read_buffer[IO_BLOCK_SIZE] = {0};
|
||||||
|
|
||||||
|
u_int64_t get_inode_num = fsop->disk_namei("/test");
|
||||||
|
fprintf(stderr,"[%s ,%d] /test inode %d\n",__func__,__LINE__,get_inode_num);
|
||||||
|
/*Cache are not yet implemented*/
|
||||||
|
// fsop->fischl_open("/test", &fi);
|
||||||
|
// fprintf(stderr,"[%s ,%d] fi.fh %d\n",__func__,__LINE__,fi.fh);
|
||||||
|
// fsop->fischl_read("/test", read_buffer, sizeof(read_buffer), 0, &fi);
|
||||||
|
// EXPECT_EQ(read_buffer[0], '1');
|
||||||
|
|
||||||
|
EXPECT_EQ(fsop->fischl_rename("/test", "/test123", 0),0);//defualt
|
||||||
|
EXPECT_EQ(fsop->disk_namei("/test123"),get_inode_num);
|
||||||
|
get_inode_num = fsop->disk_namei("/test");//should be failed becuase cannot find
|
||||||
|
fprintf(stderr,"[%s ,%d] /test inode %d\n",__func__,__LINE__,get_inode_num);
|
||||||
|
/*Cache are not yet implemented*/
|
||||||
|
// fsop->fischl_open("/test123", &fi);
|
||||||
|
// fprintf(stderr,"[%s ,%d] fi.fh %d\n",__func__,__LINE__,fi.fh);
|
||||||
|
// fsop->fischl_read("/test123", read_buffer, sizeof(read_buffer), 0, &fi);
|
||||||
|
// EXPECT_EQ(read_buffer[0], '1');
|
||||||
|
/*Read with hard disk*/
|
||||||
|
INode_Data inode;
|
||||||
|
inode.inode_num = fsop->disk_namei("/test123");
|
||||||
|
fs->inode_manager->load_inode(&inode);
|
||||||
|
fs->read(&inode, read_buffer, sizeof(read_buffer), 0);
|
||||||
|
EXPECT_EQ(read_buffer[0], '1');
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
srand(time(NULL)); // Seed the random number generator
|
srand(time(NULL)); // Seed the random number generator
|
||||||
|
Loading…
x
Reference in New Issue
Block a user