pbs_job 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|