Pass WriteTest with fischl_write
This commit is contained in:
parent
fd175e5470
commit
d0659eb379
@ -467,14 +467,12 @@ int FilesOperation::fischl_write(const char *path, const char *buf, size_t size,
|
|||||||
size_t copy_size = std::min(size - bytes_write, IO_BLOCK_SIZE - block_offset);
|
size_t copy_size = std::min(size - bytes_write, IO_BLOCK_SIZE - block_offset);
|
||||||
memcpy(block_buffer + block_offset, buf + bytes_write, copy_size);
|
memcpy(block_buffer + block_offset, buf + bytes_write, copy_size);
|
||||||
write_datablock(inode, block_index, block_buffer);
|
write_datablock(inode, block_index, block_buffer);
|
||||||
fprintf(stderr,"[%s ,%d] inode.size %d\n",__func__,__LINE__, inode.size);
|
// fprintf(stderr,"[%s ,%d] inode.size %d, block_index %d, block_buffer %s\n",__func__,__LINE__, inode.size, block_index, block_buffer);
|
||||||
fprintf(stderr,"[%s ,%d] block_index %d\n",__func__,__LINE__, block_index);
|
|
||||||
fprintf(stderr,"[%s ,%d] buf %s, block_buffer %s\n",__func__,__LINE__, buf, block_buffer);
|
|
||||||
bytes_write += copy_size;
|
bytes_write += copy_size;
|
||||||
block_index++;
|
block_index++;
|
||||||
block_offset = 0; // Only the first block might have a non-zero offset
|
block_offset = 0; // Only the first block might have a non-zero offset
|
||||||
}
|
}
|
||||||
|
inode.inode_save(disk);
|
||||||
return bytes_write; // Return the actual number of bytes read
|
return bytes_write; // Return the actual number of bytes read
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,30 +66,18 @@ TEST(FileOperationTest, WriteTest) {
|
|||||||
|
|
||||||
//file test
|
//file test
|
||||||
get_disk_inum = fsop->disk_namei("/test");
|
get_disk_inum = fsop->disk_namei("/test");
|
||||||
inode.inode_construct(get_disk_inum, *H);
|
fsop->fischl_open("/test", &fi);
|
||||||
|
EXPECT_EQ(fi.fh, get_disk_inum);
|
||||||
buffer[0] = '1';
|
buffer[0] = '1';
|
||||||
fsop->write_datablock(inode, 0, buffer);
|
fsop->fischl_write("/test", buffer, sizeof(buffer), 0, &fi);
|
||||||
inode.inode_save(*H);
|
|
||||||
/*with fischl_write API*/
|
|
||||||
// fsop->fischl_open("/test", &fi);
|
|
||||||
// EXPECT_EQ(fi.fh, get_disk_inum);
|
|
||||||
// fsop->fischl_write("/test", buffer, sizeof(buffer), 0, &fi);
|
|
||||||
//other file baz
|
//other file baz
|
||||||
get_disk_inum = fsop->disk_namei("/foo/bar/baz");
|
get_disk_inum = fsop->disk_namei("/foo/bar/baz");
|
||||||
inode.inode_construct(get_disk_inum, *H);
|
|
||||||
buffer[0] = '4';
|
buffer[0] = '4';
|
||||||
fsop->write_datablock(inode, 3, buffer);
|
fsop->fischl_open("/foo/bar/baz", &fi);
|
||||||
|
EXPECT_EQ(fi.fh, get_disk_inum);
|
||||||
|
fsop->fischl_write("/foo/bar/baz", buffer, sizeof(buffer), 3*IO_BLOCK_SIZE, &fi);
|
||||||
buffer[0] = '5';
|
buffer[0] = '5';
|
||||||
fsop->write_datablock(inode, 101, buffer);
|
fsop->fischl_write("/foo/bar/baz", buffer, sizeof(buffer), 101*IO_BLOCK_SIZE, &fi);
|
||||||
inode.inode_save(*H);
|
|
||||||
// TODO: guard against overwriting directory datablocks
|
|
||||||
/*with new API*/
|
|
||||||
// buffer[0] = '4';
|
|
||||||
// fsop->fischl_open("/foo/bar/baz", &fi);
|
|
||||||
// EXPECT_EQ(fi.fh, get_disk_inum);
|
|
||||||
// fsop->fischl_write("/foo/bar/baz", buffer, sizeof(buffer), 3*IO_BLOCK_SIZE, &fi);
|
|
||||||
// buffer[0] = '5';
|
|
||||||
// fsop->fischl_write("/foo/bar/baz", buffer, sizeof(buffer), 101*IO_BLOCK_SIZE, &fi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(FileOperationTest, RamDiskTest) {
|
TEST(FileOperationTest, RamDiskTest) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user