Skip to content

Instantly share code, notes, and snippets.

@pietern
Forked from antirez/bug.rb
Created May 5, 2011 14:04
Show Gist options
  • Save pietern/957087 to your computer and use it in GitHub Desktop.
Save pietern/957087 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'redis'
def random_data
r = rand(2)
if r == 0
return rand(10000)
elsif r == 1
return "x"*rand(520)
end
end
r = Redis.new
1000000.times {
cmd = []
r.del(:mylist)
begin
2000.times {
c = rand(7)
if c == 0 or c == 1
data = random_data()
cmd << "LPUSH mylist #{data}"
r.lpush(:mylist,data)
elsif c == 2 or c == 3
data = random_data()
cmd << "RPUSH mylist #{data}"
r.rpush(:mylist,data)
elsif c == 4
cmd << "RPOP mylist"
r.rpop(:mylist)
elsif c == 5
cmd << "LPOP mylist"
r.lpop(:mylist)
else
len = r.llen(:mylist).to_i
ele = r.lindex(:mylist,rand(len))
cmd << "LREM mylist #{ele}"
r.lrem(:mylist,ele,1)
end
}
r.ping
rescue
puts cmd.join("\n")
f = File.open("/tmp/bug.txt","w")
f.write(cmd.join("\n"))
f.close
puts "** Bug found **"
exit
end
}
DEL mylist
RPUSH mylist 934
LINDEX mylist -2
RPUSH mylist xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LINDEX mylist -2
LPOP mylist
LINDEX mylist -2
RPUSH mylist 563
LINDEX mylist -2
LPUSH mylist xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LINDEX mylist -2
LPUSH mylist 4581
LINDEX mylist -2
LREM mylist xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1
LINDEX mylist -2
LREM mylist 563 1
LINDEX mylist -2
RPOP mylist
LINDEX mylist -2
LPUSH mylist 7334
LREM mylist foo -1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment