Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
pulsar
提交
df34ae7c
pulsar
项目概览
apache
/
pulsar
通知
129
Star
40
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
pulsar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
体验新版 GitCode,发现更多精彩内容 >>
提交
df34ae7c
编写于
4月 13, 2017
作者:
R
Rajan
提交者:
GitHub
4月 13, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix import into AdminApiTest and introduce disable-namespaceBundle unit test (#354)
上级
19399e0f
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
65 addition
and
31 deletion
+65
-31
pulsar-broker/src/main/java/com/yahoo/pulsar/broker/service/BrokerService.java
...n/java/com/yahoo/pulsar/broker/service/BrokerService.java
+1
-1
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/admin/AdminApiTest.java
...test/java/com/yahoo/pulsar/broker/admin/AdminApiTest.java
+1
-30
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/admin/NamespacesTest.java
...st/java/com/yahoo/pulsar/broker/admin/NamespacesTest.java
+33
-0
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/service/BrokerServiceTest.java
...va/com/yahoo/pulsar/broker/service/BrokerServiceTest.java
+30
-0
未找到文件。
pulsar-broker/src/main/java/com/yahoo/pulsar/broker/service/BrokerService.java
浏览文件 @
df34ae7c
...
@@ -439,7 +439,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
...
@@ -439,7 +439,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
* @return CompletableFuture<Topic>
* @return CompletableFuture<Topic>
* @throws RuntimeException
* @throws RuntimeException
*/
*/
pr
ivate
CompletableFuture
<
Topic
>
createPersistentTopic
(
final
String
topic
)
throws
RuntimeException
{
pr
otected
CompletableFuture
<
Topic
>
createPersistentTopic
(
final
String
topic
)
throws
RuntimeException
{
checkTopicNsOwnership
(
topic
);
checkTopicNsOwnership
(
topic
);
final
CompletableFuture
<
Topic
>
topicFuture
=
new
CompletableFuture
<>();
final
CompletableFuture
<
Topic
>
topicFuture
=
new
CompletableFuture
<>();
...
...
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/admin/AdminApiTest.java
浏览文件 @
df34ae7c
...
@@ -57,6 +57,7 @@ import com.yahoo.pulsar.broker.ServiceConfiguration;
...
@@ -57,6 +57,7 @@ import com.yahoo.pulsar.broker.ServiceConfiguration;
import
com.yahoo.pulsar.broker.auth.MockedPulsarServiceBaseTest
;
import
com.yahoo.pulsar.broker.auth.MockedPulsarServiceBaseTest
;
import
com.yahoo.pulsar.broker.namespace.NamespaceEphemeralData
;
import
com.yahoo.pulsar.broker.namespace.NamespaceEphemeralData
;
import
com.yahoo.pulsar.broker.namespace.NamespaceService
;
import
com.yahoo.pulsar.broker.namespace.NamespaceService
;
import
com.yahoo.pulsar.broker.service.BrokerService
;
import
com.yahoo.pulsar.client.admin.PulsarAdmin
;
import
com.yahoo.pulsar.client.admin.PulsarAdmin
;
import
com.yahoo.pulsar.client.admin.PulsarAdminException
;
import
com.yahoo.pulsar.client.admin.PulsarAdminException
;
import
com.yahoo.pulsar.client.admin.PulsarAdminException.ConflictException
;
import
com.yahoo.pulsar.client.admin.PulsarAdminException.ConflictException
;
...
@@ -1697,34 +1698,4 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
...
@@ -1697,34 +1698,4 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
assertEquals
(
uriStats
.
get
().
subscriptions
.
size
(),
1
);
assertEquals
(
uriStats
.
get
().
subscriptions
.
size
(),
1
);
}
}
/**
* Verifies that deleteNamespace cleans up policies(global,local), bundle cache and bundle ownership
*
* @throws Exception
*/
@Test
public
void
testDeleteNamespace
()
throws
Exception
{
final
String
namespace
=
"prop-xyz/use/deleteNs"
;
admin
.
namespaces
().
createNamespace
(
namespace
,
100
);
assertEquals
(
admin
.
namespaces
().
getPolicies
(
namespace
).
bundles
.
numBundles
,
100
);
// (1) Force topic creation and namespace being loaded
final
String
topicName
=
"persistent://"
+
namespace
+
"/my-topic"
;
DestinationName
destination
=
DestinationName
.
get
(
topicName
);
Producer
producer
=
pulsarClient
.
createProducer
(
topicName
);
producer
.
close
();
NamespaceBundle
bundle1
=
pulsar
.
getNamespaceService
().
getBundle
(
destination
);
// (2) Delete topic
admin
.
persistentTopics
().
delete
(
topicName
);
// (3) Delete ns
admin
.
namespaces
().
deleteNamespace
(
namespace
);
// (4) check bundle
NamespaceBundle
bundle2
=
pulsar
.
getNamespaceService
().
getBundle
(
destination
);
assertNotEquals
(
bundle1
.
getBundleRange
(),
bundle2
.
getBundleRange
());
// returns full bundle if policies not present
assertEquals
(
"0x00000000_0xffffffff"
,
bundle2
.
getBundleRange
());
}
}
}
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/admin/NamespacesTest.java
浏览文件 @
df34ae7c
...
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.spy;
...
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.spy;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
testng
.
Assert
.
assertEquals
;
import
static
org
.
testng
.
Assert
.
assertEquals
;
import
static
org
.
testng
.
Assert
.
assertNotEquals
;
import
static
org
.
testng
.
Assert
.
assertNotNull
;
import
static
org
.
testng
.
Assert
.
assertNotNull
;
import
static
org
.
testng
.
Assert
.
assertTrue
;
import
static
org
.
testng
.
Assert
.
assertTrue
;
import
static
org
.
testng
.
Assert
.
fail
;
import
static
org
.
testng
.
Assert
.
fail
;
...
@@ -63,6 +64,7 @@ import com.yahoo.pulsar.broker.namespace.OwnershipCache;
...
@@ -63,6 +64,7 @@ import com.yahoo.pulsar.broker.namespace.OwnershipCache;
import
com.yahoo.pulsar.broker.web.PulsarWebResource
;
import
com.yahoo.pulsar.broker.web.PulsarWebResource
;
import
com.yahoo.pulsar.broker.web.RestException
;
import
com.yahoo.pulsar.broker.web.RestException
;
import
com.yahoo.pulsar.client.admin.PulsarAdminException
;
import
com.yahoo.pulsar.client.admin.PulsarAdminException
;
import
com.yahoo.pulsar.client.api.Producer
;
import
com.yahoo.pulsar.common.naming.DestinationName
;
import
com.yahoo.pulsar.common.naming.DestinationName
;
import
com.yahoo.pulsar.common.naming.NamespaceBundle
;
import
com.yahoo.pulsar.common.naming.NamespaceBundle
;
import
com.yahoo.pulsar.common.naming.NamespaceBundles
;
import
com.yahoo.pulsar.common.naming.NamespaceBundles
;
...
@@ -1063,6 +1065,37 @@ public class NamespacesTest extends MockedPulsarServiceBaseTest {
...
@@ -1063,6 +1065,37 @@ public class NamespacesTest extends MockedPulsarServiceBaseTest {
assertTrue
(
namespaces
.
isLeaderBroker
());
assertTrue
(
namespaces
.
isLeaderBroker
());
}
}
/**
* Verifies that deleteNamespace cleans up policies(global,local), bundle cache and bundle ownership
*
* @throws Exception
*/
@Test
public
void
testDeleteNamespace
()
throws
Exception
{
final
String
namespace
=
this
.
testProperty
+
"/use/deleteNs"
;
admin
.
namespaces
().
createNamespace
(
namespace
,
100
);
assertEquals
(
admin
.
namespaces
().
getPolicies
(
namespace
).
bundles
.
numBundles
,
100
);
// (1) Force topic creation and namespace being loaded
final
String
topicName
=
"persistent://"
+
namespace
+
"/my-topic"
;
DestinationName
destination
=
DestinationName
.
get
(
topicName
);
Producer
producer
=
pulsarClient
.
createProducer
(
topicName
);
producer
.
close
();
NamespaceBundle
bundle1
=
pulsar
.
getNamespaceService
().
getBundle
(
destination
);
// (2) Delete topic
admin
.
persistentTopics
().
delete
(
topicName
);
// (3) Delete ns
admin
.
namespaces
().
deleteNamespace
(
namespace
);
// (4) check bundle
NamespaceBundle
bundle2
=
pulsar
.
getNamespaceService
().
getBundle
(
destination
);
assertNotEquals
(
bundle1
.
getBundleRange
(),
bundle2
.
getBundleRange
());
// returns full bundle if policies not present
assertEquals
(
"0x00000000_0xffffffff"
,
bundle2
.
getBundleRange
());
}
private
void
mockWebUrl
(
URL
localWebServiceUrl
,
NamespaceName
namespace
)
throws
Exception
{
private
void
mockWebUrl
(
URL
localWebServiceUrl
,
NamespaceName
namespace
)
throws
Exception
{
doReturn
(
localWebServiceUrl
).
when
(
nsSvc
).
getWebServiceUrl
(
Mockito
.
argThat
(
new
Matcher
<
NamespaceBundle
>()
{
doReturn
(
localWebServiceUrl
).
when
(
nsSvc
).
getWebServiceUrl
(
Mockito
.
argThat
(
new
Matcher
<
NamespaceBundle
>()
{
@Override
@Override
...
...
pulsar-broker/src/test/java/com/yahoo/pulsar/broker/service/BrokerServiceTest.java
浏览文件 @
df34ae7c
...
@@ -27,6 +27,7 @@ import java.util.HashSet;
...
@@ -27,6 +27,7 @@ import java.util.HashSet;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.concurrent.atomic.AtomicBoolean
;
...
@@ -728,4 +729,33 @@ public class BrokerServiceTest extends BrokerTestBase {
...
@@ -728,4 +729,33 @@ public class BrokerServiceTest extends BrokerTestBase {
// ok as throttling set to 0
// ok as throttling set to 0
}
}
}
}
@Test
public
void
testTopicLoadingOnDisableNamespaceBundle
()
throws
Exception
{
final
String
namespace
=
"prop/use/disableBundle"
;
admin
.
namespaces
().
createNamespace
(
namespace
);
// own namespace bundle
final
String
topicName
=
"persistent://"
+
namespace
+
"/my-topic"
;
DestinationName
destination
=
DestinationName
.
get
(
topicName
);
Producer
producer
=
pulsarClient
.
createProducer
(
topicName
);
producer
.
close
();
// disable namespace-bundle
NamespaceBundle
bundle
=
pulsar
.
getNamespaceService
().
getBundle
(
destination
);
pulsar
.
getNamespaceService
().
getOwnershipCache
().
updateBundleState
(
bundle
,
false
);
// try to create topic which should fail as bundle is disable
CompletableFuture
<
Topic
>
futureResult
=
pulsar
.
getBrokerService
().
createPersistentTopic
(
topicName
);
try
{
futureResult
.
get
();
fail
(
"Topic creation should fail due to disable bundle"
);
}
catch
(
Exception
e
)
{
if
(!(
e
.
getCause
()
instanceof
BrokerServiceException
.
ServiceUnitNotReadyException
))
{
fail
(
"Topic creation should fail with ServiceUnitNotReadyException"
);
}
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录