From eb7023ee060428632c2dcb2300613db867c23d4b Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 30 Jun 2022 10:45:56 +0200 Subject: [PATCH] Add a test for abruptly closed connections Ref: https://github.com/redis/redis-rb/issues/1106 --- test/redis_client/connection_test.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/redis_client/connection_test.rb b/test/redis_client/connection_test.rb index adf2904..3af8dd1 100644 --- a/test/redis_client/connection_test.rb +++ b/test/redis_client/connection_test.rb @@ -192,6 +192,23 @@ def test_reconnect_with_call_once assert_equal "1", client.call("GET", "counter") end + def test_killed_connection + client = new_client(reconnect_attempts: 1, id: "background") + + thread = Thread.new do + client.blocking_call(false, "BLPOP", "list", 0) + end + thread.join(0.1) + assert_predicate thread, :alive? + + second_client = new_client + + id = second_client.call("CLIENT", "LIST").lines.grep(/name=background/)[0].match(/^id=(\d+)/)[1] + assert_equal 1, second_client.call("CLIENT", "KILL", "ID", id) + second_client.call("LPUSH", "list", "hello") + assert_equal ["list", "hello"], thread.join.value + end + private def assert_timeout(error, faster_than = 0.5, &block)