# HG changeset patch # User jittat # Date 2008-04-03 20:49:43 # Node ID d4e37450ddbccccbaf94ee67999fc531ea0381bc # Parent fdbf2dc47aa1669f30997aadf038b27145bfc0df [grader] extracted test_request info into new stat columns git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@163 6386c4cd-e34a-4fa8-8920-d93eb39b512e diff --git a/lib/test_request_helper.rb b/lib/test_request_helper.rb --- a/lib/test_request_helper.rb +++ b/lib/test_request_helper.rb @@ -104,7 +104,7 @@ end def report_error(test_request, msg) - save_result(test_request, {:running_stat => "#{msg}"}) + save_result(test_request, {:running_stat => {:msg => "#{msg}"}}) end protected @@ -129,7 +129,7 @@ :cmp_msg => cmp_msg} else return { - :running_stat => "", + :running_stat => nil, :comment => "Compilation error", :cmp_msg => cmp_msg} end @@ -138,18 +138,27 @@ def format_running_stat(results) running_time_line = results[-1] + # extract exit status line run_stat = "" if !(/[Cc]orrect/.match(results[0])) run_stat = results[0].chomp + else + run_stat = 'Program exited normally' end + # extract running time if res = /r(.*)u(.*)s/.match(running_time_line) seconds = (res[1].to_f + res[2].to_f) time_stat = "Time used: #{seconds} sec." else + seconds = nil time_stat = "Time used: n/a sec." end - return "#{run_stat}\n#{time_stat}" + return { + :msg => "#{run_stat}\n#{time_stat}", + :running_time => seconds, + :exit_status => run_stat + } end def save_result(test_request,result) @@ -160,7 +169,14 @@ test_request.graded_at = Time.now test_request.compiler_message = (result[:cmp_msg] or '') test_request.grader_comment = (result[:comment] or '') - test_request.running_stat = (result[:running_stat] or '') + if result[:running_stat]!=nil + test_request.running_stat = (result[:running_stat][:msg] or '') + test_request.running_time = (result[:running_stat][:running_time] or nil) + test_request.exit_status = (result[:running_stat][:exit_status]) + test_request.memory_usage = nil # should be added later + else + test_request.running_stat = '' + end test_request.save end diff --git a/test/data/test2_1-5sec.c b/test/data/test2_1-5sec.c --- a/test/data/test2_1-5sec.c +++ b/test/data/test2_1-5sec.c @@ -1,5 +1,6 @@ #include #include +#include int main() { @@ -10,11 +11,12 @@ scanf("%d %d",&a,&b); printf("%d\n",a+b); - for(a=0; a<2; a++) { - while(c<1550000000) { - c++; - b+=c; - } + sleep(1); + + c = 0; + while(c<1000000000) { + c++; + b+=c; } exit(0); } diff --git a/test/engine_spec.rb b/test/engine_spec.rb --- a/test/engine_spec.rb +++ b/test/engine_spec.rb @@ -172,6 +172,9 @@ :compiler_message= => '', :grader_comment= => '', :running_stat= => /template not found/, + :running_time= => nil, + :exit_status= => nil, + :memory_usage= => nil, :save => nil}) end @@ -189,6 +192,9 @@ :output_file_name= => lambda { |fname| File.exists?(fname).should be_true }, + :running_time= => nil, + :exit_status= => nil, + :memory_usage= => nil, :save => nil}) end @@ -204,6 +210,9 @@ :grader_comment= => '', :running_stat= => nil, :output_file_name= => nil, + :running_time= => nil, + :exit_status= => nil, + :memory_usage= => nil, :save => nil}) File.exists?(@config.user_result_dir + "/test_request/test_normal/test_cases/1/input-1.txt").should be_false end @@ -236,6 +245,9 @@ :output_file_name= => lambda { |fname| File.exists?(fname).should be_true }, + :running_time= => nil, + :exit_status= => /10/, + :memory_usage= => nil, :save => nil}) end