require 'socket' require 'timeout' require "toxiproxy" hostname = 'toxiproxy' port = 16379 # Setup Toxiproxy.host = "http://#{hostname}:8474" Toxiproxy.populate([{ name: "redis", listen: ":#{port}", upstream: "redis:6379", }]) Toxiproxy.each do |proxy| p proxy end puts "## Test connect to redis" s = TCPSocket.open(hostname, port) s.puts "info" Timeout::timeout(2) do puts ">>> Start reading" while line = s.gets puts line.chop end rescue => e puts e p e end rescue "" s.close puts ">>> Finish reading" puts "## Test when redis is down" Toxiproxy[/redis/].down do Toxiproxy.each do |proxy| p proxy end s = TCPSocket.open(hostname, port) s.puts "info" Timeout::timeout(2) do puts ">>> Start reading" while line = s.gets puts line.chop end rescue => e puts e p e end rescue "" s.close puts ">>> Finish reading" end