Skip to content

Commit 9e6a94f

Browse files
committed
fix unit test on windows
1 parent f179427 commit 9e6a94f

File tree

5 files changed

+33
-21
lines changed

5 files changed

+33
-21
lines changed

tieredstore/src/main/java/org/apache/rocketmq/tieredstore/index/IndexStoreFile.java

+2
Original file line numberDiff line numberDiff line change
@@ -457,9 +457,11 @@ public void shutdown() {
457457
this.fileStatus.set(IndexStatusEnum.SHUTDOWN);
458458
if (this.mappedFile != null) {
459459
this.mappedFile.shutdown(TimeUnit.SECONDS.toMillis(10));
460+
this.mappedFile = null;
460461
}
461462
if (this.compactMappedFile != null) {
462463
this.compactMappedFile.shutdown(TimeUnit.SECONDS.toMillis(10));
464+
this.compactMappedFile = null;
463465
}
464466
} catch (Exception e) {
465467
log.error("IndexStoreFile shutdown failed, timestamp: {}, status: {}", this.getTimestamp(), fileStatus.get(), e);

tieredstore/src/main/java/org/apache/rocketmq/tieredstore/index/IndexStoreService.java

+8-3
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,12 @@ private void doConvertOldFormatFile(String filePath) {
8787
}
8888
MappedFile mappedFile = new DefaultMappedFile(file.getPath(), (int) file.length());
8989
long timestamp = mappedFile.getMappedByteBuffer().getLong(IndexStoreFile.INDEX_BEGIN_TIME_STAMP);
90-
mappedFile.renameTo(String.valueOf(new File(file.getParent(), String.valueOf(timestamp))));
91-
mappedFile.shutdown(TimeUnit.SECONDS.toMillis(10));
90+
if (timestamp <= 0) {
91+
mappedFile.destroy(TimeUnit.SECONDS.toMillis(10));
92+
} else {
93+
mappedFile.renameTo(String.valueOf(new File(file.getParent(), String.valueOf(timestamp))));
94+
mappedFile.shutdown(TimeUnit.SECONDS.toMillis(10));
95+
}
9296
} catch (Exception e) {
9397
log.error("IndexStoreService do convert old format error, file: {}", filePath, e);
9498
}
@@ -141,7 +145,7 @@ private void recover() {
141145
log.info("IndexStoreService recover load remote file, timestamp: {}", indexFile.getTimestamp());
142146
}
143147

144-
log.info("IndexStoreService recover finished, entrySize: {}, cost: {}ms, filePath: {}",
148+
log.info("IndexStoreService recover finished, entrySize: {}, cost: {}ms, directory: {}",
145149
timeStoreTable.size(), stopwatch.elapsed(TimeUnit.MILLISECONDS), dir.getAbsolutePath());
146150
}
147151

@@ -352,6 +356,7 @@ public void shutdown() {
352356
for (Map.Entry<Long /* timestamp */, IndexFile> entry : timeStoreTable.entrySet()) {
353357
entry.getValue().shutdown();
354358
}
359+
this.timeStoreTable.clear();
355360
log.info("IndexStoreService shutdown gracefully");
356361
}
357362
}

tieredstore/src/main/java/org/apache/rocketmq/tieredstore/provider/posix/PosixFileSegment.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public PosixFileSegment(TieredMessageStoreConfig storeConfig,
7474
String clusterBasePath = TieredStoreUtil.getHash(brokerClusterName) + UNDERLINE + brokerClusterName;
7575
this.fullPath = Paths.get(basePath, clusterBasePath, filePath,
7676
fileType.toString(), TieredStoreUtil.offset2FileName(baseOffset)).toString();
77-
logger.debug("Constructing Posix FileSegment, filePath: {}", fullPath);
77+
logger.info("Constructing Posix FileSegment, filePath: {}", fullPath);
7878

7979
createFile();
8080
}

tieredstore/src/test/java/org/apache/rocketmq/tieredstore/index/IndexStoreFileTest.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,18 @@ public class IndexStoreFileTest {
5050
private static final String KEY = "MessageKey";
5151
private static final Set<String> KEY_SET = Collections.singleton(KEY);
5252

53+
private String filePath;
5354
private TieredMessageStoreConfig storeConfig;
5455
private IndexStoreFile indexStoreFile;
5556

5657
@Before
5758
public void init() throws IOException {
5859
TieredStoreExecutor.init();
59-
String filePath = Paths.get(System.getProperty("user.home"), "store_test",
60-
UUID.randomUUID().toString().replace("-", "").substring(0, 8)).toString();
60+
filePath = UUID.randomUUID().toString().replace("-", "").substring(0, 8);
61+
String directory = Paths.get(System.getProperty("user.home"), "store_test", filePath).toString();
6162
storeConfig = new TieredMessageStoreConfig();
62-
storeConfig.setTieredStoreFilePath(filePath);
63+
storeConfig.setStorePathRootDir(directory);
64+
storeConfig.setTieredStoreFilePath(directory);
6365
storeConfig.setTieredStoreIndexFileMaxHashSlotNum(5);
6466
storeConfig.setTieredStoreIndexFileMaxIndexNum(20);
6567
storeConfig.setTieredBackendServiceProvider("org.apache.rocketmq.tieredstore.provider.posix.PosixFileSegment");
@@ -73,6 +75,7 @@ public void shutdown() {
7375
this.indexStoreFile.destroy();
7476
}
7577
TieredStoreTestUtil.destroyMetadataStore();
78+
TieredStoreTestUtil.destroyTempDir(storeConfig.getStorePathRootDir());
7679
TieredStoreTestUtil.destroyTempDir(storeConfig.getTieredStoreFilePath());
7780
TieredStoreExecutor.shutdown();
7881
}
@@ -214,15 +217,14 @@ public void recoverFileTest() throws IOException {
214217
@Test
215218
public void doCompactionTest() throws Exception {
216219
long timestamp = indexStoreFile.getTimestamp();
217-
indexStoreFile = new IndexStoreFile(storeConfig, System.currentTimeMillis());
218220
for (int i = 0; i < 10; i++) {
219221
Assert.assertEquals(AppendResult.SUCCESS, indexStoreFile.putKey(
220222
TOPIC_NAME, TOPIC_ID, QUEUE_ID, KEY_SET, MESSAGE_OFFSET, MESSAGE_SIZE, timestamp));
221223
}
222224

223225
ByteBuffer byteBuffer = indexStoreFile.doCompaction();
224226
TieredFileSegment fileSegment = new PosixFileSegment(
225-
storeConfig, FileSegmentType.INDEX, "store_index", 0L);
227+
storeConfig, FileSegmentType.INDEX, filePath, 0L);
226228
fileSegment.append(byteBuffer, timestamp);
227229
fileSegment.commit();
228230
Assert.assertEquals(byteBuffer.limit(), fileSegment.getSize());
@@ -255,7 +257,7 @@ public void queryAsyncFromSegmentFileTest() throws ExecutionException, Interrupt
255257

256258
ByteBuffer byteBuffer = indexStoreFile.doCompaction();
257259
TieredFileSegment fileSegment = new PosixFileSegment(
258-
storeConfig, FileSegmentType.INDEX, "store_index", 0L);
260+
storeConfig, FileSegmentType.INDEX, filePath, 0L);
259261
fileSegment.append(byteBuffer, timestamp);
260262
fileSegment.commit();
261263
Assert.assertEquals(byteBuffer.limit(), fileSegment.getSize());

tieredstore/src/test/java/org/apache/rocketmq/tieredstore/index/IndexStoreServiceTest.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import org.apache.rocketmq.common.ThreadFactoryImpl;
3737
import org.apache.rocketmq.logging.org.slf4j.Logger;
3838
import org.apache.rocketmq.logging.org.slf4j.LoggerFactory;
39+
import org.apache.rocketmq.store.logfile.DefaultMappedFile;
40+
import org.apache.rocketmq.tieredstore.TieredStoreTestUtil;
3941
import org.apache.rocketmq.tieredstore.common.AppendResult;
4042
import org.apache.rocketmq.tieredstore.common.TieredMessageStoreConfig;
4143
import org.apache.rocketmq.tieredstore.common.TieredStoreExecutor;
@@ -67,10 +69,11 @@ public class IndexStoreServiceTest {
6769
@Before
6870
public void init() throws IOException, ClassNotFoundException, NoSuchMethodException {
6971
TieredStoreExecutor.init();
70-
filePath = Paths.get(System.getProperty("user.home"), "store_test",
71-
UUID.randomUUID().toString().replace("-", "").substring(0, 8)).toString();
72+
filePath = UUID.randomUUID().toString().replace("-", "").substring(0, 8);
73+
String directory = Paths.get(System.getProperty("user.home"), "store_test", filePath).toString();
7274
storeConfig = new TieredMessageStoreConfig();
73-
storeConfig.setStorePathRootDir(filePath);
75+
storeConfig.setStorePathRootDir(directory);
76+
storeConfig.setTieredStoreFilePath(directory);
7477
storeConfig.setTieredStoreIndexFileMaxHashSlotNum(5);
7578
storeConfig.setTieredStoreIndexFileMaxIndexNum(20);
7679
storeConfig.setTieredBackendServiceProvider("org.apache.rocketmq.tieredstore.provider.posix.PosixFileSegment");
@@ -83,6 +86,9 @@ public void shutdown() {
8386
indexService.shutdown();
8487
indexService.destroy();
8588
}
89+
TieredStoreTestUtil.destroyMetadataStore();
90+
TieredStoreTestUtil.destroyTempDir(storeConfig.getStorePathRootDir());
91+
TieredStoreTestUtil.destroyTempDir(storeConfig.getTieredStoreFilePath());
8692
TieredStoreExecutor.shutdown();
8793
}
8894

@@ -99,26 +105,23 @@ public void basicServiceTest() throws InterruptedException {
99105
}
100106

101107
@Test
102-
public void doConvertOldFormatTest() {
108+
public void doConvertOldFormatTest() throws IOException {
103109
indexService = new IndexStoreService(fileAllocator, filePath);
104110
long timestamp = indexService.getTimeStoreTable().firstKey();
105111
Assert.assertEquals(AppendResult.SUCCESS, indexService.putKey(
106112
TOPIC_NAME, TOPIC_ID, QUEUE_ID, KEY_SET, MESSAGE_OFFSET, MESSAGE_SIZE, timestamp));
107113
indexService.shutdown();
108114

109115
File file = new File(Paths.get(filePath, IndexStoreService.FILE_DIRECTORY_NAME, String.valueOf(timestamp)).toString());
110-
log.info(filePath);
111-
log.info(file.getPath());
112-
Assert.assertTrue(file.exists());
113-
114-
Assert.assertTrue(file.renameTo(new File(file.getParent(), "0000")));
115-
file = new File(Paths.get(file.getParent(), "0000").toString());
116-
Assert.assertTrue(file.exists());
116+
DefaultMappedFile mappedFile = new DefaultMappedFile(file.getName(), (int) file.length());
117+
mappedFile.renameTo(String.valueOf(new File(file.getParent(), "0000")));
118+
mappedFile.shutdown(10 * 1000);
117119

118120
indexService = new IndexStoreService(fileAllocator, filePath);
119121
ConcurrentSkipListMap<Long, IndexFile> timeStoreTable = indexService.getTimeStoreTable();
120122
Assert.assertEquals(1, timeStoreTable.size());
121123
Assert.assertEquals(Long.valueOf(timestamp), timeStoreTable.firstKey());
124+
mappedFile.destroy(10 * 1000);
122125
}
123126

124127
@Test

0 commit comments

Comments
 (0)