Skip to content

Commit

Permalink
metaserver/s3 ut
Browse files Browse the repository at this point in the history
1. add test to fix branch cover not enough
2. start metaserver before tool(build topology)
  • Loading branch information
Cyber-SiKu authored and SeanHai committed Dec 16, 2021
1 parent 85dcbe6 commit 9e370f2
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 4 deletions.
2 changes: 1 addition & 1 deletion curvefs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ deploy:
$(call deploy_begin)
@bash util/deploy.sh --hosts="etcd" --only="etcd" --tags="core,config,start"
@bash util/deploy.sh --hosts="mds" --only="mds" --tags="core,config,start"
@bash util/deploy.sh --hosts="tools" --only="tools" --tags="core,config,topo"
@bash util/deploy.sh --hosts="metaserver" --only="metaserver" --tags="core,config,start"
@bash util/deploy.sh --hosts="tools" --only="tools" --tags="core,config,topo"
@bash util/deploy.sh --hosts="client" --only="client" --tags="core,config"
$(call deploy_end)

Expand Down
2 changes: 1 addition & 1 deletion curvefs/src/metaserver/s3/metaserver_s3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ int S3ClientImpl::Delete(const std::string& name) {
if (!s3Adapter_->ObjectExist(aws_key)) {
// the aws_key is not exist
// may delete by others
ret = 0;
ret = 1;
}
} else {
// 0
Expand Down
71 changes: 71 additions & 0 deletions curvefs/test/metaserver/metaserver_s3_adaptor_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,77 @@ TEST_F(MetaserverS3AdaptorTest, test_delete_idempotence) {
ASSERT_EQ(ret, 0);
}

TEST_F(MetaserverS3AdaptorTest, test_delete_deleted) {
// Init
curvefs::metaserver::Inode inode;
InitInode(&inode);
/*
1. write 3MB+1 from 0; (write)
2. write 2MB+1 from 2MB+2; (overwrite)
3. write 1MB+1 from 4MB+3; (append)
*/
const uint64_t FileLen = 5 * 1024 * 1024 + 4;
inode.set_length(FileLen);
S3ChunkInfoList* s3ChunkInfoList = new S3ChunkInfoList();
// 1. 1_0_0 1_1_0 1_2_0 1_3_0
S3ChunkInfo* s3ChunkInfo1 = s3ChunkInfoList->add_s3chunks();
s3ChunkInfo1->set_chunkid(1);
s3ChunkInfo1->set_compaction(0);
s3ChunkInfo1->set_offset(0);
const uint64_t first_len = 3 * 1024 * 1024 + 1;
s3ChunkInfo1->set_len(first_len);
s3ChunkInfo1->set_size(first_len);
// 2. 1_2_1 1_3_1 2_0_1
S3ChunkInfo* s3ChunkInfo2 = s3ChunkInfoList->add_s3chunks();
s3ChunkInfo2->set_chunkid(1);
s3ChunkInfo2->set_compaction(1);
s3ChunkInfo2->set_offset(2 * 1024 * 1024 + 2);
s3ChunkInfo2->set_len(4 * 1024 * 1024 - 2 * 1024 * 1024 - 2);
s3ChunkInfo2->set_size(4 * 1024 * 1024 - 2 * 1024 * 1024 - 2);
S3ChunkInfo* s3ChunkInfo3 = s3ChunkInfoList->add_s3chunks();
s3ChunkInfo3->set_chunkid(2);
s3ChunkInfo3->set_compaction(1);
s3ChunkInfo3->set_offset(4 * 1024 * 1024);
s3ChunkInfo3->set_len(3);
s3ChunkInfo3->set_size(3);
// 3. 2_0_1 2_1_1
S3ChunkInfo* s3ChunkInfo4 = s3ChunkInfoList->add_s3chunks();
s3ChunkInfo4->set_chunkid(2);
s3ChunkInfo4->set_compaction(1);
s3ChunkInfo4->set_offset(4 * 1024 * 1024 + 3);
s3ChunkInfo4->set_len(1 * 1024 * 1024 + 1);
s3ChunkInfo4->set_size(1 * 1024 * 1024 + 1);

inode.mutable_s3chunkinfomap()->insert({0, *s3ChunkInfoList});
// replace s3 delete
// when name == fail_del_name, should be deleted or not
const std::string fail_del_name = "2_1_2_0_1";
bool deleted = true;
std::set<std::string> deleteObject;
std::function<int(std::string)> delete_object =
[&deleteObject, fail_del_name, &deleted](std::string name) {
int ret = 0;
if (deleted && fail_del_name == name) {
LOG(INFO) << "delete object fail, name: " << name;
deleted = false;
ret = 1;
} else {
LOG(INFO) << "delete object sucess, name: " << name;
deleteObject.insert(name);
}
return ret;
};
EXPECT_CALL(*mockMetaserverS3Client_, Delete(_))
.WillRepeatedly(Invoke(delete_object));

int ret = 0;
do {
ret = metaserverS3ClientAdaptor_->Delete(inode);
} while (ret < 0);

ASSERT_EQ(ret, 0);
}

} // namespace metaserver
} // namespace curvefs

Expand Down
5 changes: 3 additions & 2 deletions curvefs/test/metaserver/metaserver_s3_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,15 @@ class ClientS3Test : public testing::Test {
};

TEST_F(ClientS3Test, delete_object_not_exist) {
EXPECT_CALL(*s3Adapter_, DeleteObject(_)).WillRepeatedly(Return(-1));
EXPECT_CALL(*s3Adapter_, ObjectExist(_)).WillRepeatedly(Return(false));
int ret = s3Client_->Delete("123");
ASSERT_EQ(ret, 0);
ASSERT_EQ(ret, 1);
}

TEST_F(ClientS3Test, delete_error) {
EXPECT_CALL(*s3Adapter_, ObjectExist(_)).WillRepeatedly(Return(true));
EXPECT_CALL(*s3Adapter_, DeleteObject(_)).WillRepeatedly(Return(-1));
EXPECT_CALL(*s3Adapter_, ObjectExist(_)).WillRepeatedly(Return(true));
int ret = s3Client_->Delete("123");
ASSERT_EQ(ret, -1);
}
Expand Down

0 comments on commit 9e370f2

Please sign in to comment.