Description:
added --dry option to grader prob mode
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r91:5df0d71260f4 - - 2 files changed: 42 inserted, 16 deleted

@@ -60,13 +60,20
60 # main program
60 # main program
61 #########################################
61 #########################################
62
62
63 - # with --help
63 + # Reading environment and options.
64 +
65 + def process_options_and_stop_file
66 + # The list of options are:
67 + # - stop [all|process ids]
68 + # -
69 +
70 + # Process 'help' option
64 if (ARGV.length==1) and (/help/.match(ARGV[0]))
71 if (ARGV.length==1) and (/help/.match(ARGV[0]))
65 display_manual
72 display_manual
66 exit(0)
73 exit(0)
67 end
74 end
68
75
69 - # reading environment and options
76 + # Process 'stop' option.
70 if (ARGV.length >= 1) and (ARGV[0]=='stop')
77 if (ARGV.length >= 1) and (ARGV[0]=='stop')
71 if ARGV.length==1
78 if ARGV.length==1
72 puts "you should specify pid-list or 'all'"
79 puts "you should specify pid-list or 'all'"
@@ -84,22 +91,43
84 exit(0)
91 exit(0)
85 end
92 end
86
93
94 + # Check stop file.
87 if check_stopfile
95 if check_stopfile
88 puts "Stop file exists. Terminated."
96 puts "Stop file exists. Terminated."
89 clear_stopfile
97 clear_stopfile
90 exit(0)
98 exit(0)
91 end
99 end
92
100
93 - grader_mode = 'queue'
101 + #default options
102 + options = {
103 + :mode => 'queue',
104 + :environment => 'exam',
105 + :dry_run => false,
106 + }
107 +
108 + # Process mode and environment option
109 + if ARGV.length >= 1
110 + options[:environment] = ARGV.shift
94 if ARGV.length >= 1
111 if ARGV.length >=1
95 - GRADER_ENV = ARGV[0]
112 + options[:mode] = ARGV.shift
96 - if ARGV.length >=2
113 + end
97 - grader_mode = ARGV[1]
114 + end
115 +
116 + options[:dry_run] = (ARGV.delete('--dry') != nil)
117 + if options[:dry_run] and (not options[:mode] == 'prob')
118 + puts "Dry run currently works for 'prob' mode."
119 + exit(0)
98 end
120 end
99 - else
121 +
100 - GRADER_ENV = 'exam'
122 + return options
101 end
123 end
102
124
125 + # ======= Main ========
126 + options = process_options_and_stop_file
127 + GRADER_ENV = options[:environment]
128 + grader_mode = options[:mode]
129 + dry_run = options[:dry_run]
130 +
103 puts "environment: #{GRADER_ENV}"
131 puts "environment: #{GRADER_ENV}"
104 require File.join(File.dirname(__FILE__),'config/environment')
132 require File.join(File.dirname(__FILE__),'config/environment')
105
133
@@ -170,14 +198,11
170 end
198 end
171
199
172 when "prob"
200 when "prob"
173 - engine = Grader::Engine.new
201 + engine = Grader::Engine.new(nil, Grader::SubmissionReporter.new(dry_run))
174 runner = Grader::Runner.new(engine, grader_proc)
202 runner = Grader::Runner.new(engine, grader_proc)
175
203
176 grader_proc.report_active if grader_proc!=nil
204 grader_proc.report_active if grader_proc!=nil
177
205
178 - ARGV.shift
179 - ARGV.shift
180 -
181 ARGV.each do |prob_name|
206 ARGV.each do |prob_name|
182 prob = Problem.find_by_name(prob_name)
207 prob = Problem.find_by_name(prob_name)
183 if prob==nil
208 if prob==nil
@@ -193,9 +218,6
193
218
194 grader_proc.report_active if grader_proc!=nil
219 grader_proc.report_active if grader_proc!=nil
195
220
196 - ARGV.shift
197 - ARGV.shift
198 -
199 ARGV.each do |sub_id|
221 ARGV.each do |sub_id|
200 puts "Grading #{sub_id}"
222 puts "Grading #{sub_id}"
201 begin
223 begin
@@ -32,8 +32,9
32 end
32 end
33
33
34 class SubmissionReporter
34 class SubmissionReporter
35 - def initialize
35 + def initialize(dry_run=false)
36 @config = Grader::Configuration.get_instance
36 @config = Grader::Configuration.get_instance
37 + @dry_run = dry_run
37 end
38 end
38
39
39 def report(sub,test_result_dir)
40 def report(sub,test_result_dir)
@@ -115,8 +116,11
115 submission.grader_comment = comment
116 submission.grader_comment = comment
116 end
117 end
117 submission.compiler_message = result[:cmp_msg] or ''
118 submission.compiler_message = result[:cmp_msg] or ''
119 +
120 + if not @dry_run
118 submission.save
121 submission.save
119 end
122 end
123 + end
120
124
121 end
125 end
122
126
You need to be logged in to leave comments. Login now