diff --git a/test/amqp/client_test.rb b/test/amqp/client_test.rb index 5009623..820daf5 100644 --- a/test/amqp/client_test.rb +++ b/test/amqp/client_test.rb @@ -479,21 +479,20 @@ def test_it_can_set_channel_max def test_it_can_be_blocked skip_if_no_sudo - connection = AMQP::Client.new("amqp://localhost").connect - ch = connection.channel - system("sudo rabbitmqctl set_vm_memory_high_watermark 0.001") - t = Thread.new do + begin + connection = AMQP::Client.new("amqp://localhost").connect + ch = connection.channel + system("sudo rabbitmqctl set_vm_memory_high_watermark 0.001") ch.basic_publish("body", "", "q") sleep 0.01 # server blocks after first publish - ch.basic_publish("body", "", "q") + assert connection.blocked? + system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") + sleep 0.01 # server blocks after first publish + refute connection.blocked? + ensure + system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") + connection&.close end - assert_nil t.join(0.1) # make sure the thread is blocked - system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") - assert t.join - refute t.status # status is false when terminated normal - ensure - system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") - connection&.close end def test_it_will_publish_and_consume_properties @@ -534,25 +533,27 @@ def test_it_will_publish_and_consume_properties def test_blocked_handler skip_if_no_sudo - q = Queue.new - client = AMQP::Client.new("amqp://localhost") - connection = client.connect - connection.on_blocked do |reason| - q << reason - end - connection.on_unblocked do - q << nil + begin + q = Queue.new + client = AMQP::Client.new("amqp://localhost") + connection = client.connect + connection.on_blocked do |reason| + q << reason + end + connection.on_unblocked do + q << nil + end + system("sudo rabbitmqctl set_vm_memory_high_watermark 0.001") + ch = connection.channel + ch.basic_publish("", "", "") + reason = q.pop + assert_equal "low on memory", reason + system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") + unblocked = q.pop + assert_nil unblocked + ensure + system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") end - system("sudo rabbitmqctl set_vm_memory_high_watermark 0.001") - ch = connection.channel - ch.basic_publish("", "", "") - reason = q.pop - assert_equal "low on memory", reason - system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") - unblocked = q.pop - assert_nil unblocked - ensure - system("sudo rabbitmqctl set_vm_memory_high_watermark 0.4") end def test_queue_pruge_returns_msg_count