From 5a6948fbc02568a26e21c0a69e5e921edef8c1b9 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 24 Mar 2009 00:43:38 +0100 Subject: [PATCH] random tested mode for test-redis.tcl, minor other stuff, version switched to 0.8 --- .gitignore | 1 + TODO | 33 ++------------------------------- redis.c | 2 +- test-redis.tcl | 43 +++++++++++++++++++++++++++++++++++-------- 4 files changed, 39 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index c9119a2fa..c8a56bc70 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ redis-server redis-benchmark doc-tools mkrelease.sh +release diff --git a/TODO b/TODO index 9bf8644f4..00885d170 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -BETA 8 TODO +- Protocol changes as discussed in the Redis group - keys expire - sunion ssub - write integers in a special way on disk (and on memory?) @@ -6,33 +6,4 @@ BETA 8 TODO - network layer stresser in test in demo - maxclients directive - check 'server.dirty' everywere -- replication tests -- command line client. If the last argument of a bulk command is missing get it from stdin. Example: - $ echo "bar" | redis-client SET foo - $ redis-client SET foo bar - $ redis-client GET foo - bar - $ -- Make Redis aware of the memory it is using thanks to getrusage() and report this info with the INFO command. -- INFO command: clients, slave/master, requests/second in the last N seconds, memory usage, uptime, dirty, lastsave - -FUTURE - -ROLLBACK command: - - ROLLBACK UNSET x - SET x 10 - EXPIRE x 3600 - COMMIT - - (multiple rollbacks are allowed) - - or alternatively - - TRANSACTION SET x 1000 - TRANSACTION EXPIRE x 1000 - COMMIT - - but this sucks since there is no way to check the error message. - -- Prevent the client to issue SYNC or MONITOR multiple times +- replication automated tests diff --git a/redis.c b/redis.c index 0fc667951..58b856060 100644 --- a/redis.c +++ b/redis.c @@ -27,7 +27,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#define REDIS_VERSION "0.07" +#define REDIS_VERSION "0.08" #include #include diff --git a/test-redis.tcl b/test-redis.tcl index 99b564636..9bfab2048 100644 --- a/test-redis.tcl +++ b/test-redis.tcl @@ -784,37 +784,37 @@ proc redis_sismember {fd key val} { } proc redis_sinter {fd args} { - redis_writenl $fd "sinter [join $args]\r\n" + redis_writenl $fd "sinter [join $args]" redis_multi_bulk_read $fd } proc redis_sinterstore {fd args} { - redis_writenl $fd "sinterstore [join $args]\r\n" + redis_writenl $fd "sinterstore [join $args]" redis_read_retcode $fd } proc redis_smembers {fd key} { - redis_writenl $fd "smembers $key\r\n" + redis_writenl $fd "smembers $key" redis_multi_bulk_read $fd } proc redis_echo {fd str} { - redis_writenl $fd "echo [string length $str]\r\n$str\r\n" - redis_writenl $fd "smembers $key\r\n" + redis_writenl $fd "echo [string length $str]\r\n$str" + redis_writenl $fd "smembers $key" } proc redis_save {fd} { - redis_writenl $fd "save\r\n" + redis_writenl $fd "save" redis_read_retcode $fd } proc redis_flushall {fd} { - redis_writenl $fd "flushall\r\n" + redis_writenl $fd "flushall" redis_read_retcode $fd } proc redis_flushdb {fd} { - redis_writenl $fd "flushdb\r\n" + redis_writenl $fd "flushdb" redis_read_retcode $fd } @@ -823,8 +823,35 @@ proc redis_lrem {fd key count val} { redis_read_integer $fd } +proc stress {} { + set fd [socket 127.0.0.1 6379] + fconfigure $fd -translation binary + redis_flushall $fd + while 1 { + set randkey [expr int(rand()*10000)] + set randval [expr int(rand()*10000)] + set randidx0 [expr int(rand()*10)] + set randidx1 [expr int(rand()*10)] + set cmd [expr int(rand()*10)] + if {$cmd == 0} {redis_set $fd $randkey $randval} + if {$cmd == 1} {redis_get $fd $randkey} + if {$cmd == 2} {redis_incr $fd $randkey} + if {$cmd == 3} {redis_lpush $fd $randkey $randval} + if {$cmd == 4} {redis_rpop $fd $randkey} + if {$cmd == 5} {redis_del $fd $randkey} + if {$cmd == 6} {redis_lrange $fd $randkey $randidx0 $randidx1} + if {$cmd == 7} {redis_ltrim $fd $randkey $randidx0 $randidx1} + if {$cmd == 8} {redis_lindex $fd $randkey $randidx0} + if {$cmd == 9} {redis_lset $fd $randkey $randidx0 $randval} + flush stdout + } + close $fd +} + if {[llength $argv] == 0} { main 127.0.0.1 6379 +} elseif {[llength $argv] == 1 && [lindex $argv 0] eq {stress}} { + stress } else { main [lindex $argv 0] [lindex $argv 1] }