summaryrefslogtreecommitdiff
path: root/kazoo/tests/test_cache.py
diff options
context:
space:
mode:
Diffstat (limited to 'kazoo/tests/test_cache.py')
-rw-r--r--kazoo/tests/test_cache.py169
1 files changed, 84 insertions, 85 deletions
diff --git a/kazoo/tests/test_cache.py b/kazoo/tests/test_cache.py
index 33dafac..af1282a 100644
--- a/kazoo/tests/test_cache.py
+++ b/kazoo/tests/test_cache.py
@@ -13,9 +13,9 @@ from kazoo.recipe.cache import TreeCache, TreeNode, TreeEvent
class KazooAdaptiveHandlerTestCase(KazooTestHarness):
HANDLERS = (
- ('kazoo.handlers.gevent', 'SequentialGeventHandler'),
- ('kazoo.handlers.eventlet', 'SequentialEventletHandler'),
- ('kazoo.handlers.threading', 'SequentialThreadingHandler'),
+ ("kazoo.handlers.gevent", "SequentialGeventHandler"),
+ ("kazoo.handlers.eventlet", "SequentialEventletHandler"),
+ ("kazoo.handlers.threading", "SequentialThreadingHandler"),
)
def setUp(self):
@@ -35,7 +35,7 @@ class KazooAdaptiveHandlerTestCase(KazooTestHarness):
continue
else:
return cls()
- raise ImportError('No available handler')
+ raise ImportError("No available handler")
class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
@@ -59,7 +59,7 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
def make_cache(self):
if self.cache is None:
- self.path = '/' + uuid.uuid4().hex
+ self.path = "/" + uuid.uuid4().hex
self.cache = TreeCache(self.client, self.path)
self.cache.listen(lambda event: self._event_queue.put(event))
self.cache.listen_fault(lambda error: self._error_queue.put(error))
@@ -87,7 +87,7 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
# trigger switching on some coroutine handlers
self.client.handler.sleep_func(0.1)
- completion_queue = getattr(self.handler, 'completion_queue', None)
+ completion_queue = getattr(self.handler, "completion_queue", None)
if completion_queue is not None:
while not self.client.handler.completion_queue.empty():
self.client.handler.sleep_func(0.1)
@@ -101,10 +101,10 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
result = set()
for _ in range(5):
self._wait_gc()
- result.add(count_refs_by_type('TreeNode'))
+ result.add(count_refs_by_type("TreeNode"))
if len(result) == 1:
return list(result)[0]
- raise RuntimeError('could not count refs exactly')
+ raise RuntimeError("could not count refs exactly")
def test_start(self):
self.make_cache()
@@ -132,25 +132,25 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- self.client.create(self.path + '/foo/bar/baz', makepath=True)
+ self.client.create(self.path + "/foo/bar/baz", makepath=True)
for _ in range(3):
self.wait_cache(TreeEvent.NODE_ADDED)
# setup stub watchers which are outside of tree cache
stub_data_watcher = Mock(spec=lambda event: None)
stub_child_watcher = Mock(spec=lambda event: None)
- self.client.get(self.path + '/foo', stub_data_watcher)
- self.client.get_children(self.path + '/foo', stub_child_watcher)
+ self.client.get(self.path + "/foo", stub_data_watcher)
+ self.client.get_children(self.path + "/foo", stub_child_watcher)
# watchers inside tree cache should be here
root_path = self.client.chroot + self.path
- assert len(self.client._data_watchers[root_path + '/foo']) == 2
- assert len(self.client._data_watchers[root_path + '/foo/bar']) == 1
- assert len(self.client._data_watchers[root_path + '/foo/bar/baz']) == 1
- assert len(self.client._child_watchers[root_path + '/foo']) == 2
- assert len(self.client._child_watchers[root_path + '/foo/bar']) == 1
+ assert len(self.client._data_watchers[root_path + "/foo"]) == 2
+ assert len(self.client._data_watchers[root_path + "/foo/bar"]) == 1
+ assert len(self.client._data_watchers[root_path + "/foo/bar/baz"]) == 1
+ assert len(self.client._child_watchers[root_path + "/foo"]) == 2
+ assert len(self.client._child_watchers[root_path + "/foo/bar"]) == 1
assert (
- len(self.client._child_watchers[root_path + '/foo/bar/baz']) == 1
+ len(self.client._child_watchers[root_path + "/foo/bar/baz"]) == 1
)
self.cache.close()
@@ -167,22 +167,22 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
assert self.cache._root._state != TreeNode.STATE_DEAD
# watchers should be reset
- assert len(self.client._data_watchers[root_path + '/foo']) == 1
- assert len(self.client._data_watchers[root_path + '/foo/bar']) == 0
- assert len(self.client._data_watchers[root_path + '/foo/bar/baz']) == 0
- assert len(self.client._child_watchers[root_path + '/foo']) == 1
- assert len(self.client._child_watchers[root_path + '/foo/bar']) == 0
+ assert len(self.client._data_watchers[root_path + "/foo"]) == 1
+ assert len(self.client._data_watchers[root_path + "/foo/bar"]) == 0
+ assert len(self.client._data_watchers[root_path + "/foo/bar/baz"]) == 0
+ assert len(self.client._child_watchers[root_path + "/foo"]) == 1
+ assert len(self.client._child_watchers[root_path + "/foo/bar"]) == 0
assert (
- len(self.client._child_watchers[root_path + '/foo/bar/baz']) == 0
+ len(self.client._child_watchers[root_path + "/foo/bar/baz"]) == 0
)
# outside watchers should not be deleted
assert (
- list(self.client._data_watchers[root_path + '/foo'])[0]
+ list(self.client._data_watchers[root_path + "/foo"])[0]
== stub_data_watcher
)
assert (
- list(self.client._child_watchers[root_path + '/foo'])[0]
+ list(self.client._child_watchers[root_path + "/foo"])[0]
== stub_child_watcher
)
@@ -196,11 +196,11 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
assert self.count_tree_node() == 1
- self.client.create(self.path + '/foo/bar/baz', makepath=True)
+ self.client.create(self.path + "/foo/bar/baz", makepath=True)
for _ in range(3):
self.wait_cache(TreeEvent.NODE_ADDED)
- self.client.delete(self.path + '/foo', recursive=True)
+ self.client.delete(self.path + "/foo", recursive=True)
for _ in range(3):
self.wait_cache(TreeEvent.NODE_REMOVED)
@@ -209,12 +209,12 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
# watchers should be reset
root_path = self.client.chroot + self.path
- assert self.client._data_watchers[root_path + '/foo'] == set()
- assert self.client._data_watchers[root_path + '/foo/bar'] == set()
- assert self.client._data_watchers[root_path + '/foo/bar/baz'] == set()
- assert self.client._child_watchers[root_path + '/foo'] == set()
- assert self.client._child_watchers[root_path + '/foo/bar'] == set()
- assert self.client._child_watchers[root_path + '/foo/bar/baz'] == set()
+ assert self.client._data_watchers[root_path + "/foo"] == set()
+ assert self.client._data_watchers[root_path + "/foo/bar"] == set()
+ assert self.client._data_watchers[root_path + "/foo/bar/baz"] == set()
+ assert self.client._child_watchers[root_path + "/foo"] == set()
+ assert self.client._child_watchers[root_path + "/foo/bar"] == set()
+ assert self.client._child_watchers[root_path + "/foo/bar/baz"] == set()
# should not be any leaked memory (tree node) here
assert self.count_tree_node() == 1
@@ -223,41 +223,41 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- self.client.create(self.path + '/test_children', b'test_children_1')
+ self.client.create(self.path + "/test_children", b"test_children_1")
event = self.wait_cache(TreeEvent.NODE_ADDED)
assert event.event_type == TreeEvent.NODE_ADDED
- assert event.event_data.path == self.path + '/test_children'
- assert event.event_data.data == b'test_children_1'
+ assert event.event_data.path == self.path + "/test_children"
+ assert event.event_data.data == b"test_children_1"
assert event.event_data.stat.version == 0
- self.client.set(self.path + '/test_children', b'test_children_2')
+ self.client.set(self.path + "/test_children", b"test_children_2")
event = self.wait_cache(TreeEvent.NODE_UPDATED)
assert event.event_type == TreeEvent.NODE_UPDATED
- assert event.event_data.path == self.path + '/test_children'
- assert event.event_data.data == b'test_children_2'
+ assert event.event_data.path == self.path + "/test_children"
+ assert event.event_data.data == b"test_children_2"
assert event.event_data.stat.version == 1
- self.client.delete(self.path + '/test_children')
+ self.client.delete(self.path + "/test_children")
event = self.wait_cache(TreeEvent.NODE_REMOVED)
assert event.event_type == TreeEvent.NODE_REMOVED
- assert event.event_data.path == self.path + '/test_children'
- assert event.event_data.data == b'test_children_2'
+ assert event.event_data.path == self.path + "/test_children"
+ assert event.event_data.data == b"test_children_2"
assert event.event_data.stat.version == 1
def test_subtree_operation(self):
self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- self.client.create(self.path + '/foo/bar/baz', makepath=True)
- for relative_path in ('/foo', '/foo/bar', '/foo/bar/baz'):
+ self.client.create(self.path + "/foo/bar/baz", makepath=True)
+ for relative_path in ("/foo", "/foo/bar", "/foo/bar/baz"):
event = self.wait_cache(TreeEvent.NODE_ADDED)
assert event.event_type == TreeEvent.NODE_ADDED
assert event.event_data.path == self.path + relative_path
- assert event.event_data.data == b''
+ assert event.event_data.data == b""
assert event.event_data.stat.version == 0
- self.client.delete(self.path + '/foo', recursive=True)
- for relative_path in ('/foo/bar/baz', '/foo/bar', '/foo'):
+ self.client.delete(self.path + "/foo", recursive=True)
+ for relative_path in ("/foo/bar/baz", "/foo/bar", "/foo"):
event = self.wait_cache(TreeEvent.NODE_REMOVED)
assert event.event_type == TreeEvent.NODE_REMOVED
assert event.event_data.path == self.path + relative_path
@@ -265,79 +265,78 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
def test_get_data(self):
cache = self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- self.client.create(self.path + '/foo/bar/baz', b'@', makepath=True)
+ self.client.create(self.path + "/foo/bar/baz", b"@", makepath=True)
self.wait_cache(TreeEvent.NODE_ADDED)
self.wait_cache(TreeEvent.NODE_ADDED)
self.wait_cache(TreeEvent.NODE_ADDED)
- with patch.object(cache, '_client'): # disable any remote operation
- assert cache.get_data(self.path).data == b''
+ with patch.object(cache, "_client"): # disable any remote operation
+ assert cache.get_data(self.path).data == b""
assert cache.get_data(self.path).stat.version == 0
- assert cache.get_data(self.path + '/foo').data == b''
- assert cache.get_data(self.path + '/foo').stat.version == 0
+ assert cache.get_data(self.path + "/foo").data == b""
+ assert cache.get_data(self.path + "/foo").stat.version == 0
- assert cache.get_data(self.path + '/foo/bar').data == b''
- assert cache.get_data(self.path + '/foo/bar').stat.version == 0
+ assert cache.get_data(self.path + "/foo/bar").data == b""
+ assert cache.get_data(self.path + "/foo/bar").stat.version == 0
- assert cache.get_data(self.path + '/foo/bar/baz').data == b'@'
- assert cache.get_data(self.path + '/foo/bar/baz').stat.version == 0
+ assert cache.get_data(self.path + "/foo/bar/baz").data == b"@"
+ assert cache.get_data(self.path + "/foo/bar/baz").stat.version == 0
def test_get_children(self):
cache = self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- self.client.create(self.path + '/foo/bar/baz', b'@', makepath=True)
+ self.client.create(self.path + "/foo/bar/baz", b"@", makepath=True)
self.wait_cache(TreeEvent.NODE_ADDED)
self.wait_cache(TreeEvent.NODE_ADDED)
self.wait_cache(TreeEvent.NODE_ADDED)
- with patch.object(cache, '_client'): # disable any remote operation
+ with patch.object(cache, "_client"): # disable any remote operation
assert (
- cache.get_children(self.path + '/foo/bar/baz') == frozenset()
+ cache.get_children(self.path + "/foo/bar/baz") == frozenset()
)
- assert (
- cache.get_children(self.path + '/foo/bar')
- == frozenset(['baz'])
+ assert cache.get_children(self.path + "/foo/bar") == frozenset(
+ ["baz"]
)
- assert cache.get_children(self.path + '/foo') == frozenset(['bar'])
- assert cache.get_children(self.path) == frozenset(['foo'])
+ assert cache.get_children(self.path + "/foo") == frozenset(["bar"])
+ assert cache.get_children(self.path) == frozenset(["foo"])
def test_get_data_out_of_tree(self):
self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
with pytest.raises(ValueError):
- self.cache.get_data('/out_of_tree')
+ self.cache.get_data("/out_of_tree")
def test_get_children_out_of_tree(self):
self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
with pytest.raises(ValueError):
- self.cache.get_children('/out_of_tree')
+ self.cache.get_children("/out_of_tree")
def test_get_data_no_node(self):
cache = self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- with patch.object(cache, '_client'): # disable any remote operation
- assert cache.get_data(self.path + '/non_exists') is None
+ with patch.object(cache, "_client"): # disable any remote operation
+ assert cache.get_data(self.path + "/non_exists") is None
def test_get_children_no_node(self):
cache = self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- with patch.object(cache, '_client'): # disable any remote operation
- assert cache.get_children(self.path + '/non_exists') is None
+ with patch.object(cache, "_client"): # disable any remote operation
+ assert cache.get_children(self.path + "/non_exists") is None
def test_session_reconnected(self):
self.make_cache()
self.wait_cache(since=TreeEvent.INITIALIZED)
- self.client.create(self.path + '/foo')
+ self.client.create(self.path + "/foo")
event = self.wait_cache(TreeEvent.NODE_ADDED)
- assert event.event_data.path == self.path + '/foo'
+ assert event.event_data.path == self.path + "/foo"
- with self.spy_client('get_async') as get_data:
- with self.spy_client('get_children_async') as get_children:
+ with self.spy_client("get_async") as get_data:
+ with self.spy_client("get_children_async") as get_children:
# session suspended
self.lose_connection(self.client.handler.event_object)
self.wait_cache(TreeEvent.CONNECTION_SUSPENDED)
@@ -355,14 +354,14 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
# inspect in-memory nodes
_node_root = self.cache._root
- _node_foo = self.cache._root._children['foo']
+ _node_foo = self.cache._root._children["foo"]
# make sure that all nodes are refreshed
get_data.assert_has_calls(
[
call(self.path, watch=_node_root._process_watch),
call(
- self.path + '/foo', watch=_node_foo._process_watch
+ self.path + "/foo", watch=_node_foo._process_watch
),
],
any_order=True,
@@ -371,7 +370,7 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
[
call(self.path, watch=_node_root._process_watch),
call(
- self.path + '/foo', watch=_node_foo._process_watch
+ self.path + "/foo", watch=_node_foo._process_watch
),
],
any_order=True,
@@ -385,7 +384,7 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
self.client.delete(self.path)
event = self.wait_cache(TreeEvent.NODE_REMOVED)
assert event.event_type == TreeEvent.NODE_REMOVED
- assert event.event_data.data == b''
+ assert event.event_data.data == b""
assert event.event_data.path == self.path
assert event.event_data.stat.version == 0
@@ -393,19 +392,19 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
self.client.ensure_path(self.path)
event = self.wait_cache(TreeEvent.NODE_ADDED)
assert event.event_type == TreeEvent.NODE_ADDED
- assert event.event_data.data == b''
+ assert event.event_data.data == b""
assert event.event_data.path == self.path
assert event.event_data.stat.version == 0
assert self.cache._outstanding_ops >= 0, (
- 'unexpected outstanding ops %r' % self.cache._outstanding_ops
+ "unexpected outstanding ops %r" % self.cache._outstanding_ops
)
def test_exception_handler(self):
error_value = FakeException()
error_handler = Mock()
- with patch.object(TreeNode, 'on_deleted') as on_deleted:
+ with patch.object(TreeNode, "on_deleted") as on_deleted:
on_deleted.side_effect = [error_value]
self.make_cache()
@@ -424,10 +423,10 @@ class KazooTreeCacheTests(KazooAdaptiveHandlerTestCase):
self.client.handler.start() # keep the async completion
self.wait_cache(since=TreeEvent.CONNECTION_LOST)
- with patch.object(TreeNode, 'on_created') as on_created:
- self.cache._root._call_client('exists', '/')
- self.cache._root._call_client('get', '/')
- self.cache._root._call_client('get_children', '/')
+ with patch.object(TreeNode, "on_created") as on_created:
+ self.cache._root._call_client("exists", "/")
+ self.cache._root._call_client("get", "/")
+ self.cache._root._call_client("get_children", "/")
self.wait_cache(since=TreeEvent.INITIALIZED)
on_created.assert_not_called()