package com.neverwinterdp.registry.zk;
import java.util.ArrayList;
import java.util.Collections;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Perms;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.data.Stat;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.neverwinterdp.util.FileUtil;
import com.neverwinterdp.zk.tool.server.EmbededZKServer;
public class ZookeeperUnitTest {
public final Id ANYONE_ID = new Id("world", "anyone");
public final ArrayList<ACL> OPEN_ACL = new ArrayList<ACL>(Collections.singletonList(new ACL(Perms.ALL, ANYONE_ID)));
private EmbededZKServer zkServerLauncher ;
private ZooKeeper zkClient ;
static String connection;
@Before
public void setup() throws Exception {
FileUtil.removeIfExist("./build/data", false);
zkServerLauncher = new EmbededZKServer("./build/data/zookeeper") ;
zkServerLauncher.start();
Watcher watcher = new Watcher() {
public void process(WatchedEvent event) {
System.out.println("on event: " + event.getPath() + " - " + event.getType() + " - " + event.getState());
}
};
zkClient = new ZooKeeper("127.0.0.1:2181", 15000, watcher);
}
@After
public void teardown() throws Exception {
zkClient.close();
zkServerLauncher.shutdown();
}
@Test
public void testZkClient() throws Exception {
String homePath = zkClient.create("/home", "home".getBytes(), OPEN_ACL, CreateMode.PERSISTENT) ;
Assert.assertEquals("/home", homePath) ;
Assert.assertEquals("home", new String(zkClient.getData("/home", null, new Stat()))) ;
String sequentialPath = zkClient.create("/sequential", "sequential".getBytes(), OPEN_ACL, CreateMode.PERSISTENT_SEQUENTIAL) ;
Assert.assertTrue(sequentialPath.matches("/sequential0+1")) ;
Assert.assertEquals("sequential", new String(zkClient.getData(sequentialPath, null, new Stat()))) ;
}
}