Description:
translates test_request input/output file paths for remote grading test_request
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r117:cc3e1102f8c6 - - 5 files changed: 36 inserted, 3 deleted

@@ -16,5 +16,8
16 config.test_request_output_base_dir = RAILS_ROOT + "/data/test_request/output"
16 config.test_request_output_base_dir = RAILS_ROOT + "/data/test_request/output"
17 config.test_request_problem_templates_dir = config.problems_dir + "/test_request"
17 config.test_request_problem_templates_dir = config.problems_dir + "/test_request"
18
18
19 + # change this if you want the path on the output to be translated
20 + config.test_request_org_output_base_dir = config.test_request_output_base_dir
21 +
19 config.comment_report_style = :short
22 config.comment_report_style = :short
20 end
23 end
@@ -14,6 +14,9
14 config.test_request_input_base_dir = RAILS_ROOT + "/data/test_request/input"
14 config.test_request_input_base_dir = RAILS_ROOT + "/data/test_request/input"
15 config.test_request_output_base_dir = RAILS_ROOT + "/data/test_request/output"
15 config.test_request_output_base_dir = RAILS_ROOT + "/data/test_request/output"
16 config.test_request_problem_templates_dir = config.problems_dir + "/test_request"
16 config.test_request_problem_templates_dir = config.problems_dir + "/test_request"
17 +
18 + # change this if you want the path on the output to be translated
19 + config.test_request_org_output_base_dir = config.test_request_output_base_dir
17
20
18 config.comment_report_style = :full
21 config.comment_report_style = :full
19 end
22 end
@@ -17,6 +17,9
17 config.test_request_output_base_dir = GRADER_ROOT + "/test/sandbox/test_request/output"
17 config.test_request_output_base_dir = GRADER_ROOT + "/test/sandbox/test_request/output"
18 config.test_request_problem_templates_dir = GRADER_ROOT + "/test/data/test_request/problems"
18 config.test_request_problem_templates_dir = GRADER_ROOT + "/test/data/test_request/problems"
19
19
20 + # change this if you want the path on the output to be translated
21 + config.test_request_org_output_base_dir = config.test_request_output_base_dir
22 +
20 #
23 #
21 # These options are for testing
24 # These options are for testing
22 #
25 #
@@ -33,6 +33,10
33 attr_accessor :test_request_output_base_dir
33 attr_accessor :test_request_output_base_dir
34 attr_accessor :test_request_problem_templates_dir
34 attr_accessor :test_request_problem_templates_dir
35
35
36 + # this is for linking output from test request
37 + # TODO: find a cleaner way to do this.
38 + attr_accessor :test_request_org_output_base_dir
39 +
36 # Comment received from the grading script will be filtered
40 # Comment received from the grading script will be filtered
37 # through Configuration#report_comment. How this method behave
41 # through Configuration#report_comment. How this method behave
38 # depends on this option; right now only two formats, :short and
42 # depends on this option; right now only two formats, :short and
@@ -5,6 +5,12
5
5
6 module Grader
6 module Grader
7
7
8 + def self.translate_filepath(filename, marker, new_base_path)
9 + p = filename.index(marker)
10 + end_path = filename[(p+marker.length)..-1]
11 + return new_base_path + end_path
12 + end
13 +
8 def self.link_or_copy(src, des)
14 def self.link_or_copy(src, des)
9 begin
15 begin
10 FileUtils.ln_s(src, des)
16 FileUtils.ln_s(src, des)
@@ -104,8 +110,15
104 }
110 }
105 end
111 end
106
112
113 + def translate_input_filename(filename)
114 + return Grader::translate_filepath(filename,
115 + 'input',
116 + @config.test_request_input_base_dir)
117 + end
118 +
107 def link_input_file(test_request, problem_home)
119 def link_input_file(test_request, problem_home)
108 - input_fname = "#{test_request.input_file_name}"
120 + input_fname = translate_input_filename(test_request.input_file_name)
121 +
109 if !File.exists?(input_fname)
122 if !File.exists?(input_fname)
110 raise "Test Request: input file not found."
123 raise "Test Request: input file not found."
111 end
124 end
@@ -214,8 +227,9
214
227
215 def save_result(test_request,result)
228 def save_result(test_request,result)
216 if result[:output_file_name]!=nil
229 if result[:output_file_name]!=nil
217 - test_request.output_file_name = link_output_file(test_request,
230 + org_filename = link_output_file(test_request,
218 - result[:output_file_name])
231 + result[:output_file_name])
232 + test_request.output_file_name = translate_output_filename(org_filename)
219 end
233 end
220 test_request.graded_at = Time.now
234 test_request.graded_at = Time.now
221 test_request.compiler_message = (result[:cmp_msg] or '')
235 test_request.compiler_message = (result[:cmp_msg] or '')
@@ -232,6 +246,12
232 end
246 end
233
247
234 protected
248 protected
249 + def translate_output_filename(filename)
250 + return Grader::translate_filepath(filename,
251 + 'output',
252 + @config.test_request_org_output_base_dir)
253 + end
254 +
235 def link_output_file(test_request, fname)
255 def link_output_file(test_request, fname)
236 target_file_name = random_output_file_name(test_request.user,
256 target_file_name = random_output_file_name(test_request.user,
237 test_request.problem)
257 test_request.problem)
You need to be logged in to leave comments. Login now