From 17bf8dc99c34ac99fc2b74d03f8b7e6230f452e8 Mon Sep 17 00:00:00 2001 From: Jamie Scott Date: Sun, 12 Apr 2020 00:10:19 -0700 Subject: [PATCH 1/3] Adding acllog-max-len to Redis.conf While playing with ACLs I noticed that acllog-max-len wasn't in the redis.conf, but was a supported config. This PR documents and adds the directive to the redis.conf file. --- redis.conf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/redis.conf b/redis.conf index 5baeae65f..fab0a5898 100644 --- a/redis.conf +++ b/redis.conf @@ -737,6 +737,15 @@ replica-priority 100 # For more information about ACL configuration please refer to # the Redis web site at https://redis.io/topics/acl +# ACL LOG +# +# The ACL Log tracks failed commands and authentication events associated +# with ACLs. The ACL Log is useful to troubleshoot failed commands blocked +# by ACLs. The ACL Log is stored in and consumes memory. There is no limit +# to its length.You can reclaim memory with ACL LOG RESET or set a maximum +# length below. +acllog-max-len 128 + # Using an external ACL file # # Instead of configuring users here in this file, it is possible to use From 4f3b15e6ea2d72debeb2f0533e2ba11884257021 Mon Sep 17 00:00:00 2001 From: Jamie Scott Date: Sun, 12 Apr 2020 17:56:58 -0700 Subject: [PATCH 2/3] minor fix --- redis.conf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/redis.conf b/redis.conf index fab0a5898..01a2d801f 100644 --- a/redis.conf +++ b/redis.conf @@ -741,9 +741,8 @@ replica-priority 100 # # The ACL Log tracks failed commands and authentication events associated # with ACLs. The ACL Log is useful to troubleshoot failed commands blocked -# by ACLs. The ACL Log is stored in and consumes memory. There is no limit -# to its length.You can reclaim memory with ACL LOG RESET or set a maximum -# length below. +# by ACLs. The ACL Log is stored in memory. You can reclaim memory with +# ACL LOG RESET. Define the maximum entry length of the ACL Log below. acllog-max-len 128 # Using an external ACL file From b9fa42a197702c0da0baa2edb184d984dffa2933 Mon Sep 17 00:00:00 2001 From: Oran Agra Date: Thu, 16 Apr 2020 11:05:03 +0300 Subject: [PATCH 3/3] testsuite run the defrag latency test solo this test is time sensitive and it sometimes fail to pass below the latency threshold, even on strong machines. this test was the reson we're running just 2 parallel tests in the github actions CI, revering this. --- .github/workflows/ci.yml | 4 ++-- tests/test_helper.tcl | 38 ++++++++++++++++++++++++++++++++++++ tests/unit/memefficiency.tcl | 2 ++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a81d1a08..551fb2d91 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,9 +12,9 @@ jobs: - name: test run: | sudo apt-get install tcl8.5 - ./runtest --clients 2 --verbose + ./runtest --verbose - name: module api test - run: ./runtest-moduleapi --clients 2 --verbose + run: ./runtest-moduleapi --verbose build-ubuntu-old: runs-on: ubuntu-16.04 diff --git a/tests/test_helper.tcl b/tests/test_helper.tcl index d80cb6907..11a804bdc 100644 --- a/tests/test_helper.tcl +++ b/tests/test_helper.tcl @@ -82,6 +82,7 @@ set ::skiptests {} set ::allowtags {} set ::only_tests {} set ::single_tests {} +set ::run_solo_tests {} set ::skip_till "" set ::external 0; # If "1" this means, we are running against external instance set ::file ""; # If set, runs only the tests in this comma separated list @@ -112,6 +113,11 @@ proc execute_tests name { send_data_packet $::test_server_fd done "$name" } +proc execute_code {name code} { + eval $code + send_data_packet $::test_server_fd done "$name" +} + # Setup a list to hold a stack of server configs. When calls to start_server # are nested, use "srv 0 pid" to get the pid of the inner server. To access # outer servers, use "srv -1 pid" etcetera. @@ -188,6 +194,18 @@ proc s {args} { status [srv $level "client"] [lindex $args 0] } +# Test wrapped into run_solo are sent back from the client to the +# test server, so that the test server will send them again to +# clients once the clients are idle. +proc run_solo {name code} { + if {$::numclients == 1 || $::loop || $::external} { + # run_solo is not supported in these scenarios, just run the code. + eval $code + return + } + send_data_packet $::test_server_fd run_solo [list $name $code] +} + proc cleanup {} { if {$::dont_clean} { return @@ -337,6 +355,8 @@ proc read_from_test_client fd { } elseif {$status eq {server-killed}} { set ::active_servers [lsearch -all -inline -not -exact $::active_servers $data] set ::active_clients_task($fd) "(KILLED SERVER) pid:$data" + } elseif {$status eq {run_solo}} { + lappend ::run_solo_tests $data } else { if {!$::quiet} { puts "\[$status\]: $data" @@ -369,6 +389,13 @@ proc force_kill_all_servers {} { } } +proc lpop {listVar {count 1}} { + upvar 1 $listVar l + set ele [lindex $l 0] + set l [lrange $l 1 end] + set ele +} + # A new client is idle. Remove it from the list of active clients and # if there are still test units to run, launch them. proc signal_idle_client fd { @@ -389,6 +416,14 @@ proc signal_idle_client fd { if {$::loop && $::next_test == [llength $::all_tests]} { set ::next_test 0 } + } elseif {[llength $::run_solo_tests] != 0 && [llength $::active_clients] == 0} { + if {!$::quiet} { + puts [colorstr bold-white "Testing solo test"] + set ::active_clients_task($fd) "ASSIGNED: $fd solo test" + } + set ::clients_start_time($fd) [clock seconds] + send_data_packet $fd run_code [lpop ::run_solo_tests] + lappend ::active_clients $fd } else { lappend ::idle_clients $fd set ::active_clients_task($fd) "SLEEPING, no more units to assign" @@ -433,6 +468,9 @@ proc test_client_main server_port { foreach {cmd data} $payload break if {$cmd eq {run}} { execute_tests $data + } elseif {$cmd eq {run_code}} { + foreach {name code} $data break + execute_code $name $code } else { error "Unknown test client command: $cmd" } diff --git a/tests/unit/memefficiency.tcl b/tests/unit/memefficiency.tcl index 06b0e07d7..777693fdf 100644 --- a/tests/unit/memefficiency.tcl +++ b/tests/unit/memefficiency.tcl @@ -36,6 +36,7 @@ start_server {tags {"memefficiency"}} { } } +run_solo {defrag} { start_server {tags {"defrag"}} { if {[string match {*jemalloc*} [s mem_allocator]]} { test "Active defrag" { @@ -328,3 +329,4 @@ start_server {tags {"defrag"}} { } {1} } } +} ;# run_solo