X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/01ea0e9faa0b29ef747699f7f4b728d4e888ef83..7497b21c937bb6e8451f16047945b7cfc9081a53:/services/api/test/unit/container_request_test.rb diff --git a/services/api/test/unit/container_request_test.rb b/services/api/test/unit/container_request_test.rb index 8621daaaf0..3ab4a891f7 100644 --- a/services/api/test/unit/container_request_test.rb +++ b/services/api/test/unit/container_request_test.rb @@ -9,7 +9,7 @@ class ContainerRequestTest < ActiveSupport::TestCase environment: {}, mounts: {"/out" => {"kind" => "tmp", "capacity" => 1000000}}, output_path: "/out", - runtime_constraints: {}, + runtime_constraints: {"vcpus" => 1, "ram" => 2}, name: "foo", description: "bar", } @@ -53,6 +53,51 @@ class ContainerRequestTest < ActiveSupport::TestCase assert_nil cr.container_uuid end + [ + {"vcpus" => 1}, + {"vcpus" => 1, "ram" => nil}, + {"vcpus" => 0, "ram" => 123}, + {"vcpus" => "1", "ram" => "123"} + ].each do |invalid_constraints| + test "Create with #{invalid_constraints}" do + set_user_from_auth :active + assert_raises(ActiveRecord::RecordInvalid) do + cr = create_minimal_req!(state: "Committed", + priority: 1, + runtime_constraints: invalid_constraints) + cr.save! + end + end + + test "Update with #{invalid_constraints}" do + set_user_from_auth :active + cr = create_minimal_req!(state: "Uncommitted", priority: 1) + cr.save! + assert_raises(ActiveRecord::RecordInvalid) do + cr = ContainerRequest.find_by_uuid cr.uuid + cr.update_attributes!(state: "Committed", + runtime_constraints: invalid_constraints) + end + end + end + + test "Update from fixture" do + set_user_from_auth :active + cr = ContainerRequest.find_by_uuid(container_requests(:running).uuid) + cr.update_attributes!(description: "New description") + assert_equal "New description", cr.description + end + + test "Update with valid runtime constraints" do + set_user_from_auth :active + cr = create_minimal_req!(state: "Uncommitted", priority: 1) + cr.save! + cr = ContainerRequest.find_by_uuid cr.uuid + cr.update_attributes!(state: "Committed", + runtime_constraints: {"vcpus" => 1, "ram" => 23}) + assert_not_nil cr.container_uuid + end + test "Container request priority must be non-nil" do set_user_from_auth :active cr = create_minimal_req!(priority: nil) @@ -64,7 +109,7 @@ class ContainerRequestTest < ActiveSupport::TestCase test "Container request commit" do set_user_from_auth :active - cr = create_minimal_req!(runtime_constraints: {"vcpus" => [2,3]}) + cr = create_minimal_req!(runtime_constraints: {"vcpus" => 2, "ram" => 30}) assert_nil cr.container_uuid @@ -84,7 +129,7 @@ class ContainerRequestTest < ActiveSupport::TestCase assert_equal({}, c.environment) assert_equal({"/out" => {"kind"=>"tmp", "capacity"=>1000000}}, c.mounts) assert_equal "/out", c.output_path - assert_equal({"vcpus" => 2}, c.runtime_constraints) + assert_equal({"vcpus" => 2, "ram" => 30}, c.runtime_constraints) assert_equal 1, c.priority assert_raises(ActiveRecord::RecordInvalid) do @@ -291,7 +336,7 @@ class ContainerRequestTest < ActiveSupport::TestCase }, } cr = ContainerRequest.new(mounts: m) - assert_raises(ActiveRecord::RecordNotFound) do + assert_raises(ArvadosModel::UnresolvableContainerError) do cr.send :mounts_for_container end end @@ -336,10 +381,10 @@ class ContainerRequestTest < ActiveSupport::TestCase 'ENOEXIST', 'arvados/apitestfixture:ENOEXIST', ].each do |img| - test "container_image_for_container(#{img.inspect}) => 404" do + test "container_image_for_container(#{img.inspect}) => 422" do set_user_from_auth :active cr = ContainerRequest.new(container_image: img) - assert_raises(ActiveRecord::RecordNotFound) do + assert_raises(ArvadosModel::UnresolvableContainerError) do cr.send :container_image_for_container end end