From f79b1cb49e8dec1cb21bd4d7ccdee21931114429 Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 29 Aug 2013 16:23:57 +0200 Subject: [PATCH] Test: added a memory efficiency test. --- tests/test_helper.tcl | 1 + tests/unit/memefficiency.tcl | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/unit/memefficiency.tcl diff --git a/tests/test_helper.tcl b/tests/test_helper.tcl index 1c3049d32..d8de34e18 100644 --- a/tests/test_helper.tcl +++ b/tests/test_helper.tcl @@ -45,6 +45,7 @@ set ::all_tests { unit/limits unit/obuf-limits unit/bitops + unit/memefficiency } # Index to the next test to run in the ::all_tests list. set ::next_test 0 diff --git a/tests/unit/memefficiency.tcl b/tests/unit/memefficiency.tcl new file mode 100644 index 000000000..3612f06e5 --- /dev/null +++ b/tests/unit/memefficiency.tcl @@ -0,0 +1,32 @@ +proc test_memory_efficiency {range} { + r flushall + set base_mem [s used_memory] + set written 0 + for {set j 0} {$j < 10000} {incr j} { + set key key:$j + set val [string repeat A [expr {int(rand()*$range)}]] + r set $key $val + incr written [string length $key] + incr written [string length $val] + incr written 2 ;# A separator is the minimum to store key-value data. + } + set current_mem [s used_memory] + set used [expr {$current_mem-$base_mem}] + set efficiency [expr {double($written)/$used}] + return $efficiency +} + +start_server {tags {"memefficiency"}} { + foreach {size_range expected_min_efficiency} { + 32 0.15 + 64 0.25 + 128 0.35 + 1024 0.75 + 16384 0.90 + } { + test "Memory efficiency with values in range $size_range" { + set efficiency [test_memory_efficiency $size_range] + assert {$efficiency >= $expected_min_efficiency} + } + } +} -- GitLab