summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoshan Khatri <117414976+roshkhatri@users.noreply.github.com>2023-02-02 12:12:16 -0800
committerGitHub <noreply@github.com>2023-02-02 12:12:16 -0800
commitac3129543882bdb6e17c2953ec2be7c98ef840ba (patch)
treef5cfc74e209fcd7141b02d5edfe19eba28a4532c /tests
parent3b260149e0996b8ee12510b0b9508bca56743269 (diff)
downloadredis-ac3129543882bdb6e17c2953ec2be7c98ef840ba.tar.gz
Added fields to ACL LOG error entries for precise time logging (#11477)
Added 3 fields to the ACL LOG - adds entry_id, timestamp_created and timestamp_last_updated, which updates similar existing log error entries. The pair - entry_id, timestamp_created is a unique identifier of this entry, in case the node dies and is restarted, it can detect that if it's a new series. The primary use case of Unique id is to uniquely identify the error messages and not to detect if the server has restarted. entry-id is the sequence number of the entry (starting at 0) since the server process started. Can also be used to check if items were "lost" if they fell between periods. timestamp-created is the unix-time in ms at the time the entry was first created. timestamp-last-updated is the unix-time in ms at the time the entry was last updated Time_created gives the absolute time which better accounts for network time as compared to time since. It can also be older than 60 secs and presently there is no field that can display the original time of creation once the error entry is updated. The reason of timestamp_last_updated field is that it provides a more precise value for the “last time” an error was seen where as, presently it is only in the 60 second period. Co-authored-by: Madelyn Olson <madelyneolson@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/acl.tcl22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/unit/acl.tcl b/tests/unit/acl.tcl
index f423bf111..71cf9ae43 100644
--- a/tests/unit/acl.tcl
+++ b/tests/unit/acl.tcl
@@ -616,6 +616,28 @@ start_server {tags {"acl external:skip"}} {
# The test framework will detect a leak if any.
}
+ test {ACL LOG aggregates similar errors together and assigns unique entry-id to new errors} {
+ r ACL LOG RESET
+ r ACL setuser user1 >foo
+ assert_error "*WRONGPASS*" {r AUTH user1 doo}
+ set entry_id_initial_error [dict get [lindex [r ACL LOG] 0] entry-id]
+ set timestamp_created_original [dict get [lindex [r ACL LOG] 0] timestamp-created]
+ set timestamp_last_update_original [dict get [lindex [r ACL LOG] 0] timestamp-last-updated]
+ for {set j 0} {$j < 10} {incr j} {
+ assert_error "*WRONGPASS*" {r AUTH user1 doo}
+ }
+ set entry_id_lastest_error [dict get [lindex [r ACL LOG] 0] entry-id]
+ set timestamp_created_updated [dict get [lindex [r ACL LOG] 0] timestamp-created]
+ set timestamp_last_updated_after_update [dict get [lindex [r ACL LOG] 0] timestamp-last-updated]
+ assert {$entry_id_lastest_error eq $entry_id_initial_error}
+ assert {$timestamp_last_update_original < $timestamp_last_updated_after_update}
+ assert {$timestamp_created_original eq $timestamp_created_updated}
+ r ACL setuser user2 >doo
+ assert_error "*WRONGPASS*" {r AUTH user2 foo}
+ set new_error_entry_id [dict get [lindex [r ACL LOG] 0] entry-id]
+ assert {$new_error_entry_id eq $entry_id_lastest_error + 1 }
+ }
+
test {ACL LOG shows failed command executions at toplevel} {
r ACL LOG RESET
r ACL setuser antirez >foo on +set ~object:1234