Description:
added termination reporting to grader (using at_exit) git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@377 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

r70:347e4eeef742 - - 1 file changed: 8 inserted, 3 deleted

@@ -107,48 +107,56
107 # this is needed because method log needs it. TODO: clean this up
107 # this is needed because method log needs it. TODO: clean this up
108 class << config
108 class << config
109 attr_accessor :grader_mode
109 attr_accessor :grader_mode
110 end
110 end
111 config.grader_mode = grader_mode
111 config.grader_mode = grader_mode
112
112
113 # reading rails environment
113 # reading rails environment
114 log 'Reading rails environment'
114 log 'Reading rails environment'
115
115
116 RAILS_ENV = config.rails_env
116 RAILS_ENV = config.rails_env
117 require RAILS_ROOT + '/config/environment'
117 require RAILS_ROOT + '/config/environment'
118
118
119 # register grader process
119 # register grader process
120 if config.report_grader
120 if config.report_grader
121 grader_proc = GraderProcess.register(config.grader_hostname,
121 grader_proc = GraderProcess.register(config.grader_hostname,
122 Process.pid,
122 Process.pid,
123 grader_mode)
123 grader_mode)
124 else
124 else
125 grader_proc = nil
125 grader_proc = nil
126 end
126 end
127
127
128 #set loggin environment
128 #set loggin environment
129 ENV['GRADER_LOGGING'] = log_file_name
129 ENV['GRADER_LOGGING'] = log_file_name
130
130
131 + # register exit handler to report inactive, and terminated
132 + at_exit do
133 + if grader_proc!=nil
134 + grader_proc.report_inactive
135 + grader_proc.terminate
136 + end
137 + end
138 +
131 #
139 #
132 # MAIN LOOP
140 # MAIN LOOP
133 #
141 #
134
142
135 case grader_mode
143 case grader_mode
136 when "queue", "test_request"
144 when "queue", "test_request"
137 log "Grader: #{grader_mode}"
145 log "Grader: #{grader_mode}"
138 if grader_mode=="queue"
146 if grader_mode=="queue"
139 engine = Grader::Engine.new
147 engine = Grader::Engine.new
140 else
148 else
141 engine = Grader::Engine.new(Grader::TestRequestRoomMaker.new,
149 engine = Grader::Engine.new(Grader::TestRequestRoomMaker.new,
142 Grader::TestRequestReporter.new)
150 Grader::TestRequestReporter.new)
143 end
151 end
144
152
145 runner = Grader::Runner.new(engine, grader_proc)
153 runner = Grader::Runner.new(engine, grader_proc)
146 while true
154 while true
147
155
148 if check_stopfile # created by calling grader stop
156 if check_stopfile # created by calling grader stop
149 clear_stopfile
157 clear_stopfile
150 log "stopped (with stop file)"
158 log "stopped (with stop file)"
151 break
159 break
152 end
160 end
153
161
154 if grader_mode=="queue"
162 if grader_mode=="queue"
@@ -186,27 +194,24
186 grader_proc.report_active if grader_proc!=nil
194 grader_proc.report_active if grader_proc!=nil
187
195
188 ARGV.shift
196 ARGV.shift
189 ARGV.shift
197 ARGV.shift
190
198
191 ARGV.each do |sub_id|
199 ARGV.each do |sub_id|
192 puts "Grading #{sub_id}"
200 puts "Grading #{sub_id}"
193 begin
201 begin
194 submission = Submission.find(sub_id.to_i)
202 submission = Submission.find(sub_id.to_i)
195 rescue ActiveRecord::RecordNotFound
203 rescue ActiveRecord::RecordNotFound
196 puts "Record not found"
204 puts "Record not found"
197 submission = nil
205 submission = nil
198 end
206 end
199
207
200 if submission!=nil
208 if submission!=nil
201 runner.grade_submission(submission)
209 runner.grade_submission(submission)
202 end
210 end
203 end
211 end
204
212
205 else
213 else
206 display_manual
214 display_manual
207 exit(0)
215 exit(0)
208 end
216 end
209
217
210 - # report inactive
211 - grader_proc.report_inactive if grader_proc!=nil
212 -
You need to be logged in to leave comments. Login now