X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/523d1c2a9963edc25becf7958e024992ed8a6e66..7aaf9f22aa646077b4b7fd961d6b731185b88137:/services/api/test/unit/container_request_test.rb?ds=sidebyside diff --git a/services/api/test/unit/container_request_test.rb b/services/api/test/unit/container_request_test.rb index 2d5c735181..9f412c7bb0 100644 --- a/services/api/test/unit/container_request_test.rb +++ b/services/api/test/unit/container_request_test.rb @@ -1290,4 +1290,75 @@ class ContainerRequestTest < ActiveSupport::TestCase cr.save! end end + + test "default output_storage_classes" do + saved = Rails.configuration.DefaultStorageClasses + Rails.configuration.DefaultStorageClasses = ["foo"] + begin + act_as_user users(:active) do + cr = create_minimal_req!(priority: 1, + state: ContainerRequest::Committed, + output_name: 'foo') + run_container(cr) + cr.reload + output = Collection.find_by_uuid(cr.output_uuid) + assert_equal ["foo"], output.storage_classes_desired + end + ensure + Rails.configuration.DefaultStorageClasses = saved + end + end + + test "setting output_storage_classes" do + act_as_user users(:active) do + cr = create_minimal_req!(priority: 1, + state: ContainerRequest::Committed, + output_name: 'foo', + output_storage_classes: ["foo_storage_class", "bar_storage_class"]) + run_container(cr) + cr.reload + output = Collection.find_by_uuid(cr.output_uuid) + assert_equal ["foo_storage_class", "bar_storage_class"], output.storage_classes_desired + log = Collection.find_by_uuid(cr.log_uuid) + assert_equal ["foo_storage_class", "bar_storage_class"], log.storage_classes_desired + end + end + + test "reusing container with different container_request.output_storage_classes" do + common_attrs = {cwd: "test", + priority: 1, + command: ["echo", "hello"], + output_path: "test", + runtime_constraints: {"vcpus" => 4, + "ram" => 12000000000}, + mounts: {"test" => {"kind" => "json"}}, + environment: {"var" => "value1"}, + output_storage_classes: ["foo_storage_class"]} + set_user_from_auth :active + cr1 = create_minimal_req!(common_attrs.merge({state: ContainerRequest::Committed})) + cont1 = run_container(cr1) + cr1.reload + + output1 = Collection.find_by_uuid(cr1.output_uuid) + + # Testing with use_existing default value + cr2 = create_minimal_req!(common_attrs.merge({state: ContainerRequest::Uncommitted, + output_storage_classes: ["bar_storage_class"]})) + + assert_not_nil cr1.container_uuid + assert_nil cr2.container_uuid + + # Update cr2 to commited state, check for reuse, then run it + cr2.update_attributes!({state: ContainerRequest::Committed}) + assert_equal cr1.container_uuid, cr2.container_uuid + + cr2.reload + output2 = Collection.find_by_uuid(cr2.output_uuid) + + # the original CR output has the original storage class, + # but the second CR output has the new storage class. + assert_equal ["foo_storage_class"], cont1.output_storage_classes + assert_equal ["foo_storage_class"], output1.storage_classes_desired + assert_equal ["bar_storage_class"], output2.storage_classes_desired + end end