3889: split the test "cancel a running job" into two tests: one that cancels a runnin...
[arvados.git] / services / api / test / functional / arvados / v1 / jobs_controller_test.rb
index 86b45952d3383d61f9931ba66d0a5cbdeebdfe14..03ee3df2e263b36895b28a48cc90787bac36ba39 100644 (file)
@@ -18,8 +18,7 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     new_job = JSON.parse(@response.body)
     assert_not_nil new_job['uuid']
     assert_not_nil new_job['script_version'].match(/^[0-9a-f]{40}$/)
-    # Default: not persistent
-    assert_equal false, new_job['output_is_persistent']
+    assert_equal 0, new_job['priority']
   end
 
   test "normalize output and log uuids when creating job" do
@@ -82,9 +81,19 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     assert_equal(true,
                  File.exists?(Rails.configuration.crunch_refresh_trigger),
                  'trigger file should be created when job is cancelled')
+  end
+
+  test "cancelling a cancelled jobs stays cancelled" do
+    # We need to verify that "cancel" creates a trigger file, so first
+    # let's make sure there is no stale trigger file.
+    begin
+      File.unlink(Rails.configuration.crunch_refresh_trigger)
+    rescue Errno::ENOENT
+    end
 
+    authorize_with :active
     put :update, {
-      id: jobs(:running).uuid,
+      id: jobs(:running_cancelled).uuid,
       job: {
         cancelled_at: nil
       }
@@ -285,19 +294,43 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     assert_response :success
   end
 
-  [:active, :admin].each do |which_token|
+  [:spectator, :admin].each_with_index do |which_token, i|
     test "get job queue as #{which_token} user" do
       authorize_with which_token
       get :queue
       assert_response :success
-      assert_operator 1, :<=, assigns(:objects).count
+      assert_equal i, assigns(:objects).count
     end
-    test "get job queue as #{which_token} user, with a filter" do
+  end
+
+  test "get job queue as with a = filter" do
+    authorize_with :admin
+    get :queue, { filters: [['script','=','foo']] }
+    assert_response :success
+    assert_equal ['foo'], assigns(:objects).collect(&:script).uniq
+    assert_equal 0, assigns(:objects)[0].queue_position
+  end
+
+  test "get job queue as with a != filter" do
+    authorize_with :admin
+    get :queue, { filters: [['script','!=','foo']] }
+    assert_response :success
+    assert_equal 0, assigns(:objects).count
+  end
+
+  [:spectator, :admin].each do |which_token|
+    test "get queue_size as #{which_token} user" do
       authorize_with which_token
-      get :queue, { filters: [['script','=','foo']] }
+      get :queue_size
       assert_response :success
-      assert_equal ['foo'], assigns(:objects).collect(&:script).uniq
+      assert_equal 1, JSON.parse(@response.body)["queue_size"]
     end
   end
 
+  test "job includes assigned nodes" do
+    authorize_with :active
+    get :show, {id: jobs(:nearly_finished_job).uuid}
+    assert_response :success
+    assert_equal([nodes(:busy).uuid], json_response["node_uuids"])
+  end
 end