Description:
[grader] change test_request_helper so that it copies additional submitted file git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@231 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

r55:7137557e8134 - - 2 files changed: 14 inserted, 1 deleted

@@ -11,24 +11,25
11 11 @grader_process = grader_process
12 12 end
13 13
14 14 def grade_oldest_task
15 15 task = Task.get_inqueue_and_change_status(Task::STATUS_GRADING)
16 16 if task!=nil
17 17 @grader_process.report_active(task) if @grader_process!=nil
18 18
19 19 submission = Submission.find(task.submission_id)
20 20 @engine.grade(submission)
21 21 task.status_complete!
22 22 end
23 + # @grader_process.report_inactive if @grader_process!=nil
23 24 return task
24 25 end
25 26
26 27 def grade_problem(problem)
27 28 users = User.find(:all)
28 29 users.each do |u|
29 30 puts "user: #{u.login}"
30 31 last_sub = Submission.find(:first,
31 32 :conditions => "user_id = #{u.id} and " +
32 33 "problem_id = #{problem.id}",
33 34 :order => 'submitted_at DESC')
34 35 if last_sub!=nil
@@ -36,19 +37,21
36 37 end
37 38 end
38 39 end
39 40
40 41 def grade_oldest_test_request
41 42 test_request = TestRequest.get_inqueue_and_change_status(Task::STATUS_GRADING)
42 43 if test_request!=nil
43 44 @grader_process.report_active(test_request) if @grader_process!=nil
44 45
45 46 @engine.grade(test_request)
46 47 test_request.status_complete!
47 48 end
49 +
50 + # @grader_process.report_inactive if @grader_process!=nil
48 51 return test_request
49 52 end
50 53
51 54 end
52 55
53 56 end
54 57
@@ -12,24 +12,33
12 12 # all config files, and copy user's input into the testcase
13 13 # directory. First, it finds the template from problem template
14 14 # directory; if it can't find a template, it'll use the template
15 15 # from default template.
16 16 class TestRequestRoomMaker
17 17 def initialize
18 18 @config = Grader::Configuration.get_instance
19 19 end
20 20
21 21 def produce_grading_room(test_request)
22 22 grading_room = grading_room_dir(test_request)
23 23 FileUtils.mkdir_p(grading_room)
24 +
25 + #
26 + # Also copy additional submitted file to this directory as well.
27 + # The program would see this file only if it is copied
28 + # to the sandbox directory later. The run script should do it.
29 + #
30 + cmd = "cp #{test_request.input_file_name}.files/* #{grading_room}"
31 + system(cmd)
32 +
24 33 grading_room
25 34 end
26 35
27 36 def find_problem_home(test_request)
28 37 problem_name = test_request.problem_name
29 38
30 39 template_dir = "#{@config.test_request_problem_templates_dir}/" + problem_name
31 40
32 41 raise "Test Request: error template not found" if !File.exists?(template_dir)
33 42
34 43 problem_home = problem_home_dir(test_request)
35 44 FileUtils.mkdir_p(problem_home)
@@ -48,27 +57,28
48 57 f.close
49 58 end
50 59
51 60 def clean_up(test_request)
52 61 problem_home = problem_home_dir(test_request)
53 62 remove_data_files(problem_home)
54 63 end
55 64
56 65 protected
57 66 def grading_room_dir(test_request)
58 67 problem_name = test_request.problem_name
59 68 user = test_request.user
60 - "#{@config.user_result_dir}" +
69 + grading_room = "#{@config.user_result_dir}" +
61 70 "/#{user.login}/test_request" +
62 71 "/#{problem_name}/#{test_request.id}"
72 + grading_room
63 73 end
64 74
65 75 def problem_home_dir(test_request)
66 76 problem_name = test_request.problem_name
67 77 user = test_request.user
68 78 "#{@config.user_result_dir}" +
69 79 "/#{user.login}/test_request/#{problem_name}"
70 80 end
71 81
72 82 def copy_problem_template(template_dir,problem_home)
73 83 cmd = "cp -R #{template_dir}/* #{problem_home}"
74 84 system_and_raise_when_fail(cmd,"Test Request: cannot copy problem template")
You need to be logged in to leave comments. Login now