Skip to content

Commit

Permalink
add ut
Browse files Browse the repository at this point in the history
Signed-off-by: drake_wang <[email protected]>
  • Loading branch information
wxl24life committed Dec 19, 2024
1 parent 9d35a62 commit 1dea62d
Showing 1 changed file with 91 additions and 27 deletions.
118 changes: 91 additions & 27 deletions fe/fe-core/src/test/java/com/starrocks/lake/StarMgrMetaSyncerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -564,14 +564,13 @@ Future<DeleteTabletResponse> deleteTablet(DeleteTabletRequest request) {
}

@Test
public void testDeleteShardAndShardGroupWithForce() {
public void testDeleteShardAndShardGroupWithForceAndGetShardException() {
boolean oldValue = Config.meta_sync_force_delete_shard_meta;
Config.meta_sync_force_delete_shard_meta = true;
Config.shard_group_clean_threshold_sec = 0;
long groupIdToClear = shardGroupId + 1;
// build shardGroupInfos
List<Long> allShardIds = Stream.of(1000L, 1001L, 1002L, 1003L).collect(Collectors.toList());
int numOfShards = allShardIds.size();
List<ShardGroupInfo> shardGroupInfos = new ArrayList<>();
ShardGroupInfo info = ShardGroupInfo.newBuilder()
.setGroupId(groupIdToClear)
Expand All @@ -580,7 +579,7 @@ public void testDeleteShardAndShardGroupWithForce() {
.build();
shardGroupInfos.add(info);

// iterate 0: get shard info failed, should also delete shards
// case get shard info failed, should also delete shards
{
new MockUp<StarOSAgent>() {
@Mock
Expand All @@ -607,8 +606,24 @@ public ShardInfo getShardInfo(long shardId, long workerGroupId) throws StarClien
Deencapsulation.invoke(starMgrMetaSyncer, "deleteUnusedShardAndShardGroup");
Assert.assertEquals(0, allShardIds.size());
}
}

// iterate 1: delete all shards
@Test
public void testDeleteShardAndShardGroupWithForceAndDeleteException() {
boolean oldValue = Config.meta_sync_force_delete_shard_meta;
Config.meta_sync_force_delete_shard_meta = true;
Config.shard_group_clean_threshold_sec = 0;
long groupIdToClear = shardGroupId + 1;
// build shardGroupInfos
List<Long> allShardIds = Stream.of(1000L, 1001L, 1002L, 1003L).collect(Collectors.toList());
List<ShardGroupInfo> shardGroupInfos = new ArrayList<>();
ShardGroupInfo info = ShardGroupInfo.newBuilder()
.setGroupId(groupIdToClear)
.putProperties("createTime", String.valueOf(System.currentTimeMillis() - 86400 * 1000))
.addAllShardIds(allShardIds)
.build();
shardGroupInfos.add(info);
// case: delete shards failed, should also delete shards
{
new MockUp<StarOSAgent>() {
@Mock
Expand All @@ -622,8 +637,8 @@ public List<Long> listShard(long groupId) {
}

@Mock
public void deleteShards(Set<Long> shardIds) {
allShardIds.removeAll(shardIds);
public void deleteShards(Set<Long> shardIds) throws DdlException {
throw new DdlException("delete shard failed..");
}

@Mock
Expand Down Expand Up @@ -654,32 +669,81 @@ public ShardInfo getShardInfo(long shardId, long workerGroupId) throws StarClien
Deencapsulation.invoke(starMgrMetaSyncer, "deleteUnusedShardAndShardGroup");
Assert.assertEquals(0, allShardIds.size());

Check failure on line 670 in fe/fe-core/src/test/java/com/starrocks/lake/StarMgrMetaSyncerTest.java

View workflow job for this annotation

GitHub Actions / FE UT Report

StarMgrMetaSyncerTest.testDeleteShardAndShardGroupWithForceAndDeleteException

expected:<0> but was:<4>
Raw output
java.lang.AssertionError: expected:<0> but was:<4>
	at com.starrocks.lake.StarMgrMetaSyncerTest.testDeleteShardAndShardGroupWithForceAndDeleteException(StarMgrMetaSyncerTest.java:670)
}
Config.meta_sync_force_delete_shard_meta = oldValue;
}

// iterate 2: delete empty group
{
new MockUp<StarOSAgent>() {
@Test
public void testDeleteShardAndShardGroupWithForce() {
boolean oldValue = Config.meta_sync_force_delete_shard_meta;
Config.meta_sync_force_delete_shard_meta = true;
Config.shard_group_clean_threshold_sec = 0;
long groupIdToClear = shardGroupId + 1;
// build shardGroupInfos
List<Long> allShardIds = Stream.of(1000L, 1001L, 1002L, 1003L).collect(Collectors.toList());
List<ShardGroupInfo> shardGroupInfos = new ArrayList<>();
ShardGroupInfo info = ShardGroupInfo.newBuilder()
.setGroupId(groupIdToClear)
.putProperties("createTime", String.valueOf(System.currentTimeMillis() - 86400 * 1000))
.addAllShardIds(allShardIds)
.build();
shardGroupInfos.add(info);
// iterate 1: delete all shards
new MockUp<StarOSAgent>() {
@Mock
public List<ShardGroupInfo> listShardGroup() {
return shardGroupInfos;
}

@Mock
public List<ShardGroupInfo> listShardGroup() {
return shardGroupInfos;
}
@Mock
public List<Long> listShard(long groupId) {
return allShardIds;
}

@Mock
public List<Long> listShard(long groupId) {
return Lists.newArrayList();
}
@Mock
public void deleteShards(Set<Long> shardIds) {
allShardIds.removeAll(shardIds);
}

@Mock
public void deleteShardGroup(List<Long> groupIds) {
for (long groupId : groupIds) {
shardGroupInfos.removeIf(item -> item.getGroupId() == groupId);
}
}
};
@Mock
public ShardInfo getShardInfo(long shardId, long workerGroupId) throws StarClientException {
ShardInfo.Builder builder = ShardInfo.newBuilder();
builder.setShardId(1000L);

Deencapsulation.invoke(starMgrMetaSyncer, "deleteUnusedShardAndShardGroup");
Assert.assertEquals(0, shardGroupInfos.size());
}
FilePathInfo.Builder filePathBuilder = FilePathInfo.newBuilder();
FileStoreInfo.Builder fsBuilder = filePathBuilder.getFsInfoBuilder();

S3FileStoreInfo.Builder s3FsBuilder = fsBuilder.getS3FsInfoBuilder();
s3FsBuilder.setBucket("test-bucket");
s3FsBuilder.setRegion("test-region");

fsBuilder.setFsType(FileStoreType.S3);
fsBuilder.setFsKey("test-bucket");
fsBuilder.setS3FsInfo(s3FsBuilder.build());
FileStoreInfo fsInfo = fsBuilder.build();

filePathBuilder.setFsInfo(fsInfo);
filePathBuilder.setFullPath("s3://test-bucket/1/");

builder.setFilePath(filePathBuilder);
return builder.build();
}
};

Deencapsulation.invoke(starMgrMetaSyncer, "deleteUnusedShardAndShardGroup");
Assert.assertEquals(0, allShardIds.size());


// iterate 2: delete empty group (shards has been deleted by iterate 1)
new MockUp<StarOSAgent>() {
@Mock
public void deleteShardGroup(List<Long> groupIds) throws StarClientException {
for (long groupId : groupIds) {
shardGroupInfos.removeIf(item -> item.getGroupId() == groupId);
}
}
};
Deencapsulation.invoke(starMgrMetaSyncer, "deleteUnusedShardAndShardGroup");
Assert.assertEquals(0, shardGroupInfos.size());

Config.meta_sync_force_delete_shard_meta = oldValue;
}
Expand Down

0 comments on commit 1dea62d

Please sign in to comment.