Is it possible to start a zookeeper server instance in process, say for unit tests?

后端 未结 6 1109
难免孤独
难免孤独 2020-11-30 22:04

Calling org.apache.zookeeper.server.quorum.QuorumPeerMain.main() isn\'t working.

6条回答
  •  鱼传尺愫
    2020-11-30 22:43

    Netfix opensourced Curator a framework to make use of Zookeeper even more convenient. It has build in test server class. Just add this test dependency to your project descriptor be it maven, gradle or else:

    org.apache.curator:curator-framework:4.0.1
    org.apache.curator:curator-test:4.0.1
    

    And here are the test essentials.

    TestingServer zkTestServer;
    CuratorFramework cli;
    
    @Before
    public void startZookeeper() throws Exception {
        zkTestServer = new TestingServer(2181);
        cli = CuratorFrameworkFactory.newClient(zkTestServer.getConnectString(), new RetryOneTime(2000));
        cli.start();
    }
    
    @After
    public void stopZookeeper() throws IOException {
        cli.close();
        zkTestServer.stop();
    }
    

    With cli creating any test data is very easy (requires the curator-framework dependency).

    cli.create()
       .creatingParentsIfNeeded()
       .forPath("/a1", "testvalue".getBytes("UTF-8"));
    

提交回复
热议问题