Description:
[grader] +grade submission git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@264 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r61:3dcc15f24294 - - 3 files changed: 34 inserted, 0 deleted

@@ -176,12 +176,35
176 puts "cannot find problem: #{prob_name}"
176 puts "cannot find problem: #{prob_name}"
177 else
177 else
178 runner.grade_problem(prob)
178 runner.grade_problem(prob)
179 end
179 end
180 end
180 end
181
181
182 + when "sub"
183 + engine = Grader::Engine.new
184 + runner = Grader::Runner.new(engine, grader_proc)
185 +
186 + grader_proc.report_active if grader_proc!=nil
187 +
188 + ARGV.shift
189 + ARGV.shift
190 +
191 + ARGV.each do |sub_id|
192 + puts "Grading #{sub_id}"
193 + begin
194 + submission = Submission.find(sub_id.to_i)
195 + rescue ActiveRecord::RecordNotFound
196 + puts "Record not found"
197 + submission = nil
198 + end
199 +
200 + if submission!=nil
201 + runner.grade_submission(submission)
202 + end
203 + end
204 +
182 else
205 else
183 display_manual
206 display_manual
184 exit(0)
207 exit(0)
185 end
208 end
186
209
187 # report inactive
210 # report inactive
@@ -35,12 +35,17
35 if last_sub!=nil
35 if last_sub!=nil
36 @engine.grade(last_sub)
36 @engine.grade(last_sub)
37 end
37 end
38 end
38 end
39 end
39 end
40
40
41 + def grade_submission(submission)
42 + puts "Submission: #{submission.id} by #{submission.user.full_name}"
43 + @engine.grade(submission)
44 + end
45 +
41 def grade_oldest_test_request
46 def grade_oldest_test_request
42 test_request = TestRequest.get_inqueue_and_change_status(Task::STATUS_GRADING)
47 test_request = TestRequest.get_inqueue_and_change_status(Task::STATUS_GRADING)
43 if test_request!=nil
48 if test_request!=nil
44 @grader_process.report_active(test_request) if @grader_process!=nil
49 @grader_process.report_active(test_request) if @grader_process!=nil
45
50
46 @engine.grade(test_request)
51 @engine.grade(test_request)
@@ -100,12 +100,16
100 log "The problem specification is not well formed."
100 log "The problem specification is not well formed."
101 exit(127)
101 exit(127)
102 end
102 end
103
103
104 # Doing the testing.
104 # Doing the testing.
105 (1..(problem.num_tests)).each do |test_num|
105 (1..(problem.num_tests)).each do |test_num|
106 +
107 + $stdout.print "[#{test_num}]"
108 + $stdout.flush
109 +
106 log "Test number: #{test_num}"
110 log "Test number: #{test_num}"
107 execute("cp #{test_result_dir}/a.out #{sandbox_dir}", "Cannot copy the compiled program into #{sandbox_dir}")
111 execute("cp #{test_result_dir}/a.out #{sandbox_dir}", "Cannot copy the compiled program into #{sandbox_dir}")
108 begin
112 begin
109 execute("#{problem_home}/script/run #{language} #{test_num}", "Error occured during execution of the run script")
113 execute("#{problem_home}/script/run #{language} #{test_num}", "Error occured during execution of the run script")
110 rescue
114 rescue
111 # do nothing
115 # do nothing
@@ -114,12 +118,14
114 execute("mv #{sandbox_dir}/result #{test_result_dir}/#{test_num}", "Cannot copy the result file into #{test_result_dir}/#{test_num}")
118 execute("mv #{sandbox_dir}/result #{test_result_dir}/#{test_num}", "Cannot copy the result file into #{test_result_dir}/#{test_num}")
115 execute("mv #{sandbox_dir}/comment #{test_result_dir}/#{test_num}", "Cannot copy the comment file into #{test_result_dir}/#{test_num}")
119 execute("mv #{sandbox_dir}/comment #{test_result_dir}/#{test_num}", "Cannot copy the comment file into #{test_result_dir}/#{test_num}")
116 execute("mv #{sandbox_dir}/output.txt #{test_result_dir}/#{test_num}", "Cannot copy the output file into #{test_result_dir}/#{test_num}")
120 execute("mv #{sandbox_dir}/output.txt #{test_result_dir}/#{test_num}", "Cannot copy the output file into #{test_result_dir}/#{test_num}")
117 execute("rm -Rf #{sandbox_dir}/*", "Cannot clear #{sandbox_dir}")
121 execute("rm -Rf #{sandbox_dir}/*", "Cannot clear #{sandbox_dir}")
118 end
122 end
119
123
124 + $stdout.print "[done]\n"
125 +
120 # Grade
126 # Grade
121 log
127 log
122 log "Grading..."
128 log "Grading..."
123 begin
129 begin
124 Dir.chdir test_result_dir
130 Dir.chdir test_result_dir
125 rescue
131 rescue
You need to be logged in to leave comments. Login now