def test_update(self):
        path = '%s/unittest-update' % self.sandbox
        data = {'unittest': 'data'}
        datanode = DataNode(zk=self.zk, path=path, data=data)

        # First, delete the path
        def get_stat_from_watcher():
            return datanode._watcher.get()['stat']

        # Get the original stat data, then delete the path, then wait
        # for the get() method to not return the original stat data
        orig_stat = datanode._watcher.get()['stat']
        self.zk.delete(path)
        waituntil(get_stat_from_watcher, orig_stat, 5, mode=1)

        # Ok now call the update() method and see if it re-registers
        datanode.update(data=data, state=True)
        waituntil(get_stat_from_watcher, None, 5, mode=1)
        self.assertEquals(data, datanode._data)
    def test_update(self):
        path = '%s/unittest-update' % self.sandbox
        data = {'unittest': 'data'}
        datanode = DataNode(zk=self.zk, path=path, data=data)

        # First, delete the path
        def get_stat_from_watcher():
            return datanode._watcher.get()['stat']
        self.zk.delete(path)
        waituntil(get_stat_from_watcher, None, 5, mode=2)

        # Ok now call the update() method and see if it re-registers
        datanode.update(data=data, state=True)

        # Now, wait until se see something in zookeeper
        def get_exists_from_zk():
            return self.zk.exists(path)

        waituntil(get_exists_from_zk, None, 5, mode=1)
        self.assertEquals(data, datanode._data)