Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
Rocketmq
提交
2e04ca76
R
Rocketmq
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
Rocketmq
与 Fork 源项目一致
Fork自
Apache RocketMQ / Rocketmq
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rocketmq
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
2e04ca76
编写于
2月 26, 2019
作者:
R
ranqiqiang
提交者:
dinglei
2月 26, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[RIP-10]fix-bug: ScheduleMessageServiceTest (#869)
[RIP-10]fix-bug: ScheduleMessageServiceTest
上级
6eff5048
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
55 deletion
+47
-55
store/src/test/java/org/apache/rocketmq/store/schedule/ScheduleMessageServiceTest.java
...e/rocketmq/store/schedule/ScheduleMessageServiceTest.java
+47
-55
未找到文件。
store/src/test/java/org/apache/rocketmq/store/schedule/ScheduleMessageServiceTest.java
浏览文件 @
2e04ca76
...
...
@@ -16,6 +16,7 @@
*/
package
org.apache.rocketmq.store.schedule
;
import
org.apache.rocketmq.common.BrokerConfig
;
import
org.apache.rocketmq.common.UtilAll
;
import
org.apache.rocketmq.common.message.MessageDecoder
;
...
...
@@ -45,17 +46,17 @@ import static org.assertj.core.api.Assertions.assertThat;
public
class
ScheduleMessageServiceTest
{
/**t
/**
* t
* defaultMessageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h"
*/
String
testMessageDelayLevel
=
"
5s 10
s"
;
String
testMessageDelayLevel
=
"
2s 3
s"
;
/**
* choose delay level
* 1 = 5s
*/
int
delayLevel
=
1
;
int
delayLevel
=
2
;
private
static
final
String
storePath
=
System
.
getProperty
(
"user.home"
)
+
File
.
separator
+
"schedule_test"
+
UUID
.
randomUUID
();
private
static
final
String
storePath
=
System
.
getProperty
(
"user.home"
)
+
File
.
separator
+
"schedule_test#"
+
UUID
.
randomUUID
();
private
static
final
int
commitLogFileSize
=
1024
;
private
static
final
int
cqFileSize
=
10
;
private
static
final
int
cqExtFileSize
=
10
*
(
ConsumeQueueExt
.
CqExtUnit
.
MIN_EXT_UNIT_SIZE
+
64
);
...
...
@@ -67,7 +68,9 @@ public class ScheduleMessageServiceTest {
BrokerConfig
brokerConfig
;
ScheduleMessageService
scheduleMessageService
;
static
String
sendMessage
=
" ------- schedule message test -------"
;
static
String
sendMessage
=
" ------- schedule message test -------"
;
static
String
topic
=
"schedule_topic_test"
;
static
String
messageGroup
=
"delayGroupTest"
;
static
{
...
...
@@ -107,67 +110,39 @@ public class ScheduleMessageServiceTest {
}
@Test
public
void
buildRunningStatsTest
()
throws
InterruptedException
{
MessageExtBrokerInner
msg
=
buildMessage
();
msg
.
setDelayTimeLevel
(
delayLevel
);
messageStore
.
putMessage
(
msg
);
// wait offsetTable
TimeUnit
.
SECONDS
.
sleep
(
1
);
scheduleMessageService
.
buildRunningStats
(
new
HashMap
<
String
,
String
>()
);
}
@Test
public
void
computeDeliverTimestampTest
()
{
// testMessageDelayLevel just "5s 10s"
long
storeTime
=
System
.
currentTimeMillis
();
long
time1
=
scheduleMessageService
.
computeDeliverTimestamp
(
1
,
storeTime
);
assertThat
(
time1
).
isEqualTo
(
storeTime
+
5
*
1000
);
long
time2
=
scheduleMessageService
.
computeDeliverTimestamp
(
2
,
storeTime
);
assertThat
(
time2
).
isEqualTo
(
storeTime
+
10
*
1000
);
}
@Test
public
void
delayLevel2QueueIdTest
()
{
int
queueId
=
ScheduleMessageService
.
delayLevel2QueueId
(
delayLevel
);
assertThat
(
queueId
).
isEqualTo
(
delayLevel
-
1
);
queueId
=
ScheduleMessageService
.
queueId2DelayLevel
(
delayLevel
);
assertThat
(
queueId
).
isEqualTo
(
delayLevel
+
1
);
}
@Test
public
void
deliverDelayedMessageTimerTaskTest
()
throws
InterruptedException
{
MessageExtBrokerInner
msg
=
buildMessage
();
int
realQueueId
=
msg
.
getQueueId
();
// set delayLevel,and send delay message
msg
.
setDelayTimeLevel
(
delayLevel
);
PutMessageResult
result
=
messageStore
.
putMessage
(
msg
);
assertThat
(
result
.
isOk
()).
isTrue
();
// consumer message
int
delayQueueId
=
ScheduleMessageService
.
delayLevel2QueueId
(
delayLevel
);
assertThat
(
delayQueueId
).
isEqualTo
(
delayLevel
-
1
);
Long
offset
=
result
.
getAppendMessageResult
().
getLogicsOffset
();
String
messageGroup
=
"delayGroupTest"
;
GetMessageResult
messageResult
=
messageStore
.
getMessage
(
messageGroup
,
msg
.
getTopic
(),
msg
.
getQueueId
(),
offset
,
1
,
null
);
// now, no message in queue,must wait > 5 seconds
// now, no message in queue,must wait > delayTime
GetMessageResult
messageResult
=
getMessage
(
realQueueId
,
offset
);
assertThat
(
messageResult
.
getStatus
()).
isEqualTo
(
GetMessageStatus
.
NO_MESSAGE_IN_QUEUE
);
// timer run maybe delay, then consumer message again
// and wait offsetTable
TimeUnit
.
SECONDS
.
sleep
(
3
);
scheduleMessageService
.
buildRunningStats
(
new
HashMap
<
String
,
String
>());
TimeUnit
.
SECONDS
.
sleep
(
6
);
messageResult
=
messageStore
.
getMessage
(
messageGroup
,
msg
.
getTopic
(),
msg
.
getQueueId
(),
offset
,
1
,
null
);
messageResult
=
getMessage
(
realQueueId
,
offset
);
// now,found the message
assertThat
(
messageResult
.
getStatus
()).
isEqualTo
(
GetMessageStatus
.
FOUND
);
// get the message body
ByteBuffer
byteBuffer
=
ByteBuffer
.
allocate
(
messageResult
.
getBufferTotalSize
());
List
<
ByteBuffer
>
byteBufferList
=
messageResult
.
getMessageBufferList
();
List
<
ByteBuffer
>
byteBufferList
=
messageResult
.
getMessageBufferList
();
for
(
ByteBuffer
bb
:
byteBufferList
)
{
byteBuffer
.
put
(
bb
);
}
...
...
@@ -178,22 +153,42 @@ public class ScheduleMessageServiceTest {
String
retryMsg
=
new
String
(
msgList
.
get
(
0
).
getBody
());
assertThat
(
sendMessage
).
isEqualTo
(
retryMsg
);
// method will wait 10s,so I run it by myself
scheduleMessageService
.
persist
();
// add mapFile release
messageResult
.
release
();
}
/**
* add some [error/no use] code test
*/
@Test
public
void
persist
(){
// because of the method will wait 10s
scheduleMessageService
.
persist
();
public
void
otherTest
()
{
// the method no use ,why need ?
int
queueId
=
ScheduleMessageService
.
queueId2DelayLevel
(
delayLevel
);
assertThat
(
queueId
).
isEqualTo
(
delayLevel
+
1
);
// error delayLevelTest
Long
time
=
scheduleMessageService
.
computeDeliverTimestamp
(
999
,
0
);
assertThat
(
time
).
isEqualTo
(
1000
);
// just decode
scheduleMessageService
.
decode
(
new
DelayOffsetSerializeWrapper
().
toJson
());
}
private
GetMessageResult
getMessage
(
int
queueId
,
Long
offset
)
{
return
messageStore
.
getMessage
(
messageGroup
,
topic
,
queueId
,
offset
,
1
,
null
);
}
@After
public
void
shutdown
()
throws
InterruptedException
{
TimeUnit
.
SECONDS
.
sleep
(
1
);
scheduleMessageService
.
shutdown
();
messageStore
.
shutdown
();
messageStore
.
destroy
();
File
file
=
new
File
(
messageStoreConfig
.
getStorePathRootDir
());
...
...
@@ -205,11 +200,10 @@ public class ScheduleMessageServiceTest {
byte
[]
msgBody
=
sendMessage
.
getBytes
();
MessageExtBrokerInner
msg
=
new
MessageExtBrokerInner
();
msg
.
setTopic
(
"schedule_topic_test"
);
msg
.
setTopic
(
topic
);
msg
.
setTags
(
"schedule_tag"
);
msg
.
setKeys
(
"schedule_key"
);
msg
.
setBody
(
msgBody
);
msg
.
setQueueId
(
0
);
msg
.
setSysFlag
(
0
);
msg
.
setBornTimestamp
(
System
.
currentTimeMillis
());
msg
.
setStoreHost
(
storeHost
);
...
...
@@ -226,6 +220,4 @@ public class ScheduleMessageServiceTest {
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录