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());