Description:
fixed dry option bug in contest mode
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r95:8569b91a13b7 - - 1 file changed: 1 inserted, 1 deleted

@@ -184,161 +184,161
184 184 config.grader_mode = grader_mode
185 185
186 186 # reading rails environment
187 187 log 'Reading rails environment'
188 188
189 189 RAILS_ENV = config.rails_env
190 190 require RAILS_ROOT + '/config/environment'
191 191
192 192 # register grader process
193 193 if config.report_grader
194 194 grader_proc = GraderProcess.register(config.grader_hostname,
195 195 Process.pid,
196 196 grader_mode)
197 197 else
198 198 grader_proc = nil
199 199 end
200 200
201 201 #set loggin environment
202 202 ENV['GRADER_LOGGING'] = log_file_name
203 203
204 204 # register exit handler to report inactive, and terminated
205 205 at_exit do
206 206 if grader_proc!=nil
207 207 grader_proc.report_inactive
208 208 grader_proc.terminate
209 209 end
210 210 end
211 211
212 212 #
213 213 # MAIN LOOP
214 214 #
215 215
216 216 case grader_mode
217 217 when "queue", "test_request"
218 218 log "Grader: #{grader_mode}"
219 219 if grader_mode=="queue"
220 220 engine = Grader::Engine.new
221 221 else
222 222 engine = Grader::Engine.new(:room_maker => Grader::TestRequestRoomMaker.new,
223 223 :reporter => Grader::TestRequestReporter.new)
224 224 end
225 225
226 226 runner = Grader::Runner.new(engine, grader_proc)
227 227 while true
228 228
229 229 if check_stopfile # created by calling grader stop
230 230 clear_stopfile
231 231 log "stopped (with stop file)"
232 232 break
233 233 end
234 234
235 235 if grader_mode=="queue"
236 236 task = runner.grade_oldest_task
237 237 else
238 238 task = runner.grade_oldest_test_request
239 239 end
240 240 if task==nil
241 241 sleep(1)
242 242 end
243 243 end
244 244
245 245 when "prob"
246 246 if options[:report]
247 247 result_collector = ResultCollector.new
248 248 else
249 249 result_collector = nil
250 250 end
251 251
252 252 if options[:dry_run]
253 253 puts "Running in dry mode"
254 254 end
255 255
256 256 prob_reporter = Grader::SubmissionReporter.new(:dry_run => dry_run,
257 257 :result_collector => result_collector)
258 258 engine = Grader::Engine.new(:reporter => prob_reporter)
259 259 runner = Grader::Runner.new(engine, grader_proc)
260 260
261 261 grader_proc.report_active if grader_proc!=nil
262 262
263 263 ARGV.each do |prob_name|
264 264 prob = Problem.find_by_name(prob_name)
265 265 if prob==nil
266 266 puts "cannot find problem: #{prob_name}"
267 267 else
268 268 runner.grade_problem(prob)
269 269 end
270 270 end
271 271
272 272 if options[:report]
273 273 result_collector.print_report_by_user
274 274 end
275 275
276 276 when "contest"
277 277 # always use dry run when grading during contest
278 278 contest_name = ARGV.shift
279 279
280 - options[:dry_run] = true
280 + dry_run = options[:dry_run] = true
281 281
282 282 contest = Contest.find_by_name(contest_name)
283 283 if contest==nil
284 284 puts "cannot find contest: #{contest_name}"
285 285 exit(0)
286 286 end
287 287
288 288 if options[:report]
289 289 result_collector = ResultCollector.new
290 290 else
291 291 result_collector = nil
292 292 end
293 293
294 294 if options[:dry_run]
295 295 puts "Running in dry mode"
296 296 end
297 297
298 298 prob_reporter = Grader::SubmissionReporter.new(:dry_run => dry_run,
299 299 :result_collector => result_collector)
300 300 engine = Grader::Engine.new(:reporter => prob_reporter)
301 301 runner = Grader::Runner.new(engine, grader_proc)
302 302
303 303 grader_proc.report_active if grader_proc!=nil
304 304
305 305 contest.problems.each do |problem|
306 306 puts "Grading: #{problem.name}"
307 307 runner.grade_problem(problem,
308 308 :user_conditions => lambda do |u|
309 309 u.contest_finished? and
310 310 u.contest_ids.include?(contest.id)
311 311 end)
312 312 end
313 313
314 314 if options[:report]
315 315 result_collector.print_report_by_user
316 316 end
317 317
318 318 when "sub"
319 319 engine = Grader::Engine.new
320 320 runner = Grader::Runner.new(engine, grader_proc)
321 321
322 322 grader_proc.report_active if grader_proc!=nil
323 323
324 324 ARGV.each do |sub_id|
325 325 puts "Grading #{sub_id}"
326 326 begin
327 327 submission = Submission.find(sub_id.to_i)
328 328 rescue ActiveRecord::RecordNotFound
329 329 puts "Record not found"
330 330 submission = nil
331 331 end
332 332
333 333 if submission!=nil
334 334 runner.grade_submission(submission)
335 335 end
336 336 end
337 337
338 338
339 339
340 340 else
341 341 display_manual
342 342 exit(0)
343 343 end
344 344
You need to be logged in to leave comments. Login now