X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3dfc071494cbb0386ecd7269c72a435fc7f9cc24..6d8a27a40903f0dc61876947cecc9401edd3a32c:/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 2fce9284c7..cf1e26c17f 100644 --- a/services/api/test/unit/job_test.rb +++ b/services/api/test/unit/job_test.rb @@ -206,6 +206,27 @@ class JobTest < ActiveSupport::TestCase end end + test "Test job state changes" do + all = ["Queued", "Running", "Complete", "Failed", "Cancelled"] + valid = {"Queued" => all, "Running" => ["Complete", "Failed", "Cancelled"]} + all.each do |start| + all.each do |finish| + if start != finish + job = Job.create! job_attrs(state: start) + assert_equal start, job.state + job.state = finish + job.save + job.reload + if valid[start] and valid[start].include? finish + assert_equal finish, job.state + else + assert_equal start, job.state + end + end + end + end + end + test "Test job locking" do set_user_from_auth :active_trustedclient job = Job.create! job_attrs @@ -216,7 +237,7 @@ class JobTest < ActiveSupport::TestCase job.lock current_user.uuid assert_equal "Running", job.state - assert_raises ArvadosModel::ConflictError do + assert_raises ArvadosModel::AlreadyLockedError do # Can't lock it again job.lock current_user.uuid end @@ -224,7 +245,7 @@ class JobTest < ActiveSupport::TestCase assert_equal "Running", job.state set_user_from_auth :project_viewer - assert_raises ArvadosModel::ConflictError do + assert_raises ArvadosModel::AlreadyLockedError do # Can't lock it as a different user either job.lock current_user.uuid end @@ -246,4 +267,18 @@ class JobTest < ActiveSupport::TestCase assert_equal "Failed", job.state end + test "verify job queue position" do + job1 = Job.create! job_attrs + assert job1.valid?, job1.errors.full_messages.to_s + assert_equal 'Queued', job1.state, "Incorrect job state for newly created job1" + + job2 = Job.create! job_attrs + assert job2.valid?, job2.errors.full_messages.to_s + assert_equal 'Queued', job2.state, "Incorrect job state for newly created job2" + + assert_not_nil job1.queue_position, "Expected non-nil queue position for job1" + assert_not_nil job2.queue_position, "Expected non-nil queue position for job2" + assert_not_equal job1.queue_position, job2.queue_position + end + end