2 load 'test/functional/arvados/v1/git_setup.rb'
4 class Arvados::V1::JobReuseControllerTest < ActionController::TestCase
5 fixtures :repositories, :users, :jobs, :links, :collections
7 # See git_setup.rb for the commit log for test.git.tar
11 @controller = Arvados::V1::JobsController.new
12 authorize_with :active
15 test "reuse job with no_reuse=false" do
19 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
22 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
26 assert_response :success
27 assert_not_nil assigns(:object)
28 new_job = JSON.parse(@response.body)
29 assert_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
30 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
33 test "reuse job with find_or_create=true" do
37 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
40 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
46 assert_response :success
47 assert_not_nil assigns(:object)
48 new_job = JSON.parse(@response.body)
49 assert_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
50 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
53 test "do not reuse job because no_reuse=true" do
58 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
61 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
66 assert_response :success
67 assert_not_nil assigns(:object)
68 new_job = JSON.parse(@response.body)
69 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
70 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
73 test "do not reuse job because find_or_create=false" do
77 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
80 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
86 assert_response :success
87 assert_not_nil assigns(:object)
88 new_job = JSON.parse(@response.body)
89 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
90 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
93 test "test_cannot_reuse_job_no_output" do
97 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
100 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
104 assert_response :success
105 assert_not_nil assigns(:object)
106 new_job = JSON.parse(@response.body)
107 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykppp', new_job['uuid']
110 test "test_reuse_job_range" do
114 minimum_script_version: "tag1",
115 script_version: "master",
118 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
122 assert_response :success
123 assert_not_nil assigns(:object)
124 new_job = JSON.parse(@response.body)
125 assert_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
126 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
129 test "cannot_reuse_job_no_minimum_given_so_must_use_specified_commit" do
133 script_version: "master",
136 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
140 assert_response :success
141 assert_not_nil assigns(:object)
142 new_job = JSON.parse(@response.body)
143 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
144 assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']
147 test "test_cannot_reuse_job_different_input" do
151 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
154 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
158 assert_response :success
159 assert_not_nil assigns(:object)
160 new_job = JSON.parse(@response.body)
161 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
162 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
165 test "test_cannot_reuse_job_different_version" do
169 script_version: "master",
172 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
176 assert_response :success
177 assert_not_nil assigns(:object)
178 new_job = JSON.parse(@response.body)
179 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
180 assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']
183 test "test_can_reuse_job_submitted_nondeterministic" do
187 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
190 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
193 nondeterministic: true
195 assert_response :success
196 assert_not_nil assigns(:object)
197 new_job = JSON.parse(@response.body)
198 assert_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
199 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
202 test "test_cannot_reuse_job_past_nondeterministic" do
206 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
209 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
213 assert_response :success
214 assert_not_nil assigns(:object)
215 new_job = JSON.parse(@response.body)
216 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykyyy', new_job['uuid']
217 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
220 test "test_cannot_reuse_job_no_permission" do
221 authorize_with :spectator
225 script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
228 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
232 assert_response :success
233 assert_not_nil assigns(:object)
234 new_job = JSON.parse(@response.body)
235 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
236 assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
239 test "test_cannot_reuse_job_excluded" do
243 minimum_script_version: "31ce37fe365b3dc204300a3e4c396ad333ed0556",
244 script_version: "master",
246 exclude_script_versions: ["tag1"],
248 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
252 assert_response :success
253 assert_not_nil assigns(:object)
254 new_job = JSON.parse(@response.body)
255 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
256 assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']
259 test "cannot reuse job with find_or_create but excluded version" do
263 script_version: "master",
266 input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
270 find_or_create: true,
271 minimum_script_version: "31ce37fe365b3dc204300a3e4c396ad333ed0556",
272 exclude_script_versions: ["tag1"],
274 assert_response :success
275 assert_not_nil assigns(:object)
276 new_job = JSON.parse(@response.body)
277 assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqqq', new_job['uuid']
278 assert_equal '077ba2ad3ea24a929091a9e6ce545c93199b8e57', new_job['script_version']