zookeeper java 判断版本_zookeeper JAVA API 简单操作

1 packageorg.admln.program.Zoo_Test;2

3 importjava.io.IOException;4 importjava.security.NoSuchAlgorithmException;5 importjava.util.ArrayList;6 importjava.util.List;7

8 importorg.apache.zookeeper.CreateMode;9 importorg.apache.zookeeper.WatchedEvent;10 importorg.apache.zookeeper.Watcher;11 importorg.apache.zookeeper.ZooDefs;12 importorg.apache.zookeeper.ZooDefs.Ids;13 importorg.apache.zookeeper.ZooKeeper;14 importorg.apache.zookeeper.data.ACL;15 importorg.apache.zookeeper.data.Id;16 importorg.apache.zookeeper.data.Stat;17 importorg.apache.zookeeper.server.auth.DigestAuthenticationProvider;18 importorg.junit.After;19 importorg.junit.Assert;20 importorg.junit.Before;21 importorg.junit.Test;22 importorg.slf4j.Logger;23 importorg.slf4j.LoggerFactory;24

25

26 /**

27 * Test Method {create/exists/delete/getChildren/setData/getData/addAuthInfo/setACL/getACL}28 *29 *@authoradmln30 * @date 2015年5月12日 上午9:35:4831 */

32 public classZooJavaApi {33

34 private static final int SESSION_TIMEOUT = 1000;35

36 public static final Logger LOGGER = LoggerFactory.getLogger(ZooJavaApi.class);37

38 public static final String HOST = "localhost:2181";39

40 private Watcher watcher = newWatcher() {41 public voidprocess(WatchedEvent we) {42 LOGGER.info("process:" +we.getType());43 }44 };45

46 privateZooKeeper zookeeper;47

48 /*

49 * 开启服务器连接50 */

51 @Before52 public void connect() throwsIOException {53 zookeeper = newZooKeeper(HOST, SESSION_TIMEOUT, watcher);54 }55

56 /*

57 * 关闭服务器连接58 */

59 @After60 public voidclose() {61 try{62 zookeeper.close();63 } catch(InterruptedException e) {64 e.printStackTrace();65 }66 }67

68 /*

69 * 测试创建节点方法;70 * 调用zookeeper的 String create(final String path, byte data[], List acl,CreateMode createMode)方法;71 * path 创建节点名;72 * data[] 节点的数据信息,字节数组类型;73 * acl 访问权限,List数组类型;74 * createMode 节点持久化类型;75 * Assert.fail() 方法加在期望中不可能到达的地方,一旦到达,表明测试失败,结果与预期不同76 */

77 @Test78 public voidtestCreate() {79 String createNode = "/zk001";80 String createNodeData = "zk001Data";81 String result = null;82 try{83 result =zookeeper.create(createNode, createNodeData.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);84 } catch(Exception e) {85 LOGGER.error(e.getMessage());86 e.printStackTrace();87 Assert.fail();88 }89 System.out.println("成功创建了NODE:" +result);90 }91

92 /*

93 * 测试删除节点方法;94 * 调用zookeeper的delete(final String path, int version)方法;95 * path 节点名;96 * version 节点版本;97 * 版本为 -1 的话匹配所有版本98 */

99 @Test100 public voidtestDelete() {101 String deleteNode = "/zk001";102 try{103 zookeeper.delete(deleteNode, -1);104 } catch(Exception e) {105 LOGGER.error(e.getMessage());106 e.printStackTrace();107 Assert.fail();108 }109 System.out.println("成功删除节点:" +deleteNode);110 }111

112 /*

113 * 测试获取节点数据方法;114 * 调用zookeeper的getData(final String path, Watcher watcher, Stat stat)方法;115 * path 节点名称;116 * watcher 获取节点信息时设置Watcher;117 * stat 数据的版本等信息可以通过 stat 来指定;118 */

119 @Test120 public voidtestGetData() {121 String getDataNode = "/zk001";122 String result = null;123 try{124 byte[] bytes = zookeeper.getData(getDataNode, null, null);125 result = newString(bytes);126 } catch(Exception e) {127 LOGGER.error(e.getMessage());128 e.printStackTrace();129 Assert.fail();130 }131 System.out.println("获取节点数据:" +result);132 }133

134 /*

135 * 测试设置节点数据方法;136 * 调用zookeeper的setData(final String path, byte data[], int version)方法137 * path 节点名称;138 * data[] 节点数据;139 * version 节点版本;140 * 版本设为-1则匹配所有版本;141 * 返回 Stat 类型实例,通过Stat可以获取节点各种信息,例如版本142 */

143 @Test144 public voidtestSetData() {145 String setDataNode = "/zk001";146 String setNodeData = "/zk001DataSetTest";147 Stat tempStat = null;148 try{149 tempStat = zookeeper.setData(setDataNode, setNodeData.getBytes(), -1);150

151 } catch(Exception e) {152 LOGGER.error(e.getMessage());153 e.printStackTrace();154 Assert.fail();155 }156 System.out.println("成功设置数据:" + setNodeData + "; 设置后的版本为:" +tempStat.getVersion());157 }158

159 /*

160 * 测试判断节点是否存在方法;161 * 调用zookeeper的exists(String path, boolean watch)方法;162 * path 节点名;163 * watch 是否监听;164 * 返回Stat类型的实例,可以获取各种信息;165 */

166 @Test167 public voidtestExists() {168 String existsNode = "/zk001";169 Stat tempStat = null;170 try{171 tempStat = zookeeper.exists(existsNode, false);172 } catch(Exception e) {173 LOGGER.error(e.getMessage());174 e.printStackTrace();175 Assert.fail();176 }177 System.out.println(tempStat.getCzxid() == 0 ? "节点是否存在:否":"节点是否存在:是");178 }179

180 /*

181 * 测试获取子节点方法;182 * 调用zookeeper的getChildren(String path, boolean watch)方法;183 * path 节点名称;184 * watch 是否设置监听;185 * 返回值为一个String类型的List;186 */

187 @Test188 public voidtestGetChildren() {189 String parentNode = "/zk001";190 List list = null;191 try{192 list = zookeeper.getChildren(parentNode, false);193 } catch(Exception e) {194 LOGGER.error(e.getMessage());195 e.printStackTrace();196 Assert.fail();197 }198 if(list.isEmpty()) {199 System.out.println(parentNode + "无子节点");200 }else{201 System.out.print(parentNode + "的子节点有:");202 for(String str : list) {203 System.out.print(" " +str);204 }205 }206 }207

208 /*

209 * 测试设置节点访问权限方法;210 * 调用zookeeper的setACL(final String path, List acl, int version)方法;211 * path 节点名称;212 * acl 设置的权限信息;213 * version 设置权限的版本;214 * 返回Stat类型的尸体,可以查看节点信息;215 */

216 @Test217 public voidtestSetAcl() {218 String aclNode = "/zk001/zk002";219 String scheme = "digest";220 String authInfo = "admln:admln";221 List acls = new ArrayList();222 try{223 Id id1 = newId(scheme,DigestAuthenticationProvider.generateDigest(authInfo));224 ACL acl1 = newACL(ZooDefs.Perms.ALL, id1);225 acls.add(acl1);226 Id id2 = new Id(scheme,DigestAuthenticationProvider.generateDigest("guest:guest"));227 ACL acl2 = newACL(ZooDefs.Perms.READ, id2);228 acls.add(acl2);229 } catch(NoSuchAlgorithmException e) {230 e.printStackTrace();231 }232 try{233 zookeeper.setACL(aclNode, acls, -1);234 } catch(Exception e) {235 LOGGER.error(e.getMessage());236 e.printStackTrace();237 Assert.fail();238 }239 System.out.println("成功为" + aclNode + "添加了ACL,scheme为:" + scheme + ",验证信息为:" +authInfo);240 }241

242 /*

243 * 测试获取节点权限信息方法;244 * 调用zookeeper的getACL(final String path, Stat stat)方法;245 * path 节点名称;246 * stat 节点状态信息;247 * 返回一个ACL列表;248 */

249 @Test250 public voidtestGetAcl() {251 String getAclNode = "/zk001/zk002";252 List list = null;253 try{254 list = zookeeper.getACL(getAclNode, newStat());255 } catch(Exception e) {256 LOGGER.error(e.getMessage());257 e.printStackTrace();258 Assert.fail();259 }260 if(list.isEmpty()) {261 System.out.println(getAclNode + " 没有ACL权限设置");262 }else{263 System.out.println(getAclNode + " 的ACL权限信息: ");264 for(ACL acl : list) {265 System.out.print("\t" +acl.toString());266 }267 }268 }269 /*

270 * 测试权限验证方法;271 * 调用zookeeper的addAuthInfo(String scheme, byte auth[])方法;272 * scheme 权限类型;273 * auth[] 权限信息;274 */

275 @Test276 public voidtestAddAuthInfo() {277 String addAuthInfoNode = "/zk001/zk002";278 String scheme = "digest";279 String authInfo = "admln:admln";280 String result = null;281 try{282 byte[] bytes = zookeeper.getData(addAuthInfoNode, null, null);283 result = newString(bytes);284 } catch(Exception e) {285 System.out.println("没有提供验证信息前获取节点信息:" + result + " ,返回错误信息:" +e.getMessage());286 }287 zookeeper.addAuthInfo(scheme, authInfo.getBytes());288 try{289 byte[] bytes = zookeeper.getData(addAuthInfoNode, null, null);290 result = newString(bytes);291 } catch(Exception e) {292 System.out.println("没有提供验证信息前获取节点信息:" + result + " ,返回错误信息:" +e.getMessage());293 }294 System.out.println("提供验证信息后获取节点信息:" +result);295 }296 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值