Fix crash in jobs.queue API. Add test case.
authorTom Clegg <tom@curoverse.com>
Thu, 22 May 2014 22:23:02 +0000 (18:23 -0400)
committerTom Clegg <tom@curoverse.com>
Thu, 22 May 2014 22:28:32 +0000 (18:28 -0400)
services/api/app/controllers/arvados/v1/jobs_controller.rb
services/api/test/fixtures/jobs.yml
services/api/test/functional/arvados/v1/jobs_controller_test.rb

index b0d93a4b8f190f441cef441ae68b7e383460b045..ee563010035bd92d7c7dcca9e305cfeb376ab34c 100644 (file)
@@ -166,6 +166,8 @@ class Arvados::V1::JobsController < ApplicationController
   end
 
   def queue
+    params[:order] ||= ['priority desc', 'created_at']
+    load_limit_offset_order_params
     load_where_param
     @where.merge!({
                     started_at: nil,
@@ -173,7 +175,7 @@ class Arvados::V1::JobsController < ApplicationController
                     cancelled_at: nil,
                     success: nil
                   })
-    params[:order] ||= ['priority desc', 'created_at']
+    load_filters_param
     find_objects_for_index
     index
   end
index fe0b0947ab3f0cbd1892cd016155c0791b52f637..3ad77460f38bbb43fba90a1d41989dc71b3d559a 100644 (file)
@@ -165,3 +165,23 @@ nearly_finished_job:
     running: 1
     done: 0
   runtime_constraints: {}
+
+queued:
+  uuid: zzzzz-8i9sb-grx15v5mjnsyxk7
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  cancelled_at: ~
+  cancelled_by_user_uuid: ~
+  cancelled_by_client_uuid: ~
+  started_at: ~
+  finished_at: ~
+  script: foo
+  script_version: 1de84a854e2b440dc53bf42f8548afa4c17da332
+  script_parameters: {}
+  running: ~
+  success: ~
+  output: ~
+  priority: ~
+  log: ~
+  is_locked_by_uuid: ~
+  tasks_summary: {}
+  runtime_constraints: {}
index 0d1f71f621c2b7dc6f483c8e38ab84ddc88963aa..0188bd4b130c245db7a10b3e45f08c8f7b1f324a 100644 (file)
@@ -285,4 +285,19 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     assert_response :success
   end
 
+  [:active, :admin].each do |which_token|
+    test "get job queue as #{which_token} user" do
+      authorize_with which_token
+      get :queue
+      assert_response :success
+      assert_operator 1, :<=, assigns(:objects).count
+    end
+    test "get job queue as #{which_token} user, with a filter" do
+      authorize_with which_token
+      get :queue, { filters: [['script','=','foo']] }
+      assert_response :success
+      assert_equal ['foo'], assigns(:objects).collect(&:script).uniq
+    end
+  end
+
 end