@Test
public void testSettingData() throws Exception
{
PersistentEphemeralNode node = null;
Timing timing = new Timing();
CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), timing.session(), timing.connection(), new RetryOneTime(1));
try
{
client.start();
node = new PersistentEphemeralNode(client, PersistentEphemeralNode.Mode.EPHEMERAL, PATH, "a".getBytes());
node.start();
Assert.assertTrue(node.waitForInitialCreate(5, TimeUnit.SECONDS));
Assert.assertEquals(node.getActualPath(), PATH);
Assert.assertEquals(client.getData().forPath(PATH), "a".getBytes());
final Semaphore semaphore = new Semaphore(0);
Watcher watcher = new Watcher()
{
@Override
public void process(WatchedEvent arg0)
{
semaphore.release();
}
};
client.checkExists().usingWatcher(watcher).forPath(PATH);
node.setData("b".getBytes());
Assert.assertTrue(timing.acquireSemaphore(semaphore));
Assert.assertEquals(node.getActualPath(), PATH);
Assert.assertEquals(client.getData().usingWatcher(watcher).forPath(PATH), "b".getBytes());
node.setData("c".getBytes());
Assert.assertTrue(timing.acquireSemaphore(semaphore));
Assert.assertEquals(node.getActualPath(), PATH);
Assert.assertEquals(client.getData().usingWatcher(watcher).forPath(PATH), "c".getBytes());
node.close();
Assert.assertTrue(timing.acquireSemaphore(semaphore));
Assert.assertTrue(client.checkExists().forPath(PATH) == null);
}
finally
{
if ( node != null )