in registry/zookeeper/src/lib.rs [391:441]
fn zk_read_write_watcher() {
// https://github.com/bonifaido/rust-zookeeper/blob/master/examples/zookeeper_example.rs
// using ENV to set zookeeper server urls
let zkr = ZookeeperRegistry::default();
let zk_client = zkr.get_client();
let watcher = TestZkWatcher {
watcher: Arc::new(None),
};
if zk_client.exists("/test", true).is_err() {
zk_client
.create(
"/test",
vec![1, 3],
Acl::open_unsafe().clone(),
CreateMode::Ephemeral,
)
.unwrap();
}
let zk_res = zk_client.create(
"/test",
"hello".into(),
Acl::open_unsafe().clone(),
CreateMode::Ephemeral,
);
let result = zk_client.get_children_w("/test", watcher);
assert!(result.is_ok());
if zk_client.exists("/test/a", true).is_err() {
zk_client.delete("/test/a", None).unwrap();
}
if zk_client.exists("/test/a", true).is_err() {
zk_client.delete("/test/b", None).unwrap();
}
let zk_res = zk_client.create(
"/test/a",
"hello".into(),
Acl::open_unsafe().clone(),
CreateMode::Ephemeral,
);
let zk_res = zk_client.create(
"/test/b",
"world".into(),
Acl::open_unsafe().clone(),
CreateMode::Ephemeral,
);
let test_a_result = zk_client.get_data("/test", true);
assert!(test_a_result.is_ok());
let vec1 = test_a_result.unwrap().0;
// data in /test should equals to "hello"
assert_eq!(String::from_utf8(vec1).unwrap(), "hello");
zk_client.close().unwrap()
}