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

r2:f854d6ed3319 - - 3 files changed: 3 inserted, 3 deleted

@@ -1,6 +1,6
1
1
2 # Rails app directory
2 # Rails app directory
3 RAILS_APP_DIR = "/home/jittat/web_grader"
3 RAILS_APP_DIR = "/home/jittat/web_grader"
4
4
5 # load the required environment file
5 # load the required environment file
6 - require "env_#{GRADER_ENV}.rb"
6 + require File.dirname(__FILE__) + "/env_#{GRADER_ENV}.rb"
@@ -41,69 +41,69
41 :cmp_msg => cmp_msg}
41 :cmp_msg => cmp_msg}
42 else
42 else
43 return {:points => 0,
43 return {:points => 0,
44 :comment => 'compile error',
44 :comment => 'compile error',
45 :cmp_msg => cmp_msg}
45 :cmp_msg => cmp_msg}
46 end
46 end
47 end
47 end
48
48
49 def save_result(submission,result)
49 def save_result(submission,result)
50 submission.graded_at = Time.now
50 submission.graded_at = Time.now
51 submission.points = result[:points]
51 submission.points = result[:points]
52 submission.grader_comment = report_comment(result[:comment])
52 submission.grader_comment = report_comment(result[:comment])
53 submission.compiler_message = result[:cmp_msg]
53 submission.compiler_message = result[:cmp_msg]
54 submission.save
54 submission.save
55 end
55 end
56
56
57 def grade(submission_id)
57 def grade(submission_id)
58 sub = Submission.find(submission_id)
58 sub = Submission.find(submission_id)
59 user = sub.user
59 user = sub.user
60 problem = sub.problem
60 problem = sub.problem
61
61
62 language = sub.language.name
62 language = sub.language.name
63 lang_ext = sub.language.ext
63 lang_ext = sub.language.ext
64 # FIX THIS
64 # FIX THIS
65 talk 'some hack on language'
65 talk 'some hack on language'
66 if language == 'cpp'
66 if language == 'cpp'
67 language = 'c++'
67 language = 'c++'
68 end
68 end
69
69
70 user_dir = "#{USER_RESULT_DIR}/#{user.login}"
70 user_dir = "#{USER_RESULT_DIR}/#{user.login}"
71 Dir.mkdir(user_dir) if !FileTest.exist?(user_dir)
71 Dir.mkdir(user_dir) if !FileTest.exist?(user_dir)
72
72
73 problem_out_dir = "#{user_dir}/#{problem.name}"
73 problem_out_dir = "#{user_dir}/#{problem.name}"
74 Dir.mkdir(problem_out_dir) if !FileTest.exist?(problem_out_dir)
74 Dir.mkdir(problem_out_dir) if !FileTest.exist?(problem_out_dir)
75
75
76 problem_home = "#{PROBLEMS_DIR}/#{problem.name}"
76 problem_home = "#{PROBLEMS_DIR}/#{problem.name}"
77 source_name = "#{problem.name}.#{lang_ext}"
77 source_name = "#{problem.name}.#{lang_ext}"
78
78
79 save_source(sub,problem_out_dir,source_name)
79 save_source(sub,problem_out_dir,source_name)
80 call_judge(problem_home,language,problem_out_dir,source_name)
80 call_judge(problem_home,language,problem_out_dir,source_name)
81 save_result(sub,read_result("#{problem_out_dir}/test-result"))
81 save_result(sub,read_result("#{problem_out_dir}/test-result"))
82 end
82 end
83
83
84 # reading environment
84 # reading environment
85 GRADER_ENV = 'exam'
85 GRADER_ENV = 'exam'
86 if ARGV.length > 1
86 if ARGV.length > 1
87 GRADER_ENV = ARGV[1]
87 GRADER_ENV = ARGV[1]
88 end
88 end
89 - require "environment.rb"
89 + require File.dirname(__FILE__) + "/environment.rb"
90
90
91 #main program
91 #main program
92
92
93 talk 'Reading rails environment'
93 talk 'Reading rails environment'
94
94
95 RAILS_ENV = 'development'
95 RAILS_ENV = 'development'
96 require RAILS_APP_DIR + '/config/environment'
96 require RAILS_APP_DIR + '/config/environment'
97
97
98 current_dir = `pwd`
98 current_dir = `pwd`
99
99
100 talk 'Grader queue'
100 talk 'Grader queue'
101 task = Task.find(:first, :order => 'created_at')
101 task = Task.find(:first, :order => 'created_at')
102 if task!=nil
102 if task!=nil
103 grade(task.submission_id)
103 grade(task.submission_id)
104 task.destroy
104 task.destroy
105 else
105 else
106 puts "No job"
106 puts "No job"
107 end
107 end
108
108
109
109
@@ -1,86 +1,86
1 #!/usr/bin/ruby
1 #!/usr/bin/ruby
2
2
3 # import_problem:
3 # import_problem:
4 # * creates a directory for a problem in the current directory,
4 # * creates a directory for a problem in the current directory,
5 # * copy standard scripts
5 # * copy standard scripts
6 # * copy testdata in the old format and create standard testcase config file
6 # * copy testdata in the old format and create standard testcase config file
7
7
8 require 'erb'
8 require 'erb'
9
9
10 def input_filename(dir,i)
10 def input_filename(dir,i)
11 "#{dir}/input-#{i}.txt"
11 "#{dir}/input-#{i}.txt"
12 end
12 end
13
13
14 def answer_filename(dir,i)
14 def answer_filename(dir,i)
15 "#{dir}/answer-#{i}.txt"
15 "#{dir}/answer-#{i}.txt"
16 end
16 end
17
17
18 def copy_testcase(importing_test_dir,dir,i)
18 def copy_testcase(importing_test_dir,dir,i)
19 system("cp #{importing_test_dir}/#{i}.in #{input_filename(dir,i)}")
19 system("cp #{importing_test_dir}/#{i}.in #{input_filename(dir,i)}")
20 system("cp #{importing_test_dir}/#{i}.sol #{answer_filename(dir,i)}")
20 system("cp #{importing_test_dir}/#{i}.sol #{answer_filename(dir,i)}")
21 end
21 end
22
22
23 def process_options(options)
23 def process_options(options)
24 i = 3
24 i = 3
25 while i<ARGV.length
25 while i<ARGV.length
26 if ARGV[i]=='-t'
26 if ARGV[i]=='-t'
27 options[:time_limit] = ARGV[i+1].to_i if ARGV.length>i+1
27 options[:time_limit] = ARGV[i+1].to_i if ARGV.length>i+1
28 i += 1
28 i += 1
29 end
29 end
30 if ARGV[i]=='-m'
30 if ARGV[i]=='-m'
31 options[:mem_limit] = ARGV[i+1].to_i if ARGV.length>i+1
31 options[:mem_limit] = ARGV[i+1].to_i if ARGV.length>i+1
32 i += 1
32 i += 1
33 end
33 end
34 i += 1
34 i += 1
35 end
35 end
36 end
36 end
37
37
38 - GRADER_DIR = "/home/jittat/grader/grader_ng"
38 + GRADER_DIR = File.dirname(__FILE__)
39
39
40 # print usage
40 # print usage
41 if ARGV.length < 3
41 if ARGV.length < 3
42 puts "using: import_task problem importing_testcase_dir number_of_testcase [options]"
42 puts "using: import_task problem importing_testcase_dir number_of_testcase [options]"
43 exit(127)
43 exit(127)
44 end
44 end
45
45
46 # processing arguments
46 # processing arguments
47 problem = ARGV[0]
47 problem = ARGV[0]
48 testcase_dir = ARGV[1]
48 testcase_dir = ARGV[1]
49 num_testcases = ARGV[2].to_i
49 num_testcases = ARGV[2].to_i
50
50
51 options = {:time_limit => 1, :mem_limit => 16}
51 options = {:time_limit => 1, :mem_limit => 16}
52 process_options(options)
52 process_options(options)
53
53
54 # start working
54 # start working
55 puts "creating directories"
55 puts "creating directories"
56
56
57 system("mkdir #{problem}")
57 system("mkdir #{problem}")
58 system("mkdir #{problem}/script")
58 system("mkdir #{problem}/script")
59 system("mkdir #{problem}/test_cases")
59 system("mkdir #{problem}/test_cases")
60 system("cp #{GRADER_DIR}/std-script/* #{problem}/script")
60 system("cp #{GRADER_DIR}/std-script/* #{problem}/script")
61
61
62 puts "copying testcases"
62 puts "copying testcases"
63
63
64 1.upto(num_testcases) do |i|
64 1.upto(num_testcases) do |i|
65 system("mkdir #{problem}/test_cases/#{i}")
65 system("mkdir #{problem}/test_cases/#{i}")
66 copy_testcase("#{testcase_dir}","#{problem}/test_cases/#{i}",i)
66 copy_testcase("#{testcase_dir}","#{problem}/test_cases/#{i}",i)
67 end
67 end
68
68
69
69
70 # generating all_tests.cfg
70 # generating all_tests.cfg
71 puts "generating testcase config file"
71 puts "generating testcase config file"
72
72
73 template = %q{
73 template = %q{
74 problem do
74 problem do
75 num_tests <%= num_testcases %>
75 num_tests <%= num_testcases %>
76 full_score <%= num_testcases*10 %>
76 full_score <%= num_testcases*10 %>
77 time_limit_each <%= options[:time_limit] %>
77 time_limit_each <%= options[:time_limit] %>
78 mem_limit_each <%= options[:mem_limit] %>
78 mem_limit_each <%= options[:mem_limit] %>
79 score_each 10
79 score_each 10
80 end
80 end
81 }
81 }
82
82
83 all_test_cfg = ERB.new(template)
83 all_test_cfg = ERB.new(template)
84
84
85 cfg_file = File.open("#{problem}/test_cases/all_test.cfg","w")
85 cfg_file = File.open("#{problem}/test_cases/all_test.cfg","w")
86 cfg_file.puts all_test_cfg.result
86 cfg_file.puts all_test_cfg.result
You need to be logged in to leave comments. Login now