Description:
git-svn-id: http://theory.cpe.ku.ac.th/grader/cli/trunk/scripts@20 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

r7:d40f897fb488 - - 3 files changed: 33 inserted, 8 deleted

@@ -21,6 +21,8
21
21
22 def call_judge(problem_home,language,problem_out_dir,fname)
22 def call_judge(problem_home,language,problem_out_dir,fname)
23 ENV['PROBLEM_HOME'] = problem_home
23 ENV['PROBLEM_HOME'] = problem_home
24 +
25 + puts problem_out_dir
24 Dir.chdir problem_out_dir
26 Dir.chdir problem_out_dir
25 cmd = "#{problem_home}/script/judge #{language} #{fname}"
27 cmd = "#{problem_home}/script/judge #{language} #{fname}"
26 # puts "CMD: #{cmd}"
28 # puts "CMD: #{cmd}"
@@ -29,13 +31,21
29
31
30 def read_result(test_result_dir)
32 def read_result(test_result_dir)
31 cmp_msg_fname = "#{test_result_dir}/compiler_message"
33 cmp_msg_fname = "#{test_result_dir}/compiler_message"
32 - cmp_msg = File.open(cmp_msg_fname).read
34 + cmp_file = File.open(cmp_msg_fname)
35 + cmp_msg = cmp_file.read
36 + cmp_file.close
33
37
34 result_fname = "#{test_result_dir}/result"
38 result_fname = "#{test_result_dir}/result"
35 comment_fname = "#{test_result_dir}/comment"
39 comment_fname = "#{test_result_dir}/comment"
36 if FileTest.exist?(result_fname)
40 if FileTest.exist?(result_fname)
37 - result = File.open(result_fname).readline.to_i
41 + result_file = File.open(result_fname)
38 - comment = File.open(comment_fname).readline.chomp
42 + result = result_file.readline.to_i
43 + result_file.close
44 +
45 + comment_file = File.open(comment_fname)
46 + comment = comment_file.readline.chomp
47 + comment_file.close
48 +
39 return {:points => result,
49 return {:points => result,
40 :comment => comment,
50 :comment => comment,
41 :cmp_msg => cmp_msg}
51 :cmp_msg => cmp_msg}
@@ -47,14 +57,21
47 end
57 end
48
58
49 def save_result(submission,result)
59 def save_result(submission,result)
60 + problem = Problem.find(submission.problem_id)
50 submission.graded_at = Time.now
61 submission.graded_at = Time.now
51 submission.points = result[:points]
62 submission.points = result[:points]
52 - submission.grader_comment = report_comment(result[:comment])
63 + if submission.points == problem.full_score
64 + submission.grader_comment = 'PASSED: ' + report_comment(result[:comment])
65 + else
66 + submission.grader_comment = 'FAILED: ' + report_comment(result[:comment])
67 + end
53 submission.compiler_message = result[:cmp_msg]
68 submission.compiler_message = result[:cmp_msg]
54 submission.save
69 submission.save
55 end
70 end
56
71
57 def grade(submission_id)
72 def grade(submission_id)
73 + current_dir = `pwd`.chomp
74 +
58 sub = Submission.find(submission_id)
75 sub = Submission.find(submission_id)
59 user = sub.user
76 user = sub.user
60 problem = sub.problem
77 problem = sub.problem
@@ -79,10 +96,12
79 save_source(sub,problem_out_dir,source_name)
96 save_source(sub,problem_out_dir,source_name)
80 call_judge(problem_home,language,problem_out_dir,source_name)
97 call_judge(problem_home,language,problem_out_dir,source_name)
81 save_result(sub,read_result("#{problem_out_dir}/test-result"))
98 save_result(sub,read_result("#{problem_out_dir}/test-result"))
99 +
100 + Dir.chdir(current_dir)
82 end
101 end
83
102
84 def stop_grader
103 def stop_grader
85 - File.open(File.dirname(__FILE__) + '/stop','w')
104 + File.open(File.dirname(__FILE__) + '/stop','w').close
86 end
105 end
87
106
88 def check_stopfile
107 def check_stopfile
@@ -121,8 +140,6
121 RAILS_ENV = 'development'
140 RAILS_ENV = 'development'
122 require RAILS_APP_DIR + '/config/environment'
141 require RAILS_APP_DIR + '/config/environment'
123
142
124 - current_dir = `pwd`
125 -
126 talk 'Grader queue'
143 talk 'Grader queue'
127 while true
144 while true
128 if check_stopfile # created by calling grader stop
145 if check_stopfile # created by calling grader stop
@@ -38,7 +38,11
38 result_file = File.new(result_file_name, "r")
38 result_file = File.new(result_file_name, "r")
39 result_file_lines = result_file.readlines
39 result_file_lines = result_file.readlines
40 run_score = run_score + result_file_lines[1].to_i
40 run_score = run_score + result_file_lines[1].to_i
41 - run_comment += char_comment(result_file_lines[0])
41 + # run_comment += char_comment(result_file_lines[0])
42 + result_file_lines.each do |l|
43 + run_comment += l
44 + end
45 + run_comment += "----\n"
42 result_file.close
46 result_file.close
43 end
47 end
44
48
@@ -72,6 +72,10
72 `rm output.txt`
72 `rm output.txt`
73
73
74 comment_file.write comment
74 comment_file.write comment
75 + comment_file.write "--run-result--\n"
76 + run_result.each do |l|
77 + comment_file.write l
78 + end
75 comment_file.close
79 comment_file.close
76
80
77 puts
81 puts
You need to be logged in to leave comments. Login now