+# 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'
'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")
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,
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
[
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