pbs_job 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/pbs_job +27 -7
- data/lib/pbs_job/version.rb +2 -2
- data/spec/pbs_job_spec.rb +36 -36
- data/templates/job.pbs.tt +2 -2
- data/templates/job.qsub.tt +1 -1
- data/templates/task.tt +0 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0ed432454ec7d005367c6dbc36829f87e02bd6c
|
4
|
+
data.tar.gz: 30d243a63104ea3e728855e75f5c28d853cdbee9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 423426faac483f807ff4bad364efbdcf833d93e678b1f1e648fc6a54cfc1a3ca8ece52abdbbfd36f61840ff690cf8f3aa7d6907d1d12a5d233fdbe7cc8961e56
|
7
|
+
data.tar.gz: 01a8abd84949a154d85311ccacc91bf620693aeaec7bbb3915093bfec39ded37071266ee57315c12b12eed23fa9bc65d015cf9c9a3616a6a94884e4b0efa45bc
|
data/bin/pbs_job
CHANGED
@@ -7,6 +7,9 @@ module PbsJob
|
|
7
7
|
class New < Thor::Group
|
8
8
|
include Thor::Actions
|
9
9
|
|
10
|
+
STREAMS_DIR_NAME = 'streams'
|
11
|
+
EXECUTABLE_PERMISSIONS = 0775
|
12
|
+
|
10
13
|
argument :name, :desc => 'Name of the new job.'
|
11
14
|
argument :email_address, :desc => 'Email to which to send PBS alerts.'
|
12
15
|
|
@@ -22,10 +25,18 @@ module PbsJob
|
|
22
25
|
:script,
|
23
26
|
{
|
24
27
|
:desc => 'Type of script to make the task script',
|
25
|
-
:default => '
|
28
|
+
:default => 'bash',
|
26
29
|
:aliases => 's'
|
27
30
|
}
|
28
31
|
)
|
32
|
+
class_option(
|
33
|
+
:task_working_dir,
|
34
|
+
{
|
35
|
+
:desc => 'Working directory in which to run task',
|
36
|
+
:default => File.expand_path('~'),
|
37
|
+
:aliases => 'w'
|
38
|
+
}
|
39
|
+
)
|
29
40
|
|
30
41
|
def self.source_root
|
31
42
|
File.expand_path('../../', __FILE__)
|
@@ -36,15 +47,15 @@ module PbsJob
|
|
36
47
|
end
|
37
48
|
|
38
49
|
def qsub_script
|
39
|
-
|
50
|
+
create_script_from_template 'job.qsub'
|
40
51
|
end
|
41
52
|
|
42
53
|
def pbs_script
|
43
|
-
|
54
|
+
create_script_from_template 'job.pbs'
|
44
55
|
end
|
45
56
|
|
46
57
|
def task
|
47
|
-
|
58
|
+
create_script_from_template 'task'
|
48
59
|
end
|
49
60
|
|
50
61
|
def results
|
@@ -62,13 +73,22 @@ module PbsJob
|
|
62
73
|
|
63
74
|
private
|
64
75
|
|
76
|
+
def file_path(script_name)
|
77
|
+
File.join full_name, script_name
|
78
|
+
end
|
79
|
+
|
65
80
|
def create_file_from_template(file_name)
|
66
81
|
template(
|
67
82
|
"templates/#{file_name}.tt",
|
68
|
-
|
83
|
+
file_path(file_name)
|
69
84
|
)
|
70
85
|
end
|
71
86
|
|
87
|
+
def create_script_from_template(script_name)
|
88
|
+
create_file_from_template script_name
|
89
|
+
chmod file_path(script_name), EXECUTABLE_PERMISSIONS
|
90
|
+
end
|
91
|
+
|
72
92
|
# @returns [String] Name with date appended
|
73
93
|
def full_name
|
74
94
|
@full_name ||= -> do
|
@@ -83,11 +103,11 @@ module PbsJob
|
|
83
103
|
end
|
84
104
|
|
85
105
|
def streams_path
|
86
|
-
@streams_path ||= File.join full_name,
|
106
|
+
@streams_path ||= File.join full_name, STREAMS_DIR_NAME
|
87
107
|
end
|
88
108
|
|
89
109
|
def abs_stream_prefix
|
90
|
-
@abs_stream_prefix ||= File.join abs_job_root,
|
110
|
+
@abs_stream_prefix ||= File.join abs_job_root, STREAMS_DIR_NAME, full_name
|
91
111
|
end
|
92
112
|
end
|
93
113
|
|
data/lib/pbs_job/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module PbsJob
|
2
|
-
VERSION = "0.0.
|
1
|
+
module PbsJob
|
2
|
+
VERSION = "0.0.2"
|
3
3
|
end
|
data/spec/pbs_job_spec.rb
CHANGED
@@ -21,6 +21,17 @@ HELP
|
|
21
21
|
TASK = "#{JOB_ROOT}/task"
|
22
22
|
RESULTS = "#{JOB_ROOT}/results"
|
23
23
|
STREAMS = "#{JOB_ROOT}/streams"
|
24
|
+
SUCCESSFUL_OUTPUT = <<-OUT
|
25
|
+
\e[1m\e[32m create\e[0m #{JOB_ROOT}
|
26
|
+
\e[1m\e[32m create\e[0m #{QSUB_SCRIPT}
|
27
|
+
\e[1m\e[32m chmod\e[0m #{QSUB_SCRIPT}
|
28
|
+
\e[1m\e[32m create\e[0m #{PBS_SCRIPT}
|
29
|
+
\e[1m\e[32m chmod\e[0m #{PBS_SCRIPT}
|
30
|
+
\e[1m\e[32m create\e[0m #{TASK}
|
31
|
+
\e[1m\e[32m chmod\e[0m #{TASK}
|
32
|
+
\e[1m\e[32m create\e[0m #{RESULTS}
|
33
|
+
\e[1m\e[32m create\e[0m #{STREAMS}
|
34
|
+
OUT
|
24
35
|
|
25
36
|
it 'prints usage and options without arguments' do
|
26
37
|
pbs_job
|
@@ -39,9 +50,11 @@ Usage:
|
|
39
50
|
pbs_job new NAME EMAIL_ADDRESS [OPTIONS]
|
40
51
|
|
41
52
|
Options:
|
42
|
-
r, [--link-results=LINK_RESULTS]
|
43
|
-
s, [--script=SCRIPT]
|
44
|
-
|
53
|
+
r, [--link-results=LINK_RESULTS] # Directory to which to redirect results
|
54
|
+
s, [--script=SCRIPT] # Type of script to make the task script
|
55
|
+
# Default: bash
|
56
|
+
w, [--task-working-dir=TASK_WORKING_DIR] # Working directory in which to run task
|
57
|
+
# Default: /home/vagrant
|
45
58
|
|
46
59
|
Creates a new PBS job with the name NAME and arranges for PBS alerts to be sent to EMAIL_ADDRESS, customized by OPTIONS
|
47
60
|
GEN_HELP
|
@@ -57,18 +70,12 @@ GEN_HELP
|
|
57
70
|
it 'creates a file structure for job components' do
|
58
71
|
in_tmp_dir do
|
59
72
|
pbs_job "new #{NAME} #{EMAIL_ADDRESS}"
|
60
|
-
|
61
|
-
|
62
|
-
\e[1m\e[32m create\e[0m #{QSUB_SCRIPT}
|
63
|
-
\e[1m\e[32m create\e[0m #{PBS_SCRIPT}
|
64
|
-
\e[1m\e[32m create\e[0m #{TASK}
|
65
|
-
\e[1m\e[32m create\e[0m #{RESULTS}
|
66
|
-
\e[1m\e[32m create\e[0m #{STREAMS}
|
67
|
-
DIR
|
73
|
+
|
74
|
+
stdout.must_equal SUCCESSFUL_OUTPUT
|
68
75
|
File.directory?(JOB_ROOT).must_equal true
|
69
|
-
|
70
|
-
|
71
|
-
|
76
|
+
check_script QSUB_SCRIPT
|
77
|
+
check_script PBS_SCRIPT
|
78
|
+
check_script TASK
|
72
79
|
File.directory?(RESULTS).must_equal true
|
73
80
|
File.directory?(STREAMS).must_equal true
|
74
81
|
end
|
@@ -78,18 +85,12 @@ DIR
|
|
78
85
|
it '--script allows specification of the script type of task' do
|
79
86
|
in_tmp_dir do
|
80
87
|
pbs_job "new #{NAME} #{EMAIL_ADDRESS} --script=bash"
|
81
|
-
|
82
|
-
|
83
|
-
\e[1m\e[32m create\e[0m #{QSUB_SCRIPT}
|
84
|
-
\e[1m\e[32m create\e[0m #{PBS_SCRIPT}
|
85
|
-
\e[1m\e[32m create\e[0m #{TASK}
|
86
|
-
\e[1m\e[32m create\e[0m #{RESULTS}
|
87
|
-
\e[1m\e[32m create\e[0m #{STREAMS}
|
88
|
-
DIR
|
88
|
+
|
89
|
+
stdout.must_equal SUCCESSFUL_OUTPUT
|
89
90
|
File.directory?(JOB_ROOT).must_equal true
|
90
|
-
|
91
|
-
|
92
|
-
|
91
|
+
check_script QSUB_SCRIPT
|
92
|
+
check_script PBS_SCRIPT
|
93
|
+
check_script TASK
|
93
94
|
File.directory?(RESULTS).must_equal true
|
94
95
|
File.directory?(STREAMS).must_equal true
|
95
96
|
end
|
@@ -100,18 +101,12 @@ DIR
|
|
100
101
|
linked_results = '/scratch/results'
|
101
102
|
in_tmp_dir do
|
102
103
|
pbs_job "new #{NAME} #{EMAIL_ADDRESS} --link-results=#{linked_results}"
|
103
|
-
|
104
|
-
|
105
|
-
\e[1m\e[32m create\e[0m #{QSUB_SCRIPT}
|
106
|
-
\e[1m\e[32m create\e[0m #{PBS_SCRIPT}
|
107
|
-
\e[1m\e[32m create\e[0m #{TASK}
|
108
|
-
\e[1m\e[32m create\e[0m #{RESULTS}
|
109
|
-
\e[1m\e[32m create\e[0m #{STREAMS}
|
110
|
-
DIR
|
104
|
+
|
105
|
+
stdout.must_equal SUCCESSFUL_OUTPUT
|
111
106
|
File.directory?(JOB_ROOT).must_equal true
|
112
|
-
|
113
|
-
|
114
|
-
|
107
|
+
check_script QSUB_SCRIPT
|
108
|
+
check_script PBS_SCRIPT
|
109
|
+
check_script TASK
|
115
110
|
File.symlink?(RESULTS).must_equal true
|
116
111
|
File.readlink(RESULTS).must_equal linked_results
|
117
112
|
File.directory?(STREAMS).must_equal true
|
@@ -125,4 +120,9 @@ DIR
|
|
125
120
|
yield dir if block_given?
|
126
121
|
end
|
127
122
|
end
|
123
|
+
|
124
|
+
def check_script(script_path)
|
125
|
+
File.file?(script_path).must_equal true
|
126
|
+
File.executable?(script_path).must_equal true
|
127
|
+
end
|
128
128
|
end
|
data/templates/job.pbs.tt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
2
|
#PBS -m abe -M <%= email_address %>
|
3
|
-
cd <%=
|
4
|
-
|
3
|
+
cd <%= options[:task_working_dir] %>
|
4
|
+
"<%= abs_job_root %>/task" > "<%= abs_stream_prefix %>.out" 2> "<%= abs_stream_prefix %>.err"
|
data/templates/job.qsub.tt
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
2
|
# This script runs job.pbs with qsub. Customize as necessary
|
3
|
-
qsub job.pbs -N "<%= full_name %>" -e "<%= abs_stream_prefix %>.e" -o "<%= abs_stream_prefix %>.o"
|
3
|
+
qsub "<%= abs_job_root %>/job.pbs" -N "<%= full_name %>" -e "<%= abs_stream_prefix %>.e" -o "<%= abs_stream_prefix %>.o"
|
data/templates/task.tt
CHANGED
File without changes
|