Description:
fix bug
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r176:1bdb8b71a462 - - 1 file changed: 1 inserted, 1 deleted

@@ -336,136 +336,136
336 exit(0)
336 exit(0)
337 end
337 end
338
338
339 if options[:report]
339 if options[:report]
340 result_collector = ResultCollector.new
340 result_collector = ResultCollector.new
341 else
341 else
342 result_collector = nil
342 result_collector = nil
343 end
343 end
344
344
345 if options[:dry_run]
345 if options[:dry_run]
346 puts "Running in dry mode"
346 puts "Running in dry mode"
347 end
347 end
348
348
349 prob_reporter = Grader::SubmissionReporter.new(:dry_run => dry_run,
349 prob_reporter = Grader::SubmissionReporter.new(:dry_run => dry_run,
350 :result_collector => result_collector)
350 :result_collector => result_collector)
351 engine = Grader::Engine.new(:reporter => prob_reporter)
351 engine = Grader::Engine.new(:reporter => prob_reporter)
352 runner = Grader::Runner.new(engine, grader_proc)
352 runner = Grader::Runner.new(engine, grader_proc)
353
353
354 grader_proc.report_active if grader_proc!=nil
354 grader_proc.report_active if grader_proc!=nil
355
355
356 contest.problems.each do |problem|
356 contest.problems.each do |problem|
357 puts "Grading: #{problem.name}"
357 puts "Grading: #{problem.name}"
358 runner.grade_problem(problem,
358 runner.grade_problem(problem,
359 :user_conditions => lambda do |u|
359 :user_conditions => lambda do |u|
360 u.contest_finished? and
360 u.contest_finished? and
361 u.contest_ids.include?(contest.id)
361 u.contest_ids.include?(contest.id)
362 end)
362 end)
363 end
363 end
364
364
365 if options[:report]
365 if options[:report]
366 result_collector.print_report_by_user
366 result_collector.print_report_by_user
367 end
367 end
368 end
368 end
369
369
370 def grader_grade_submissions(grader_proc, options)
370 def grader_grade_submissions(grader_proc, options)
371 engine = Grader::Engine.new
371 engine = Grader::Engine.new
372 runner = Grader::Runner.new(engine, grader_proc)
372 runner = Grader::Runner.new(engine, grader_proc)
373
373
374 grader_proc.report_active if grader_proc!=nil
374 grader_proc.report_active if grader_proc!=nil
375
375
376 ARGV.each do |sub_id|
376 ARGV.each do |sub_id|
377 puts "Grading #{sub_id}"
377 puts "Grading #{sub_id}"
378 begin
378 begin
379 submission = Submission.find(sub_id.to_i)
379 submission = Submission.find(sub_id.to_i)
380 rescue ActiveRecord::RecordNotFound
380 rescue ActiveRecord::RecordNotFound
381 puts "Submission #{sub_id} not found"
381 puts "Submission #{sub_id} not found"
382 submission = nil
382 submission = nil
383 end
383 end
384
384
385 if submission!=nil
385 if submission!=nil
386 runner.grade_submission(submission)
386 runner.grade_submission(submission)
387 end
387 end
388 end
388 end
389 end
389 end
390
390
391 #########################################
391 #########################################
392 # main program
392 # main program
393 #########################################
393 #########################################
394
394
395 options = process_options_and_stop_file
395 options = process_options_and_stop_file
396 GRADER_ENV = options[:environment]
396 GRADER_ENV = options[:environment]
397 grader_mode = options[:mode]
397 grader_mode = options[:mode]
398 dry_run = options[:dry_run]
398 dry_run = options[:dry_run]
399
399
400 puts "environment: #{GRADER_ENV}"
400 puts "environment: #{GRADER_ENV}"
401 puts "grader mode: #{grader_mode}"
401 puts "grader mode: #{grader_mode}"
402 require File.join(File.dirname(__FILE__),'config/environment')
402 require File.join(File.dirname(__FILE__),'config/environment')
403
403
404 # add grader_mode to config
404 # add grader_mode to config
405 # this is needed because method log needs it. TODO: clean this up
405 # this is needed because method log needs it. TODO: clean this up
406 class << config
406 class << config
407 attr_accessor :grader_mode
407 attr_accessor :grader_mode
408 end
408 end
409 config.grader_mode = grader_mode
409 config.grader_mode = grader_mode
410
410
411 # reading rails environment
411 # reading rails environment
412 log 'Reading rails environment'
412 log 'Reading rails environment'
413
413
414 RAILS_ENV = config.rails_env
414 RAILS_ENV = config.rails_env
415 require RAILS_ROOT + '/config/environment'
415 require RAILS_ROOT + '/config/environment'
416
416
417 # register grader process
417 # register grader process
418 if config.report_grader
418 if config.report_grader
419 grader_proc = GraderProcess.register(config.grader_hostname,
419 grader_proc = GraderProcess.register(config.grader_hostname,
420 Process.pid,
420 Process.pid,
421 grader_mode)
421 grader_mode)
422 else
422 else
423 grader_proc = nil
423 grader_proc = nil
424 end
424 end
425
425
426 #set loggin environment
426 #set loggin environment
427 ENV['GRADER_LOGGING'] = log_file_name
427 ENV['GRADER_LOGGING'] = log_file_name
428 if options[:err_log]
428 if options[:err_log]
429 err_file_name = log_file_name + '.err'
429 err_file_name = log_file_name + '.err'
430 $stderr.reopen(err_file_name,"a")
430 $stderr.reopen(err_file_name,"a")
431 log "STDERR log to file [#{err_file_name}]"
431 log "STDERR log to file [#{err_file_name}]"
432 - warn "start logging for grader PID #{Process.id} on #{Time.now.in_time_zone}"
432 + warn "start logging for grader PID #{Process.pid} on #{Time.now.in_time_zone}"
433 end
433 end
434
434
435
435
436 # register exit handler to report inactive, and terminated
436 # register exit handler to report inactive, and terminated
437 at_exit do
437 at_exit do
438 if grader_proc!=nil
438 if grader_proc!=nil
439 grader_proc.report_inactive
439 grader_proc.report_inactive
440 grader_proc.terminate
440 grader_proc.terminate
441 end
441 end
442 end
442 end
443
443
444 #
444 #
445 # MAIN LOOP
445 # MAIN LOOP
446 #
446 #
447
447
448 case grader_mode
448 case grader_mode
449 when "queue"
449 when "queue"
450 grader_queue_loop(grader_proc, options)
450 grader_queue_loop(grader_proc, options)
451
451
452 when "test_request"
452 when "test_request"
453 grader_test_request_loop(grader_proc, options)
453 grader_test_request_loop(grader_proc, options)
454
454
455 when "prob"
455 when "prob"
456 grader_grade_problems(grader_proc, options)
456 grader_grade_problems(grader_proc, options)
457
457
458 when "contest"
458 when "contest"
459 grader_grade_contests(grader_proc, options)
459 grader_grade_contests(grader_proc, options)
460
460
461 when "sub"
461 when "sub"
462 grader_grade_submissions(grader_proc, options)
462 grader_grade_submissions(grader_proc, options)
463
463
464 when "autonew"
464 when "autonew"
465 grader_autonew_loop(grader_proc, options)
465 grader_autonew_loop(grader_proc, options)
466
466
467 else
467 else
468 display_manual
468 display_manual
469 exit(0)
469 exit(0)
470 end
470 end
471
471
You need to be logged in to leave comments. Login now