You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by zh...@apache.org on 2022/03/31 10:43:14 UTC

[rocketmq] branch develop updated: [ISSUE #3699] fix unit test

This is an automated email from the ASF dual-hosted git repository.

zhangyang pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 4f7a224  [ISSUE #3699] fix unit test
4f7a224 is described below

commit 4f7a224a04c322c950ba924c1c0dc4c9ec5feae7
Author: zhangyang21 <zh...@xiaomi.com>
AuthorDate: Wed Jan 5 14:24:50 2022 +0800

    [ISSUE #3699] fix unit test
    
    Signed-off-by: zhangyang21 <zh...@xiaomi.com>
---
 .../store/DefaultMessageStoreCleanFilesTest.java   | 59 ++++++++++++----------
 .../store/dledger/DLedgerCommitlogTest.java        |  2 +-
 2 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreCleanFilesTest.java b/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreCleanFilesTest.java
index d8202eb..1d5bcf8 100644
--- a/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreCleanFilesTest.java
+++ b/store/src/test/java/org/apache/rocketmq/store/DefaultMessageStoreCleanFilesTest.java
@@ -78,16 +78,17 @@ public class DefaultMessageStoreCleanFilesTest {
         // the min value of diskMaxUsedSpaceRatio.
         int diskMaxUsedSpaceRatio = 1;
         // used to  set disk-full flag
-        double diskSpaceCleanForciblyRatio = 0.01D;
+        double usedSpaceRatio = UtilAll.getDiskPartitionSpaceUsedPercent(System.getProperty("user.home"));
+        double diskSpaceCleanForciblyRatio = usedSpaceRatio - 0.01D;
         initMessageStore(deleteWhen, diskMaxUsedSpaceRatio, diskSpaceCleanForciblyRatio);
-        // build and put 55 messages, exactly one message per CommitLog file.
+        // build and put messages, some messages failed to write because the disk is full.
         buildAndPutMessagesToMessageStore(msgCount);
         MappedFileQueue commitLogQueue = getMappedFileQueueCommitLog();
-        assertEquals(fileCountCommitLog, commitLogQueue.getMappedFiles().size());
+        assertTrue(fileCountCommitLog >= commitLogQueue.getMappedFiles().size());
         int fileCountConsumeQueue = getFileCountConsumeQueue();
         MappedFileQueue consumeQueue = getMappedFileQueueConsumeQueue();
-        assertEquals(fileCountConsumeQueue, consumeQueue.getMappedFiles().size());
-        cleanCommitLogService.isSpaceFull();
+        assertTrue(fileCountConsumeQueue >= consumeQueue.getMappedFiles().size());
+        assertTrue(cleanCommitLogService.isSpaceFull());
         assertEquals(1 << 4, messageStore.getRunningFlags().getFlagBits() & (1 << 4));
         messageStore.shutdown();
         messageStore.destroy();
@@ -100,7 +101,9 @@ public class DefaultMessageStoreCleanFilesTest {
         // the min value of diskMaxUsedSpaceRatio.
         int diskMaxUsedSpaceRatio = 1;
         // used to  set disk-full flag
-        double diskSpaceCleanForciblyRatio = 0.01D;
+        double usedSpaceRatio = UtilAll.getDiskPartitionSpaceUsedPercent(System.getProperty("user.home"));
+        double diskSpaceWarningLevelRatio = usedSpaceRatio - 0.01;
+        double diskSpaceCleanForciblyRatio = usedSpaceRatio - 0.01;
         MessageStoreConfig config = genMessageStoreConfig(deleteWhen, diskMaxUsedSpaceRatio);
         String storePath = config.getStorePathCommitLog();
         StringBuilder storePathBuilder = new StringBuilder();
@@ -110,19 +113,18 @@ public class DefaultMessageStoreCleanFilesTest {
         config.setStorePathCommitLog(storePathBuilder.toString());
         String[] paths = config.getStorePathCommitLog().trim().split(MessageStoreConfig.MULTI_PATH_SPLITTER);
         assertEquals(3, paths.length);
-        initMessageStore(config, diskSpaceCleanForciblyRatio);
+        initMessageStore(config, diskSpaceCleanForciblyRatio, diskSpaceWarningLevelRatio);
 
 
 
-        // build and put 55 messages, exactly one message per CommitLog file.
+        // build and put messages, some messages failed to write because the disk is full.
         buildAndPutMessagesToMessageStore(msgCount);
         MappedFileQueue commitLogQueue = getMappedFileQueueCommitLog();
-        assertEquals(fileCountCommitLog, commitLogQueue.getMappedFiles().size());
+        assertTrue(fileCountCommitLog >= commitLogQueue.getMappedFiles().size());
         int fileCountConsumeQueue = getFileCountConsumeQueue();
         MappedFileQueue consumeQueue = getMappedFileQueueConsumeQueue();
-        assertEquals(fileCountConsumeQueue, consumeQueue.getMappedFiles().size());
-        cleanCommitLogService.isSpaceFull();
-
+        assertTrue(fileCountConsumeQueue >= consumeQueue.getMappedFiles().size());
+        assertTrue(cleanCommitLogService.isSpaceFull());
         assertEquals(1 << 4, messageStore.getRunningFlags().getFlagBits() & (1 << 4));
         messageStore.shutdown();
         messageStore.destroy();
@@ -148,7 +150,7 @@ public class DefaultMessageStoreCleanFilesTest {
     public void testDeleteExpiredFilesByTimeUp() throws Exception {
         String deleteWhen = Calendar.getInstance().get(Calendar.HOUR_OF_DAY) + "";
         // the max value of diskMaxUsedSpaceRatio
-        int diskMaxUsedSpaceRatio = 99;
+        int diskMaxUsedSpaceRatio = 1;
         // used to ensure that automatic file deletion is not triggered
         double diskSpaceCleanForciblyRatio = 0.999D;
         initMessageStore(deleteWhen, diskMaxUsedSpaceRatio, diskSpaceCleanForciblyRatio);
@@ -243,7 +245,9 @@ public class DefaultMessageStoreCleanFilesTest {
         int diskMaxUsedSpaceRatio = 1;
         // make sure to trigger the automatic file deletion feature
         double diskSpaceCleanForciblyRatio = 0.01D;
-        initMessageStore(deleteWhen, diskMaxUsedSpaceRatio, diskSpaceCleanForciblyRatio);
+        double diskSpaceWarningLevelRatio = 0.99D;
+        MessageStoreConfig messageStoreConfig = genMessageStoreConfig(deleteWhen, diskMaxUsedSpaceRatio);
+        initMessageStore(messageStoreConfig, diskSpaceCleanForciblyRatio, diskSpaceWarningLevelRatio);
 
         // build and put 55 messages, exactly one message per CommitLog file.
         buildAndPutMessagesToMessageStore(msgCount);
@@ -332,8 +336,8 @@ public class DefaultMessageStoreCleanFilesTest {
         }
     }
 
-    private DefaultMessageStore.CleanCommitLogService getCleanCommitLogService(double diskSpaceCleanForciblyRatio)
-            throws Exception {
+    private DefaultMessageStore.CleanCommitLogService getCleanCommitLogService(double diskSpaceCleanForciblyRatio,
+        double diskSpaceWarningLevelRatio) throws Exception {
         Field serviceField = messageStore.getClass().getDeclaredField("cleanCommitLogService");
         serviceField.setAccessible(true);
         DefaultMessageStore.CleanCommitLogService cleanCommitLogService =
@@ -342,7 +346,7 @@ public class DefaultMessageStoreCleanFilesTest {
 
         Field warningLevelRatioField = cleanCommitLogService.getClass().getDeclaredField("diskSpaceWarningLevelRatio");
         warningLevelRatioField.setAccessible(true);
-        warningLevelRatioField.set(cleanCommitLogService, diskSpaceCleanForciblyRatio);
+        warningLevelRatioField.set(cleanCommitLogService, diskSpaceWarningLevelRatio);
         warningLevelRatioField.setAccessible(false);
 
         Field cleanForciblyRatioField = cleanCommitLogService.getClass().getDeclaredField("diskSpaceCleanForciblyRatio");
@@ -352,8 +356,7 @@ public class DefaultMessageStoreCleanFilesTest {
         return cleanCommitLogService;
     }
 
-    private DefaultMessageStore.CleanConsumeQueueService getCleanConsumeQueueService()
-            throws Exception {
+    private DefaultMessageStore.CleanConsumeQueueService getCleanConsumeQueueService() throws Exception {
         Field serviceField = messageStore.getClass().getDeclaredField("cleanConsumeQueueService");
         serviceField.setAccessible(true);
         DefaultMessageStore.CleanConsumeQueueService cleanConsumeQueueService =
@@ -362,8 +365,10 @@ public class DefaultMessageStoreCleanFilesTest {
         return cleanConsumeQueueService;
     }
 
-    private MappedFileQueue getMappedFileQueueConsumeQueue()
-            throws Exception {
+    private MappedFileQueue getMappedFileQueueConsumeQueue() throws Exception {
+        if (!messageStore.getConsumeQueueTable().containsKey(topic)) {
+            return new MappedFileQueue(null, mappedFileSize, null);
+        }
         ConsumeQueue consumeQueue = messageStore.getConsumeQueueTable().get(topic).get(queueId);
         Field queueField = consumeQueue.getClass().getDeclaredField("mappedFileQueue");
         queueField.setAccessible(true);
@@ -435,8 +440,7 @@ public class DefaultMessageStoreCleanFilesTest {
             msg.setStoreHost(storeHost);
             msg.setBornHost(bornHost);
             msg.setPropertiesString(MessageDecoder.messageProperties2String(msg.getProperties()));
-            PutMessageResult result = messageStore.putMessage(msg);
-            assertTrue(result != null && result.isOk());
+            messageStore.putMessage(msg);
         }
 
         StoreTestUtil.waitCommitLogReput(messageStore);
@@ -455,8 +459,8 @@ public class DefaultMessageStoreCleanFilesTest {
         }
     }
 
-    private void initMessageStore(String deleteWhen, int diskMaxUsedSpaceRatio, double diskSpaceCleanForciblyRatio) throws Exception {
-        initMessageStore(genMessageStoreConfig(deleteWhen,diskMaxUsedSpaceRatio), diskSpaceCleanForciblyRatio);
+    private void initMessageStore(String deleteWhen, int diskMaxUsedSpaceRatio, double diskSpaceCleanRatio) throws Exception {
+        initMessageStore(genMessageStoreConfig(deleteWhen, diskMaxUsedSpaceRatio), diskSpaceCleanRatio, diskSpaceCleanRatio);
     }
 
     private MessageStoreConfig genMessageStoreConfig(String deleteWhen, int diskMaxUsedSpaceRatio) {
@@ -484,11 +488,12 @@ public class DefaultMessageStoreCleanFilesTest {
         return messageStoreConfig;
     }
 
-    private void initMessageStore(MessageStoreConfig messageStoreConfig, double diskSpaceCleanForciblyRatio) throws Exception {
+    private void initMessageStore(MessageStoreConfig messageStoreConfig, double diskSpaceCleanForciblyRatio,
+        double diskSpaceWarningLevelRatio) throws Exception {
         messageStore = new DefaultMessageStore(messageStoreConfig,
                 new BrokerStatsManager("test", true), new MyMessageArrivingListener(), new BrokerConfig());
 
-        cleanCommitLogService = getCleanCommitLogService(diskSpaceCleanForciblyRatio);
+        cleanCommitLogService = getCleanCommitLogService(diskSpaceCleanForciblyRatio, diskSpaceWarningLevelRatio);
         cleanConsumeQueueService = getCleanConsumeQueueService();
 
         assertTrue(messageStore.load());
diff --git a/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java b/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java
index 0e3e01d..88637db 100644
--- a/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java
+++ b/store/src/test/java/org/apache/rocketmq/store/dledger/DLedgerCommitlogTest.java
@@ -161,7 +161,7 @@ public class DLedgerCommitlogTest extends MessageStoreTestBase {
             Assert.assertEquals(PutMessageStatus.PUT_OK, putMessageResult.getPutMessageStatus());
             Assert.assertEquals(i, putMessageResult.getAppendMessageResult().getLogicsOffset());
         }
-        Thread.sleep(100);
+        Thread.sleep(500);
         Assert.assertEquals(0, messageStore.getMinOffsetInQueue(topic, 0));
         Assert.assertEquals(10, messageStore.getMaxOffsetInQueue(topic, 0));
         Assert.assertEquals(0, messageStore.dispatchBehindBytes());