X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/262d1e44ddaf3f014423a4acf96a3a6200279820..cadfd226ac8911d34d7dc66ea75ac977ec1319d8:/services/api/test/unit/log_test.rb diff --git a/services/api/test/unit/log_test.rb b/services/api/test/unit/log_test.rb index 370bec1101..8a878ada91 100644 --- a/services/api/test/unit/log_test.rb +++ b/services/api/test/unit/log_test.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' require 'audit_logs' @@ -278,7 +282,7 @@ class LogTest < ActiveSupport::TestCase end test "non-empty configuration.unlogged_attributes" do - Rails.configuration.unlogged_attributes = ["manifest_text"] + Rails.configuration.AuditLogs.UnloggedAttributes = ["manifest_text"] txt = ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:foo\n" act_as_system_user do @@ -293,7 +297,7 @@ class LogTest < ActiveSupport::TestCase end test "empty configuration.unlogged_attributes" do - Rails.configuration.unlogged_attributes = [] + Rails.configuration.AuditLogs.UnloggedAttributes = [] txt = ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:foo\n" act_as_system_user do @@ -323,35 +327,43 @@ class LogTest < ActiveSupport::TestCase Log.unscoped.where('event_type in (?)', %w(create update destroy delete)) end + # Default settings should not delete anything -- some sites rely on + # the original "keep everything forever" behavior. test 'retain old audit logs with default settings' do assert_no_logs_deleted do AuditLogs.delete_old( - max_age: Rails.configuration.max_audit_log_age, - max_batch: Rails.configuration.max_audit_log_delete_batch) + max_age: Rails.configuration.AuditLogs.MaxAge, + max_batch: Rails.configuration.AuditLogs.MaxDeleteBatch) end end - test 'retain old audit logs with batch=0' do + # Batch size 0 should retain all logs -- even if max_age is very + # short, and even if the default settings (and associated test) have + # changed. + test 'retain old audit logs with max_audit_log_delete_batch=0' do assert_no_logs_deleted do AuditLogs.delete_old(max_age: 1, max_batch: 0) end end + # We recommend a more conservative age of 5 minutes for production, + # but 3 minutes suits our test data better (and is test-worthy in + # that it's expected to work correctly in production). test 'delete old audit logs with production settings' do initial_log_count = Log.unscoped.all.count AuditLogs.delete_old(max_age: 180, max_batch: 100000) assert_operator remaining_audit_logs.count, :<, initial_log_count end - test 'delete old audit logs in multiple batches' do - AuditLogs.delete_old(max_age: 0, max_batch: 2) + test 'delete all audit logs in multiple batches' do + AuditLogs.delete_old(max_age: 0.00001, max_batch: 2) assert_equal [], remaining_audit_logs.collect(&:uuid) end test 'delete old audit logs in thread' do begin - Rails.configuration.max_audit_log_age = 20 - Rails.configuration.max_audit_log_delete_batch = 100000 + Rails.configuration.AuditLogs.MaxAge = 20 + Rails.configuration.AuditLogs.MaxDeleteBatch = 100000 Rails.cache.delete 'AuditLogs' initial_log_count = Log.unscoped.all.count + 1 act_as_system_user do