Description:
does not record login time in analysis mode
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r317:df35763dc517 - - 1 file changed: 2 inserted, 0 deleted

@@ -265,114 +265,116
265 265 else
266 266 grading_info['testruns'].keys.sort.each do |num|
267 267 run = []
268 268 testrun = grading_info['testruns'][num]
269 269 testrun.each do |c|
270 270 run << read_grading_result(@user.login,
271 271 submission.problem.name,
272 272 submission.id,
273 273 c)
274 274 end
275 275 @test_runs << run
276 276 end
277 277 end
278 278 end
279 279
280 280 def grading_result_dir(user_name, problem_name, submission_id, case_num)
281 281 return "#{GRADING_RESULT_DIR}/#{user_name}/#{problem_name}/#{submission_id}/test-result/#{case_num}"
282 282 end
283 283
284 284 def output_filename(user_name, problem_name, submission_id, case_num)
285 285 dir = grading_result_dir(user_name,problem_name, submission_id, case_num)
286 286 return "#{dir}/output.txt"
287 287 end
288 288
289 289 def read_grading_result(user_name, problem_name, submission_id, case_num)
290 290 dir = grading_result_dir(user_name,problem_name, submission_id, case_num)
291 291 result_file_name = "#{dir}/result"
292 292 if !FileTest.exists?(result_file_name)
293 293 return {:num => case_num, :msg => 'program did not run'}
294 294 else
295 295 results = File.open(result_file_name).readlines
296 296 run_stat = extract_running_stat(results)
297 297 output_filename = "#{dir}/output.txt"
298 298 if FileTest.exists?(output_filename)
299 299 output_file = true
300 300 output_size = File.size(output_filename)
301 301 else
302 302 output_file = false
303 303 output_size = 0
304 304 end
305 305
306 306 return {
307 307 :num => case_num,
308 308 :msg => results[0],
309 309 :run_stat => run_stat,
310 310 :output => output_file,
311 311 :output_size => output_size
312 312 }
313 313 end
314 314 end
315 315
316 316 # copied from grader/script/lib/test_request_helper.rb
317 317 def extract_running_stat(results)
318 318 running_stat_line = results[-1]
319 319
320 320 # extract exit status line
321 321 run_stat = ""
322 322 if !(/[Cc]orrect/.match(results[0]))
323 323 run_stat = results[0].chomp
324 324 else
325 325 run_stat = 'Program exited normally'
326 326 end
327 327
328 328 logger.info "Stat line: #{running_stat_line}"
329 329
330 330 # extract running time
331 331 if res = /r(.*)u(.*)s/.match(running_stat_line)
332 332 seconds = (res[1].to_f + res[2].to_f)
333 333 time_stat = "Time used: #{seconds} sec."
334 334 else
335 335 seconds = nil
336 336 time_stat = "Time used: n/a sec."
337 337 end
338 338
339 339 # extract memory usage
340 340 if res = /s(.*)m/.match(running_stat_line)
341 341 memory_used = res[1].to_i
342 342 else
343 343 memory_used = -1
344 344 end
345 345
346 346 return {
347 347 :msg => "#{run_stat}\n#{time_stat}",
348 348 :running_time => seconds,
349 349 :exit_status => run_stat,
350 350 :memory_usage => memory_used
351 351 }
352 352 end
353 353
354 354 def confirm_and_update_start_time
355 355 user = User.find(session[:user_id])
356 356 if (Configuration.indv_contest_mode? and
357 357 Configuration['contest.confirm_indv_contest_start'] and
358 358 !user.contest_started?)
359 359 redirect_to :action => 'confirm_contest_start' and return
360 360 end
361 + if not Configuration.analysis_mode?
361 362 user.update_start_time
362 363 end
364 + end
363 365
364 366 def reject_announcement_refresh_when_logged_out
365 367 if not session[:user_id]
366 368 render :text => 'Access forbidden', :status => 403
367 369 end
368 370
369 371 if Configuration.multicontests?
370 372 user = User.find(session[:user_id])
371 373 if user.contest_stat.forced_logout
372 374 render :text => 'Access forbidden', :status => 403
373 375 end
374 376 end
375 377 end
376 378
377 379 end
378 380
You need to be logged in to leave comments. Login now