X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/607fe087f6167061714a524dd53cbbc21b974973..041378345708e781b5b3a4a618e9c4848e465218:/services/api/test/unit/job_test.rb diff --git a/services/api/test/unit/job_test.rb b/services/api/test/unit/job_test.rb index 9241465d49..41e2adb9c3 100644 --- a/services/api/test/unit/job_test.rb +++ b/services/api/test/unit/job_test.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' require 'helpers/git_test_helper' require 'helpers/docker_migration_helper' @@ -123,6 +127,7 @@ class JobTest < ActiveSupport::TestCase 'locator' => BAD_COLLECTION, }.each_pair do |spec_type, image_spec| test "Job validation fails with nonexistent Docker image #{spec_type}" do + Rails.configuration.remote_hosts = {} job = Job.new job_attrs(runtime_constraints: {'docker_image' => image_spec}) assert(job.invalid?, "nonexistent Docker image #{spec_type} was valid") @@ -557,7 +562,18 @@ class JobTest < ActiveSupport::TestCase assert_equal Job.deep_sort_hash(a).to_json, Job.deep_sort_hash(b).to_json end - test 'find_reusable' do + test 'find_reusable without logging' do + Rails.logger.expects(:info).never + try_find_reusable + end + + test 'find_reusable with logging' do + Rails.configuration.log_reuse_decisions = true + Rails.logger.expects(:info).at_least(3) + try_find_reusable + end + + def try_find_reusable foobar = jobs(:foobar) example_attrs = { script_version: foobar.script_version, @@ -577,6 +593,11 @@ class JobTest < ActiveSupport::TestCase Job.where(uuid: jobs(:job_with_latest_version).uuid). update_all(output: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+1') assert_nil Job.find_reusable(example_attrs, {}, [], [users(:active)]) + + # ...unless config says to reuse the earlier job in such cases. + Rails.configuration.reuse_job_if_outputs_differ = true + j = Job.find_reusable(example_attrs, {}, [], [users(:active)]) + assert_equal foobar.uuid, j.uuid end [ @@ -625,4 +646,32 @@ class JobTest < ActiveSupport::TestCase child = Job.find_by_uuid job.components.collect{|_, uuid| uuid}[0] assert_equal Job::Cancelled, child.state end + + test 'enable legacy api configuration option = true' do + Rails.configuration.enable_legacy_jobs_api = true + check_enable_legacy_jobs_api + assert_equal [], Rails.configuration.disable_api_methods + end + + test 'enable legacy api configuration option = false' do + Rails.configuration.enable_legacy_jobs_api = false + check_enable_legacy_jobs_api + assert_equal Disable_jobs_api_method_list, Rails.configuration.disable_api_methods + end + + test 'enable legacy api configuration option = auto, has jobs' do + Rails.configuration.enable_legacy_jobs_api = "auto" + check_enable_legacy_jobs_api + assert_equal [], Rails.configuration.disable_api_methods + end + + test 'enable legacy api configuration option = auto, no jobs' do + Rails.configuration.enable_legacy_jobs_api = "auto" + act_as_system_user do + Job.destroy_all + end + puts "ZZZ #{Job.count}" + check_enable_legacy_jobs_api + assert_equal Disable_jobs_api_method_list, Rails.configuration.disable_api_methods + end end