Skip to content

Instantly share code, notes, and snippets.

@FooBarWidget
Created February 7, 2011 10:16
Show Gist options
  • Save FooBarWidget/814211 to your computer and use it in GitHub Desktop.
Save FooBarWidget/814211 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# encoding: binary
require 'socket'
BURST = true
def write_to(socket, data)
puts "> #{data.inspect}"
socket.write(data)
end
def expecting(socket, expected_data)
# Give server some time to process reply.
sleep 0.1
# Then slurp all available responses.
done = false
data = ""
while !done
begin
data << socket.read_nonblock(1024)
rescue Errno::EAGAIN, EOFError
done = true
end
end
puts "< #{data.inspect}"
if data != expected_data
raise "Expected #{expected_data.inspect}, but got #{data.inspect}"
end
end
sock = TCPSocket.new('127.0.0.1', 22122)
if BURST
write_to(sock,
"set foo 0 0 2\r\n" +
"11\r\n" +
"set foo 0 0 2\r\n" +
"22\r\n" +
"get foo\r\n" +
"get foo\r\n" +
"get foo\r\n"
)
expecting(sock,
"STORED\r\n" +
"STORED\r\n" +
"VALUE foo 0 2\r\n11\r\nEND\r\n" +
"VALUE foo 0 2\r\n22\r\nEND\r\n" +
"END\r\n"
)
else
write_to(sock, "set foo 0 0 2\r\n")
write_to(sock, "11\r\n")
expecting(sock, "STORED\r\n")
write_to(sock, "set foo 0 0 2\r\n")
write_to(sock, "22\r\n")
expecting(sock, "STORED\r\n")
write_to(sock, "get foo\r\n")
expecting(sock, "VALUE foo 0 2\r\n11\r\nEND\r\n")
write_to(sock, "get foo\r\n")
expecting(sock, "VALUE foo 0 2\r\n22\r\nEND\r\n")
write_to(sock, "get foo\r\n")
expecting(sock, "END\r\n")
end
puts "all ok"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment