mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 00:52:38 +00:00
first version of the speed regression test
This commit is contained in:
parent
7b86f5e6d5
commit
9f080a01fa
85
utils/speed-regression.tcl
Executable file
85
utils/speed-regression.tcl
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/env tclsh8.5
|
||||||
|
# Copyright (C) 2011 Salvatore Sanfilippo
|
||||||
|
# Released under the BSD license like Redis itself
|
||||||
|
|
||||||
|
proc run-tests branches {
|
||||||
|
set runs {}
|
||||||
|
set branch_id 0
|
||||||
|
foreach b $branches {
|
||||||
|
cd ../src
|
||||||
|
puts "Benchmarking $b"
|
||||||
|
exec -ignorestderr git checkout $b 2> /dev/null
|
||||||
|
exec -ignorestderr make clean 2> /dev/null
|
||||||
|
puts " compiling..."
|
||||||
|
exec -ignorestderr make 2> /dev/null
|
||||||
|
|
||||||
|
if {$branch_id == 0} {
|
||||||
|
puts " copy redis-benchmark from unstable to /tmp..."
|
||||||
|
exec -ignorestderr cp ./redis-benchmark /tmp
|
||||||
|
incr branch_id
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start the Redis server
|
||||||
|
puts " starting the server... [exec ./redis-server -v]"
|
||||||
|
set pids [exec echo "port 12123\nloglevel warning\n" | ./redis-server - > /dev/null 2> /dev/null &]
|
||||||
|
after 1000
|
||||||
|
puts " running the benchmark"
|
||||||
|
set output [exec /tmp/redis-benchmark -n 100000 --csv -p 12123]
|
||||||
|
lappend runs $b $output
|
||||||
|
puts " killing server..."
|
||||||
|
catch {
|
||||||
|
exec kill -9 [lindex $pids 0]
|
||||||
|
exec kill -9 [lindex $pids 1]
|
||||||
|
}
|
||||||
|
incr branch_id
|
||||||
|
}
|
||||||
|
return $runs
|
||||||
|
}
|
||||||
|
|
||||||
|
proc get-result-with-name {output name} {
|
||||||
|
foreach line [split $output "\n"] {
|
||||||
|
lassign [split $line ","] key value
|
||||||
|
set key [string tolower [string range $key 1 end-1]]
|
||||||
|
set value [string range $value 1 end-1]
|
||||||
|
if {$key eq [string tolower $name]} {
|
||||||
|
return $value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "n/a"
|
||||||
|
}
|
||||||
|
|
||||||
|
proc combine-results {results} {
|
||||||
|
set tests {
|
||||||
|
ping set get incr lpush lpop sadd spop
|
||||||
|
"lrange (first 100 elements)"
|
||||||
|
"lrange (first 600 elements)"
|
||||||
|
"mset (10 keys)"
|
||||||
|
}
|
||||||
|
foreach test $tests {
|
||||||
|
puts $test
|
||||||
|
foreach {branch output} $results {
|
||||||
|
puts [format "%-20s %s" \
|
||||||
|
$branch [get-result-with-name $output $test]]
|
||||||
|
}
|
||||||
|
puts {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc main {} {
|
||||||
|
# Note: the first branch is only used in order to get the redis-benchmark
|
||||||
|
# executable. Tests are performed starting from the second branch.
|
||||||
|
set branches {
|
||||||
|
slowset 2.2.0 2.4.0 unstable slowset
|
||||||
|
}
|
||||||
|
set results [run-tests $branches]
|
||||||
|
puts [combine-results $results]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Force the user to run the script from the 'utils' directory.
|
||||||
|
if {![file exists speed-regression.tcl]} {
|
||||||
|
puts "Please make sure to run speed-regression.tcl while inside /utils."
|
||||||
|
puts "Example: cd utils; ./speed-regression.tcl"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
main
|
Loading…
Reference in New Issue
Block a user