diff options
author | Bar Shaul <88437685+barshaul@users.noreply.github.com> | 2021-12-02 22:59:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-02 22:59:06 +0200 |
commit | 11b14630a6845c28acfd4220b72ed62d72913305 (patch) | |
tree | 7c4ae49db2320416a956551613d90cad26b44052 /tests/test_cluster.py | |
parent | b7ffec08da97b71b10bbd139b32ff82d33d907f1 (diff) | |
download | redis-py-11b14630a6845c28acfd4220b72ed62d72913305.tar.gz |
Added support for MONITOR in clusters (#1756)
Diffstat (limited to 'tests/test_cluster.py')
-rw-r--r-- | tests/test_cluster.py | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 4087d33..15d8ac6 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -36,6 +36,7 @@ from .conftest import ( skip_if_redis_enterprise, skip_if_server_version_lt, skip_unless_arch_bits, + wait_for_command, ) default_host = "127.0.0.1" @@ -1774,7 +1775,7 @@ class TestClusterRedisCommands: assert r.randomkey(target_nodes=node) in (b"{foo}a", b"{foo}b", b"{foo}c") @skip_if_server_version_lt("6.0.0") - @skip_if_redis_enterprise + @skip_if_redis_enterprise() def test_acl_log(self, r, request): key = "{cache}:" node = r.get_node_from_key(key) @@ -2631,3 +2632,54 @@ class TestReadOnlyPipeline: if executed_on_replica: break assert executed_on_replica is True + + +@pytest.mark.onlycluster +class TestClusterMonitor: + def test_wait_command_not_found(self, r): + "Make sure the wait_for_command func works when command is not found" + key = "foo" + node = r.get_node_from_key(key) + with r.monitor(target_node=node) as m: + response = wait_for_command(r, m, "nothing", key=key) + assert response is None + + def test_response_values(self, r): + db = 0 + key = "foo" + node = r.get_node_from_key(key) + with r.monitor(target_node=node) as m: + r.ping(target_nodes=node) + response = wait_for_command(r, m, "PING", key=key) + assert isinstance(response["time"], float) + assert response["db"] == db + assert response["client_type"] in ("tcp", "unix") + assert isinstance(response["client_address"], str) + assert isinstance(response["client_port"], str) + assert response["command"] == "PING" + + def test_command_with_quoted_key(self, r): + key = "{foo}1" + node = r.get_node_from_key(key) + with r.monitor(node) as m: + r.get('{foo}"bar') + response = wait_for_command(r, m, 'GET {foo}"bar', key=key) + assert response["command"] == 'GET {foo}"bar' + + def test_command_with_binary_data(self, r): + key = "{foo}1" + node = r.get_node_from_key(key) + with r.monitor(target_node=node) as m: + byte_string = b"{foo}bar\x92" + r.get(byte_string) + response = wait_for_command(r, m, "GET {foo}bar\\x92", key=key) + assert response["command"] == "GET {foo}bar\\x92" + + def test_command_with_escaped_data(self, r): + key = "{foo}1" + node = r.get_node_from_key(key) + with r.monitor(target_node=node) as m: + byte_string = b"{foo}bar\\x92" + r.get(byte_string) + response = wait_for_command(r, m, "GET {foo}bar\\\\x92", key=key) + assert response["command"] == "GET {foo}bar\\\\x92" |