Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
pulsar
提交
bd18ebc8
pulsar
项目概览
apache
/
pulsar
通知
129
Star
40
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
pulsar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
体验新版 GitCode,发现更多精彩内容 >>
提交
bd18ebc8
编写于
9月 11, 2016
作者:
M
Matteo Merli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Made ServerCnx timeout test to execute all steps in same thread
上级
0c4116a4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
70 deletion
+38
-70
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/service/ServerCnxTest.java
...t/java/com/yahoo/pulsar/broker/service/ServerCnxTest.java
+38
-70
未找到文件。
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/service/ServerCnxTest.java
浏览文件 @
bd18ebc8
...
...
@@ -32,6 +32,7 @@ import static org.testng.Assert.assertTrue;
import
java.io.IOException
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -616,15 +617,12 @@ public class ServerCnxTest {
setChannelConnected
();
// Delay the topic creation in a deterministic way
CountDownLatch
successTopicCreationDelayLatch
=
new
CountDownLatch
(
1
);
doAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
successTopicCreationDelayLatch
.
await
();
CompletableFuture
<
Runnable
>
openTopicFuture
=
new
CompletableFuture
<>();
doAnswer
(
invocationOnMock
->
{
openTopicFuture
.
complete
(()
->
{
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
]).
openLedgerComplete
(
ledgerMock
,
null
);
return
null
;
}
})
;
return
null
;
}).
when
(
mlFactoryMock
).
asyncOpen
(
matches
(
".*success.*"
),
any
(
ManagedLedgerConfig
.
class
),
any
(
OpenLedgerCallback
.
class
),
anyObject
());
...
...
@@ -649,7 +647,8 @@ public class ServerCnxTest {
producerName
);
channel
.
writeInbound
(
createProducer2
);
successTopicCreationDelayLatch
.
countDown
();
// Complete the topic opening
openTopicFuture
.
get
().
run
();
// Close succeeds
Object
response
=
getResponse
();
...
...
@@ -749,36 +748,21 @@ public class ServerCnxTest {
channel
.
finish
();
}
@Test
(
timeOut
=
30000
)
@Test
(
timeOut
=
30000
,
invocationCount
=
1
,
skipFailedInvocations
=
true
)
public
void
testCreateProducerBookieTimeout
()
throws
Exception
{
resetChannel
();
setChannelConnected
();
// Delay the topic creation in a deterministic way
CountDownLatch
failedTopicCreationDelayLatch
=
new
CountDownLatch
(
1
);
doAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
failedTopicCreationDelayLatch
.
await
();
CompletableFuture
<
Runnable
>
openFailedTopic
=
new
CompletableFuture
<>();
doAnswer
(
invocationOnMock
->
{
openFailedTopic
.
complete
(()
->
{
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
]).
openLedgerComplete
(
ledgerMock
,
null
);
return
null
;
}
})
;
return
null
;
}).
when
(
mlFactoryMock
).
asyncOpen
(
matches
(
".*fail.*"
),
any
(
ManagedLedgerConfig
.
class
),
any
(
OpenLedgerCallback
.
class
),
anyObject
());
CountDownLatch
topicCreationDelayLatch
=
new
CountDownLatch
(
1
);
doAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
topicCreationDelayLatch
.
await
();
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
]).
openLedgerComplete
(
ledgerMock
,
null
);
return
null
;
}
}).
when
(
mlFactoryMock
).
asyncOpen
(
matches
(
".*success.*"
),
any
(
ManagedLedgerConfig
.
class
),
any
(
OpenLedgerCallback
.
class
),
anyObject
());
// In a create producer timeout from client side we expect to see this sequence of commands :
// 1. create a failure producer which will timeout creation after 100msec
// 2. close producer
...
...
@@ -801,8 +785,8 @@ public class ServerCnxTest {
producerName
);
channel
.
writeInbound
(
createProducer2
);
failedTopicCreationDelayLatch
.
countDown
();
topicCreationDelayLatch
.
countDow
n
();
// Now the topic gets opened
openFailedTopic
.
get
().
ru
n
();
// Close succeeds
Object
response
=
getResponse
();
...
...
@@ -840,17 +824,13 @@ public class ServerCnxTest {
setChannelConnected
();
// Delay the topic creation in a deterministic way
Co
untDownLatch
topicCreationDelayLatch
=
new
CountDownLatch
(
1
);
doAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
topicCreationDelayLatch
.
await
(
);
Co
mpletableFuture
<
Runnable
>
openTopicTask
=
new
CompletableFuture
<>(
);
doAnswer
(
invocationOnMock
->
{
openTopicTask
.
complete
(()
->
{
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
]).
openLedgerComplete
(
ledgerMock
,
null
);
}
);
synchronized
(
ServerCnxTest
.
this
)
{
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
]).
openLedgerComplete
(
ledgerMock
,
null
);
}
return
null
;
}
return
null
;
}).
when
(
mlFactoryMock
).
asyncOpen
(
matches
(
".*success.*"
),
any
(
ManagedLedgerConfig
.
class
),
any
(
OpenLedgerCallback
.
class
),
anyObject
());
...
...
@@ -881,7 +861,7 @@ public class ServerCnxTest {
successSubName
,
1
/* consumer id */
,
5
/* request id */
,
SubType
.
Exclusive
,
"test"
/* consumer name */
);
channel
.
writeInbound
(
subscribe4
);
topicCreationDelayLatch
.
countDow
n
();
openTopicTask
.
get
().
ru
n
();
Object
response
;
...
...
@@ -918,35 +898,22 @@ public class ServerCnxTest {
setChannelConnected
();
// Delay the topic creation in a deterministic way
CountDownLatch
successTopicCreationDelayLatch
=
new
CountDownLatch
(
1
);
doAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
successTopicCreationDelayLatch
.
await
();
CompletableFuture
<
Runnable
>
openTopicSuccess
=
new
CompletableFuture
<>();
doAnswer
(
invocationOnMock
->
{
openTopicSuccess
.
complete
(()
->
{
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
]).
openLedgerComplete
(
ledgerMock
,
null
);
return
null
;
}
})
;
return
null
;
}).
when
(
mlFactoryMock
).
asyncOpen
(
matches
(
".*success.*"
),
any
(
ManagedLedgerConfig
.
class
),
any
(
OpenLedgerCallback
.
class
),
anyObject
());
CountDownLatch
failedTopicCreationDelayLatch
=
new
CountDownLatch
(
1
);
doAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
new
Thread
(()
->
{
try
{
failedTopicCreationDelayLatch
.
await
();
}
catch
(
InterruptedException
e
)
{
}
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
])
.
openLedgerFailed
(
new
ManagedLedgerException
(
"Managed ledger failure"
),
null
);
}).
start
();
return
null
;
}
CompletableFuture
<
Runnable
>
openTopicFail
=
new
CompletableFuture
<>();
doAnswer
(
invocationOnMock
->
{
openTopicFail
.
complete
(()
->
{
((
OpenLedgerCallback
)
invocationOnMock
.
getArguments
()[
2
])
.
openLedgerFailed
(
new
ManagedLedgerException
(
"Managed ledger failure"
),
null
);
});
return
null
;
}).
when
(
mlFactoryMock
).
asyncOpen
(
matches
(
".*fail.*"
),
any
(
ManagedLedgerConfig
.
class
),
any
(
OpenLedgerCallback
.
class
),
anyObject
());
...
...
@@ -969,8 +936,7 @@ public class ServerCnxTest {
successSubName
,
1
/* consumer id */
,
3
/* request id */
,
SubType
.
Exclusive
,
"test"
/* consumer name */
);
channel
.
writeInbound
(
subscribe2
);
successTopicCreationDelayLatch
.
countDown
();
failedTopicCreationDelayLatch
.
countDown
();
openTopicFail
.
get
().
run
();
Object
response
;
...
...
@@ -992,6 +958,8 @@ public class ServerCnxTest {
successSubName
,
1
/* consumer id */
,
4
/* request id */
,
SubType
.
Exclusive
,
"test"
/* consumer name */
);
channel
.
writeInbound
(
subscribe3
);
openTopicSuccess
.
get
().
run
();
// Subscribe succeeds
response
=
getResponse
();
assertEquals
(
response
.
getClass
(),
CommandSuccess
.
class
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录