You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "xsank mar (JIRA)" <ji...@apache.org> on 2016/12/22 02:57:58 UTC
[jira] [Commented] (CURATOR-368) powermock will cause curator
CONNECTIONLOSS exception
[ https://issues.apache.org/jira/browse/CURATOR-368?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15768844#comment-15768844 ]
xsank mar commented on CURATOR-368:
-----------------------------------
the static class have a static method should be mocked. You need not care about the detail.
What matters is the annotation:
{code}
@RunWith(PowerMockRunner.class)
@PrepareForTest({Static.class})
{code}
> powermock will cause curator CONNECTIONLOSS exception
> -----------------------------------------------------
>
> Key: CURATOR-368
> URL: https://issues.apache.org/jira/browse/CURATOR-368
> Project: Apache Curator
> Issue Type: Bug
> Components: Framework
> Environment: window & linux
> jdk 1.7
> curator-framework 2.9.1
> curator-recipe 2.9.1
> curator-test 2.9.1
> junit 4.12
> powermock-module-junit4 1.6.1
> powermock-api-mockito 1.6.1
> Reporter: xsank mar
> Priority: Critical
>
> client code
> {code}
> public class CuratorClient {
> private CuratorFramework client;
> public CuratorClient(String url) {
> this.client = CuratorFrameworkFactory.builder().connectString(url).namespace("test")
> .retryPolicy(new RetryNTimes(3, 5000))
> .connectionTimeoutMs(3000).build();
> this.client.start();
> }
> public void create(String path) {
> try {
> this.client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath(path);
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> public void lsChildren(String path) {
> try {
> List<String> children = this.client.getChildren().forPath(path);
> for (String child : children) {
> System.out.println(child);
> }
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> public void close() {
> this.client.close();
> }
> }
> {code}
> Test code
> {code}
> @RunWith(PowerMockRunner.class)
> @PrepareForTest({Static.class})
> public class CuratorTest {
> private CuratorClient client;
> private TestingServer server;
> @Before
> public void setUp() throws Exception {
> server = new TestingServer();
> server.start();
> client = new CuratorClient(server.getConnectString());
> }
> @After
> public void tearDown() throws Exception {
> client.close();
> server.close();
> }
> @Test
> public void testCreate() throws Exception {
> client.create("/curator");
> }
> @Test
> public void lsChildren() throws Exception {
> client.lsChildren("/curator");
> }
> }
> {code}
> now start testing, you will catch the exception everytime:
> {code}
> org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss
> at org.apache.curator.ConnectionState.checkTimeouts(ConnectionState.java:195)
> at org.apache.curator.ConnectionState.getZooKeeper(ConnectionState.java:87)
> at org.apache.curator.CuratorZookeeperClient.getZooKeeper(CuratorZookeeperClient.java:115)
> at org.apache.curator.framework.imps.CuratorFrameworkImpl.getZooKeeper(CuratorFrameworkImpl.java:487)
> at org.apache.curator.framework.imps.CreateBuilderImpl$11.call(CreateBuilderImpl.java:720)
> at org.apache.curator.framework.imps.CreateBuilderImpl$11.call(CreateBuilderImpl.java:703)
> at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:107)
> at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:699)
> at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:477)
> at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:467)
> at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:447)
> at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:44)
> at org.alibaba.search.client.CuratorClient.create(CuratorClient.java:25)
> at org.alibaba.search.client.CuratorTest.testCreate(CuratorTest.java:35)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)