From 78145500edb521edf9d018b60ffe06ee7f2c5ce5 Mon Sep 17 00:00:00 2001 From: Zhijia Cao Date: Wed, 29 Nov 2023 09:41:00 +0800 Subject: [PATCH 1/2] add validate file is exist, avoid rename error. --- .../inner/InnerSpaceCompactionSelectorTest.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java index 27d390df29884..1c6ee7e9ecf6c 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java @@ -669,7 +669,7 @@ public void testFileWithFileIndexBeenDeletedDuringSelectionAndBeforeSettingCompa @Test public void testSelectWhenModsFileGreaterThan50M() throws IOException, MetadataException, WriteProcessException { - createFiles(6, 2, 3, 50, 0, 10000, 50, 50, false, true); + createFiles(1, 2, 3, 50, 0, 10000, 50, 50, false, true); tsFileManager.addAll(seqResources, true); tsFileManager.addAll(unseqResources, false); @@ -677,13 +677,11 @@ public void testSelectWhenModsFileGreaterThan50M() ModificationFile modFile = tsFileResource.getModFile(); - while (modFile.getSize() < 1024 * 1024 * 50) { - modFile.write( - new Deletion( - new PartialPath(COMPACTION_TEST_SG + PATH_SEPARATOR + "**"), - Long.MIN_VALUE, - Long.MAX_VALUE)); - } + modFile.write( + new Deletion( + new PartialPath(COMPACTION_TEST_SG + PATH_SEPARATOR + "**"), + Long.MIN_VALUE, + Long.MAX_VALUE)); SizeTieredCompactionSelector selector = new SizeTieredCompactionSelector("", "", 0, true, tsFileManager); @@ -691,7 +689,7 @@ public void testSelectWhenModsFileGreaterThan50M() List resources = tsFileManager.getOrCreateSequenceListByTimePartition(0); List innerSpaceCompactionTasks = selector.selectInnerSpaceTask(resources); - Assert.assertEquals(1, innerSpaceCompactionTasks.size()); + Assert.assertEquals(0, innerSpaceCompactionTasks.size()); modFile.remove(); } } From fb157f981369faa5ab3ae0e78333a043d54c97b2 Mon Sep 17 00:00:00 2001 From: Zhijia Cao Date: Wed, 29 Nov 2023 10:54:41 +0800 Subject: [PATCH 2/2] fixed ut taking too long --- .../InnerSpaceCompactionSelectorTest.java | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java index 1c6ee7e9ecf6c..bc9688ffaa7f2 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java @@ -43,13 +43,12 @@ import org.junit.Test; import org.mockito.Mockito; +import java.io.File; import java.io.IOException; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; -import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR; - public class InnerSpaceCompactionSelectorTest extends AbstractCompactionTest { @Before public void setUp() @@ -669,27 +668,41 @@ public void testFileWithFileIndexBeenDeletedDuringSelectionAndBeforeSettingCompa @Test public void testSelectWhenModsFileGreaterThan50M() throws IOException, MetadataException, WriteProcessException { - createFiles(1, 2, 3, 50, 0, 10000, 50, 50, false, true); + createFiles(6, 2, 3, 50, 0, 10000, 50, 50, false, true); tsFileManager.addAll(seqResources, true); tsFileManager.addAll(unseqResources, false); - TsFileResource tsFileResource = seqResources.get(0); - - ModificationFile modFile = tsFileResource.getModFile(); - - modFile.write( - new Deletion( - new PartialPath(COMPACTION_TEST_SG + PATH_SEPARATOR + "**"), - Long.MIN_VALUE, - Long.MAX_VALUE)); - + // mock modification file size must greater than 50M + MockModiFicationFile mockModiFicationFile = + new MockModiFicationFile( + seqResources.get(0).getTsFilePath() + ModificationFile.FILE_SUFFIX); + mockModiFicationFile.write(new Deletion(new PartialPath("root.a.b"), 1, 1)); + seqResources.get(0).setModFile(mockModiFicationFile); SizeTieredCompactionSelector selector = new SizeTieredCompactionSelector("", "", 0, true, tsFileManager); // copy candidate source file list List resources = tsFileManager.getOrCreateSequenceListByTimePartition(0); List innerSpaceCompactionTasks = selector.selectInnerSpaceTask(resources); - Assert.assertEquals(0, innerSpaceCompactionTasks.size()); - modFile.remove(); + Assert.assertEquals(1, innerSpaceCompactionTasks.size()); + mockModiFicationFile.remove(); + } + + class MockModiFicationFile extends ModificationFile { + + /** + * Construct a ModificationFile using a file as its storage. + * + * @param filePath the path of the storage file. + */ + public MockModiFicationFile(String filePath) { + super(filePath); + new File(filePath); + } + + @Override + public long getSize() { + return 1024 * 1024 * 50 + 1; + } } }