diff options
author | Bar Shaul <88437685+barshaul@users.noreply.github.com> | 2022-12-01 13:16:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-01 13:16:26 +0200 |
commit | 2c121552faf0d39267969b62ce0c3276391b37cc (patch) | |
tree | 5f65a13f146bd9a04c363ae7fe637537f7e48104 /tests/test_cluster.py | |
parent | f4d07dddba55a73df6b015b363d2ea7c96716ae5 (diff) | |
download | redis-py-2c121552faf0d39267969b62ce0c3276391b37cc.tar.gz |
Added a replacement for the default cluster node in the event of failure. (#2463)
Diffstat (limited to 'tests/test_cluster.py')
-rw-r--r-- | tests/test_cluster.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/test_cluster.py b/tests/test_cluster.py index d18fbbb..43aeb9e 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -791,6 +791,29 @@ class TestRedisClusterObj: == retry._retries ) + def test_replace_cluster_node(self, r) -> None: + prev_default_node = r.get_default_node() + r.replace_default_node() + assert r.get_default_node() != prev_default_node + r.replace_default_node(prev_default_node) + assert r.get_default_node() == prev_default_node + + def test_default_node_is_replaced_after_exception(self, r): + curr_default_node = r.get_default_node() + # CLUSTER NODES command is being executed on the default node + nodes = r.cluster_nodes() + assert "myself" in nodes.get(curr_default_node.name).get("flags") + + def raise_connection_error(): + raise ConnectionError("error") + + # Mock connection error for the default node + mock_node_resp_func(curr_default_node, raise_connection_error) + # Test that the command succeed from a different node + nodes = r.cluster_nodes() + assert "myself" not in nodes.get(curr_default_node.name).get("flags") + assert r.get_default_node() != curr_default_node + @pytest.mark.onlycluster class TestClusterRedisCommands: |