如何对依赖ZooKeeper的代码写单元测试

瘢痂重载
• 阅读 5946

日常开发中,如何使用了ZooKeeper,在对这部分做单元测试的时候,往往很不方便,因为实际安装一个ZooKeeper专门用来做单元测试,实在是太浪费。这种情况下,可以使用curator-testcurator是Netflix公司开源的一个Zookeeper客户端,curator-test正是其中的一员,通过它可以Mock一个本地(127.0.0.1)ZooKeeper Server用于测试,非常方便。

Maven Dependency

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-test</artifactId>
    <version>2.6.0</version>
    <scope>test</scope>
</dependency>

Getting Started

private static TestingServer server;
private static CuratorFramework client;

@BeforeClass
public static void setUpBeforeClass() throws Exception {
    server = new TestingServer(2181, true);
    server.start();
    
    client = CuratorFrameworkFactory.newClient("127.0.0.1",
            new ExponentialBackoffRetry(1000, 3));
    client.start();
}

@AfterClass
public static void tearDownAfterClass() throws IOException {
    server.stop();
    client.close();
}

@Test
public void testFoobar() throws Exception {
    System.out.println("client: " + client);
    client.create().forPath("/test", "test-data".getBytes());

    byte[] data = client.getData().forPath("/test");
    System.out.println("data: " + new String(data));
}
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
java基础之
概述  zookeeper,拆开来就是zoo keeper,翻译就是动物管理员,为什么这么命名呢?因为当时yahoo开发zookeeper的时候,已经开发很多其他的产品,都是以动物命名的,而zookeeper的作用就是要协调这些产品,所以最后就命名为了动物管理员。相信每个人都不陌生,无论是阿里的dubbo把zookeeper作为注册中心,无论是在
Stella981 Stella981
3年前
Hadoop 2.6.0 HA高可用集群配置详解(二)
Zookeeper集群安装Zookeeper是一个开源分布式协调服务,其独特的LeaderFollower集群结构,很好的解决了分布式单点问题。目前主要用于诸如:统一命名服务、配置管理、锁服务、集群管理等场景。大数据应用中主要使用Zookeeper的集群管理功能。本集群使用zookeeper3.4.5cdh5.7.1版本。首先在Hado
Stella981 Stella981
3年前
Linux安装zookeeper
安装zookeeper1、解压缩zookeeper3.4.6.tar.gz:    tarzxvfzookeeper3.4.6.tar.gz2、创建/usr/local/zookeeper文件夹:mkdirp/usr/local/zookeeper 3、进入到/usr/local/zookeeper目录
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Linux下 zookeeper集群安装
准备环境:3台linux虚拟主机,zookeeper安装包,zookeeper版本号是3.4.6,本文zookeeper安装在/usr/local目录下一、首先下载zookeepercd/usr/localwget http://apache.org/dist/zookeeper/zookeeper3.4.6/zookeeper3.4.6
Stella981 Stella981
3年前
Linux系统:Centos7下搭建ZooKeeper3.4中间件,常用命令总结
一、下载解压1、Zookeeper简介Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状