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
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
}
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