diff --git a/test/jobs/refresh_resource_quota_utilization_test.rb b/test/jobs/refresh_resource_quota_utilization_test.rb new file mode 100644 index 0000000..ad8f6a7 --- /dev/null +++ b/test/jobs/refresh_resource_quota_utilization_test.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'test_plugin_helper' +require 'foreman_tasks/test_helpers' + +class RefreshResourceQuotaUtilizationTest < ActiveSupport::TestCase + include ForemanTasks::TestHelpers::WithInThreadExecutor + + setup do + User.current = User.find_by(login: 'secret_admin') + @quota = FactoryBot.create(:resource_quota, cpu_cores: 20, memory_mb: 1024 * 30, disk_gb: 512) + stub_host_utilization({ cpu_cores: 2, memory_mb: 1024 * 4, disk_gb: 60 }, {}) + + @host_a = FactoryBot.create(:host, resource_quota: @quota) + @host_b = FactoryBot.create(:host, resource_quota: @quota) + @host_c = FactoryBot.create(:host, resource_quota: @quota) + @host_d = FactoryBot.create(:host, resource_quota: @quota) + @host_e = FactoryBot.create(:host, resource_quota: @quota) + end + + test 'single resource quota utilization should be updated' do + exp_host_b_utilization = { + cpu_cores: 2 + 8, + memory_mb: (1024 * 4) + (1024 * 8), + disk_gb: 60 + 8, + } + assert_equal({ cpu_cores: 5 * 2, memory_mb: 5 * 1024 * 4, disk_gb: 5 * 60 }, @quota.utilization) + @host_b.host_resources.resources = exp_host_b_utilization + @host_b.host_resources.safe! + ForemanTasks.sync_task(ForemanResourceQuota::Async::RefreshResourceQuotaUtilization) + @quota.reload + @host_b.reload + assert_equal({ cpu_cores: (5 * 2) + 8, memory_mb: (5 * 1024 * 4) + (1024 * 8), disk_gb: (5 * 60) + 8 }, + @quota.utilization) + assert_equal(exp_host_b_utilization, @host_b.host_resources.resources) + end +end