--- /dev/null
+require 'test_helper'
+require 'rake'
+
+Rake.application.rake_require "tasks/delete_old_container_logs"
+Rake::Task.define_task(:environment)
+
+class DeleteOldContainerLogsTaskTest < ActiveSupport::TestCase
+ TASK_NAME = "db:delete_old_container_logs"
+
+ def log_uuids(*fixture_names)
+ fixture_names.map { |name| logs(name).uuid }
+ end
+
+ def run_with_expiry(clean_after)
+ Rails.configuration.clean_container_log_rows_after = clean_after
+ Rake::Task[TASK_NAME].reenable
+ Rake.application.invoke_task TASK_NAME
+ end
+
+ def check_log_existence(test_method, fixture_uuids)
+ uuids_now = Log.where("object_uuid LIKE :pattern AND event_type in ('stdout', 'stderr', 'arv-mount', 'crunch-run', 'crunchstat')", pattern: "%-dz642-%").map(&:uuid)
+ fixture_uuids.each do |expect_uuid|
+ send(test_method, uuids_now, expect_uuid)
+ end
+ end
+
+ test "delete all finished logs" do
+ uuids_to_keep = log_uuids(:stderr_for_running_container,
+ :crunchstat_for_running_container)
+ uuids_to_clean = log_uuids(:stderr_for_previous_container,
+ :crunchstat_for_previous_container,
+ :stderr_for_ancient_container,
+ :crunchstat_for_ancient_container)
+ run_with_expiry(1)
+ check_log_existence(:assert_includes, uuids_to_keep)
+ check_log_existence(:refute_includes, uuids_to_clean)
+ end
+
+ test "delete old finished logs" do
+ uuids_to_keep = log_uuids(:stderr_for_running_container,
+ :crunchstat_for_running_container,
+ :stderr_for_previous_container,
+ :crunchstat_for_previous_container)
+ uuids_to_clean = log_uuids(:stderr_for_ancient_container,
+ :crunchstat_for_ancient_container)
+ run_with_expiry(360.days)
+ check_log_existence(:assert_includes, uuids_to_keep)
+ check_log_existence(:refute_includes, uuids_to_clean)
+ end
+end