osc-machete 1.2.2 → 2.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f5904fa772fa67f531313d32b25d6fb94f4eccc7
4
- data.tar.gz: 66f7f2bffcbce2a8f7e056d11494bcd77ec8b192
3
+ metadata.gz: fe29b9e8fa7070fd4c9bfa478b099139b3dae53e
4
+ data.tar.gz: f9f4ebb8a5e5f1c826cee99dd6222a78e4992161
5
5
  SHA512:
6
- metadata.gz: 356d323852feadf4591dc0d93a5cb9076da76b39063c4cb3fed2b987b4f102a9d33336ca0dfdff32e4b3eb69b852797a2154ca4b9a9f27b1697c157d6472ce21
7
- data.tar.gz: 15c2d2cda266fce71a985fe14f6f5d4ed28d8f006b7bf40f6e18e46ee4322682a95253711e389b0e0fdf9ecf9c985c1e98a94e880f35410da8abdb0070569365
6
+ metadata.gz: 6891917bb5a5642affd5523c63668093a4b5249b9dbc85220d23eda7950465d01872fb982766c918a29345b394a55ea7cc1179f9e383216ed10f11905af9cd87
7
+ data.tar.gz: 3a0056549f935f4ba18b4b0bbf3ec41ccb8011dc27f3ac35e272f589086c3971bbb7873c8c6a6bf6f62a96d72de8a241847db207979c5a29a6c818749ec9a886
data/CHANGELOG.md CHANGED
@@ -5,64 +5,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
- ## [1.2.2] - 2017-08-04
9
-
10
- ### Fixed
11
-
12
- - host name for Ruby Cluster changed
13
-
14
- ## [1.2.1] - 2016-12-16
15
-
16
- ### Fixed
17
-
18
- - host name for Quick Cluster changed
19
-
20
- ## [1.2.0] - 2016-09-06
21
-
22
- ### Added
23
-
24
- - TorqueHelper.default= so we can specify a different TorqueHelper
25
- - TorqueHelper#pbs to get the PBS::Batch object for the given id, script, or host.
26
- This lets us change the TorqueHelper instance used as a default with a
27
- different TorqueHelper class or instance that has a different implementation
28
- of TorqueHelper#pbs.
29
- - (OSC specific) Owens cluster support
30
- - (OSC specific) LIB and BIN for specifying torque lib locations
31
-
32
- ### Changed
33
-
34
- - Depends on latest version of pbs ruby gem 2.0
35
- - TorqueHelper.default returns the same instance every time (which is now
36
- memoized) instead of creating a new instance
37
-
38
- ### Deprecated
39
-
40
- - `OSC::Machete::User` - use `OodSupport::User` instead
41
- - `OSC::Machete::Process` - use `OodSupport::Process` instead
42
-
43
- ### Fixed
44
-
45
- - yardoc documentation for OSC::Machete::Status class methods
46
- - deprecation warnings by using File.exist? instead of File.exists?
47
-
48
- ## [1.1.4] - 2016-08-17
49
-
50
- ### Added
51
-
52
- - `Job#host` getter (which should have been there but was accidentally omitted)
53
-
54
- ## [1.1.3] - 2016-06-07
55
-
56
- ### Fixed
57
-
58
- - README and gemspec docs update for rubygems.org release
59
-
60
- ## [1.1.2] - 2016-06-07
61
-
62
- ### Fixed
63
-
64
- - Copyright in LICENSE.txt
65
-
66
8
  ## [1.1.1] - 2016-02-24
67
9
 
68
10
  ### Fixed
@@ -137,13 +79,7 @@ lib/osc/machete/torque_helper.rb _(still an internal class right now, not meant
137
79
 
138
80
  Previous release of osc-machete
139
81
 
140
- [Unreleased]: https://github.com/AweSim-OSC/osc-machete/compare/v1.2.2...master
141
- [1.2.2]: https://github.com/AweSim-OSC/osc-machete/compare/v1.2.1...v1.2.2
142
- [1.2.1]: https://github.com/AweSim-OSC/osc-machete/compare/v1.2.0...v1.2.1
143
- [1.2.0]: https://github.com/AweSim-OSC/osc-machete/compare/v1.1.4...v1.2.0
144
- [1.1.4]: https://github.com/AweSim-OSC/osc-machete/compare/v1.1.3...v1.1.4
145
- [1.1.3]: https://github.com/AweSim-OSC/osc-machete/compare/v1.1.2...v1.1.3
146
- [1.1.2]: https://github.com/AweSim-OSC/osc-machete/compare/v1.1.1...v1.1.2
82
+ [Unreleased]: https://github.com/AweSim-OSC/osc-machete/compare/v1.1.1...master
147
83
  [1.1.1]: https://github.com/AweSim-OSC/osc-machete/compare/v1.1.0...v1.1.1
148
84
  [1.1.0]: https://github.com/AweSim-OSC/osc-machete/compare/v1.0.1...v1.1.0
149
85
  [1.0.1]: https://github.com/AweSim-OSC/osc-machete/compare/v1.0.0...v1.0.1
@@ -56,7 +56,7 @@ require 'pathname'
56
56
  # @return [String, nil] path of the job script, or nil if not set
57
57
  #
58
58
  class OSC::Machete::Job
59
- attr_reader :pbsid, :script_path, :account_string, :host
59
+ attr_reader :pbsid, :script_path, :account_string
60
60
 
61
61
  class << self
62
62
  # set this to change the billable account that is used by default
@@ -205,7 +205,7 @@ class OSC::Machete::Job
205
205
  # something if the script name is munged
206
206
 
207
207
  # recursively delete the directory after killing the job
208
- Pathname.new(path).rmtree if path && rmdir && File.exist?(path)
208
+ Pathname.new(path).rmtree if path && rmdir && File.exists?(path)
209
209
  end
210
210
  end
211
211
 
@@ -1,13 +1,10 @@
1
1
  # Class that maintains the User and additional methods for the process.
2
2
  # Helper methods provided use the Process module underneath.
3
3
  #
4
- # @deprecated Please use {http://www.rubydoc.info/gems/ood_support/OodSupport/Process OodSupport::Process} instead.
5
4
  class OSC::Machete::Process
6
5
 
7
6
  def initialize
8
7
  @user = OSC::Machete::User.from_uid(Process.uid)
9
-
10
- warn "[DEPRECATION] `OSC::Machete::Process` is deprecated. Please use `OodSupport::Process` instead (see ood_support gem)."
11
8
  end
12
9
 
13
10
  # The system name of the process user
@@ -55,42 +55,27 @@ class OSC::Machete::Status
55
55
  end
56
56
 
57
57
 
58
- # NOTE: on yard documentation: to do something like what I do below,
59
- # documenting a set of class methods, you must have the documentation block be
60
- # inside the `class << self` block or else the last documented method will be
61
- # ignored or hidden if newlines exist between each @!method block. If no
62
- # newlines exist, like below, the entire block would have been ignored.
63
- # Also, indenting the tags for the rest of the methods is required when
64
- # omitting newlines, otherwise, each method includes all of the returns below
65
- # it - so yard displays 6 return Status lines for the method.
66
- #
67
- # Why do we have no newlines here? So that "View source" on each of these
68
- # class methods points to the block itself.
58
+ # TODO: these methods are previously declared so we can document them easily
59
+ # if there is a better way to document class methods we'll do that
60
+
61
+ # @return [Status]
62
+ def self.undetermined() end
63
+ # @return [Status]
64
+ def self.not_submitted() end
65
+ # @return [Status]
66
+ def self.passed() end
67
+ # @return [Status]
68
+ def self.failed() end
69
+ # @return [Status]
70
+ def self.running() end
71
+ # @return [Status]
72
+ def self.queued() end
73
+ # @return [Status]
74
+ def self.held() end
75
+ # @return [Status]
76
+ def self.suspended() end
77
+
69
78
  class << self
70
- # @!method undetermined
71
- # A 'null' special case for Status
72
- # @return [Status]
73
- #
74
- # @!method not_submitted
75
- # @return [Status]
76
- #
77
- # @!method passed
78
- # @return [Status]
79
- #
80
- # @!method failed
81
- # @return [Status]
82
- #
83
- # @!method running
84
- # @return [Status]
85
- #
86
- # @!method queued
87
- # @return [Status]
88
- #
89
- # @!method held
90
- # @return [Status]
91
- #
92
- # @!method suspended
93
- # @return [Status]
94
79
  VALUES_HASH.each do |char, name|
95
80
  define_method(name) do
96
81
  OSC::Machete::Status.new(char)
@@ -99,28 +84,22 @@ class OSC::Machete::Status
99
84
  end
100
85
 
101
86
  # @!method undetermined?
102
- # @return [Boolean] true if undetermined
103
-
87
+ # the Status value Null object
88
+ # @return [Boolean] true if undetermined
104
89
  # @!method not_submitted?
105
- # @return [Boolean] true if not_submitted
106
-
90
+ # @return [Boolean] true if not_submitted
107
91
  # @!method failed?
108
- # @return [Boolean] true if failed
109
-
92
+ # @return [Boolean] true if failed
110
93
  # @!method passed?
111
- # @return [Boolean] true if passed
112
-
94
+ # @return [Boolean] true if passed
113
95
  # @!method held?
114
- # @return [Boolean] true if held
115
-
96
+ # @return [Boolean] true if held
116
97
  # @!method queued?
117
- # @return [Boolean] true if queued
118
-
98
+ # @return [Boolean] true if queued
119
99
  # @!method running?
120
- # @return [Boolean] true if running
121
-
100
+ # @return [Boolean] true if running
122
101
  # @!method suspended?
123
- # @return [Boolean] true if suspended
102
+ # @return [Boolean] true if suspended
124
103
  VALUES_HASH.each do |char, name|
125
104
  define_method("#{name}?") do
126
105
  self == OSC::Machete::Status.new(char)
@@ -8,31 +8,24 @@ require 'pbs'
8
8
  # == FIXME: This contains no state whatsoever. It should probably be changed into a module.
9
9
  class OSC::Machete::TorqueHelper
10
10
  # FIXME: Use ood_cluster gem
11
- LIB = ENV['TORQUE_LIB'] || '/opt/torque/lib64'
12
- BIN = ENV['TORQUE_BIN'] || '/opt/torque/bin'
11
+ PREFIX = '/usr/local/torque/default'
13
12
  HOSTS = {
14
13
  'oakley' => 'oak-batch.osc.edu',
15
- 'ruby' => 'ruby-batch.ten.osc.edu',
16
- 'quick' => 'quick-batch.ten.osc.edu',
17
- 'owens' => 'owens-batch.ten.osc.edu',
18
- :default => 'oak-batch.osc.edu'
14
+ 'ruby' => 'ruby-batch.osc.edu',
15
+ 'quick' => 'quick-batch.osc.edu'
19
16
  }
20
17
 
21
- class << self
22
- #@!attribute default
23
- # @return [TorqueHelper] default TorqueHelper instance to use
24
- attr_writer :default
25
- def default
26
- @default ||= self::new()
27
- end
18
+ # Alias to initialize a new object.
19
+ def self.default
20
+ self::new()
28
21
  end
29
22
 
30
23
  # Returns an OSC::Machete::Status ValueObject for a char
31
24
  #
32
25
  # @param [String] char The Torque status char
33
26
  #
34
- # @example Passed
35
- # status_for_char("C") #=> OSC::Machete::Status.passed
27
+ # @example Completed
28
+ # status_for_char("C") #=> OSC::Machete::Status.completed
36
29
  # @example Queued
37
30
  # status_for_char("W") #=> OSC::Machete::Status.queued
38
31
  #
@@ -65,6 +58,15 @@ class OSC::Machete::TorqueHelper
65
58
  #
66
59
  # Bills against the project specified by the primary group of the user.
67
60
  def qsub(script, host: nil, depends_on: {}, account_string: nil)
61
+ # if the script is set to run on Oakley in PBS headers
62
+ # this is to obviate current torque filter defect in which
63
+ # a script with PBS header set to specify oak-batch ends
64
+ # isn't properly handled and the job gets limited to 4GB
65
+ pbs = PBS::Batch.new(
66
+ host: HOSTS.fetch( host || host_from_script_pbs_header(script) ),
67
+ prefix: PREFIX
68
+ )
69
+
68
70
  headers = { depend: qsub_dependencies_header(depends_on) }
69
71
  headers.clear if headers[:depend].empty?
70
72
 
@@ -78,7 +80,7 @@ class OSC::Machete::TorqueHelper
78
80
  headers[PBS::ATTR[:A]] = default_account_string
79
81
  end
80
82
 
81
- pbs(host: host, script: script).submit_script(script, headers: headers, qsub: true)
83
+ pbs.submit_script(script, headers: headers, qsub: true)
82
84
  end
83
85
 
84
86
  # convert dependencies hash to a PBS header string
@@ -112,7 +114,12 @@ class OSC::Machete::TorqueHelper
112
114
  # @return [Status] The job state
113
115
  def qstat(pbsid, host: nil)
114
116
  id = pbsid.to_s
115
- status = pbs(host: host, id: id).get_job(id, filters: [:job_state])
117
+ pbs = PBS::Batch.new(
118
+ host: HOSTS.fetch( host || host_from_pbsid(id) ),
119
+ prefix: PREFIX
120
+ )
121
+
122
+ status = pbs.get_job(id, filters: [:job_state])
116
123
  status_for_char status[id][:job_state][0] # get status from status char value
117
124
  rescue PBS::UnkjobidError
118
125
  OSC::Machete::Status.passed
@@ -125,30 +132,16 @@ class OSC::Machete::TorqueHelper
125
132
  # @return [nil]
126
133
  def qdel(pbsid, host: nil)
127
134
  id = pbsid.to_s
128
- pbs(host: host, id: id).delete_job(id)
135
+ pbs = PBS::Batch.new(
136
+ host: HOSTS.fetch( host || host_from_pbsid(id) ),
137
+ prefix: PREFIX
138
+ )
139
+
140
+ pbs.delete_job(id)
129
141
  rescue PBS::UnkjobidError
130
142
  # Common use case where trying to delete a job that is no longer in the system.
131
143
  end
132
144
 
133
- def pbs(host: nil, id: nil, script: nil)
134
- if host
135
- # actually check if host is "oakley" i.e. a cluster key
136
- host = HOSTS.fetch(host.to_s, host.to_s)
137
- else
138
- # try to determine host
139
- key = host_from_pbsid(id) if id
140
- key = host_from_script_pbs_header(script) if script && key.nil?
141
-
142
- host = HOSTS.fetch(key, HOSTS.fetch(:default))
143
- end
144
-
145
- PBS::Batch.new(
146
- host: host,
147
- lib: LIB,
148
- bin: BIN
149
- )
150
- end
151
-
152
145
  private
153
146
  # return the name of the host to use based on the pbs header
154
147
  # TODO: Think of a more efficient way to do this.
@@ -159,8 +152,8 @@ class OSC::Machete::TorqueHelper
159
152
  "ruby"
160
153
  elsif (File.open(script) { |f| f.read =~ /#PBS -q @quick-batch/ })
161
154
  "quick"
162
- elsif (File.open(script) { |f| f.read =~ /#PBS -q @owens-batch/ })
163
- "owens"
155
+ else
156
+ "oakley" # DEFAULT
164
157
  end
165
158
  end
166
159
 
@@ -172,8 +165,8 @@ class OSC::Machete::TorqueHelper
172
165
  "ruby"
173
166
  elsif (pbsid =~ /quick/ )
174
167
  "quick"
175
- elsif (pbsid =~ /owens/ )
176
- "owens"
168
+ else
169
+ "oakley" # DEFAULT
177
170
  end
178
171
  end
179
172
  end
@@ -1,7 +1,6 @@
1
1
  # Class that maintains the name and home identifiers of a User.
2
2
  # Helper methods provided use the Etc module underneath.
3
3
  #
4
- # @deprecated Please use {http://www.rubydoc.info/gems/ood_support/OodSupport/User OodSupport::User} instead.
5
4
  class OSC::Machete::User
6
5
 
7
6
  attr_reader :name
@@ -20,8 +19,6 @@ class OSC::Machete::User
20
19
  #
21
20
  def initialize(username = Etc.getpwuid.name)
22
21
  @name = username
23
-
24
- warn "[DEPRECATION] `OSC::Machete::User` is deprecated. Please use `OodSupport::User` instead (see ood_support gem)."
25
22
  end
26
23
 
27
24
  # factory method to produce a User from specified uid
@@ -1,6 +1,6 @@
1
1
  module OSC
2
2
  module Machete
3
3
  # The current gem version
4
- VERSION = "1.2.2"
4
+ VERSION = "2.0.0.pre1"
5
5
  end
6
6
  end
@@ -1,7 +1,7 @@
1
1
  #PBS -l walltime=00:30:00
2
2
  #PBS -l nodes=1:ppn=12
3
3
  #PBS -S /bin/bash
4
- #PBS -q @quick-batch.ten.osc.edu
4
+ #PBS -q @quick-batch.osc.edu
5
5
  #PBS -N foobar
6
6
  #PBS -j oe
7
7
  #PBS -r n
data/test/test_job_dir.rb CHANGED
@@ -34,6 +34,6 @@ class TestJobDir < Minitest::Test
34
34
  # Create unique directory
35
35
  new_jobdir = OSC::Machete::JobDir.new(@parent).new_jobdir
36
36
  Dir.mkdir(new_jobdir)
37
- assert Dir.exist?("#{@parent}/9"), "Directory was not created: #{@parent}/9"
37
+ assert Dir.exists?("#{@parent}/9"), "Directory was not created: #{@parent}/9"
38
38
  end
39
39
  end
@@ -24,41 +24,41 @@ class TestLocation < Minitest::Test
24
24
  def test_render_default_replace_template
25
25
  setup_render
26
26
  @location1.render("")
27
- assert_equal true, File.exist?("#{@dir1}/file.txt")
28
- assert_equal false, File.exist?("#{@dir1}/file.txt.mustache")
27
+ assert_equal true, File.exists?("#{@dir1}/file.txt")
28
+ assert_equal false, File.exists?("#{@dir1}/file.txt.mustache")
29
29
  end
30
30
 
31
31
  def test_render_user_replace_template
32
32
  setup_render
33
33
  @location1.render("", {replace: true})
34
- assert_equal true, File.exist?("#{@dir1}/file.txt")
35
- assert_equal false, File.exist?("#{@dir1}/file.txt.mustache")
34
+ assert_equal true, File.exists?("#{@dir1}/file.txt")
35
+ assert_equal false, File.exists?("#{@dir1}/file.txt.mustache")
36
36
  end
37
37
 
38
38
  def test_render_user_doesnt_replace_template
39
39
  setup_render
40
40
  @location1.render("", {replace: false})
41
- assert_equal true, File.exist?("#{@dir1}/file.txt")
42
- assert_equal true, File.exist?("#{@dir1}/file.txt.mustache")
41
+ assert_equal true, File.exists?("#{@dir1}/file.txt")
42
+ assert_equal true, File.exists?("#{@dir1}/file.txt.mustache")
43
43
  end
44
44
 
45
45
  def test_copy_to_shouldnt_copy_developer_files
46
46
  setup_copy_to
47
47
 
48
48
  @location1.copy_to(@dir2)
49
- assert_equal true, Dir.exist?("#{@dir2}")
50
- assert_equal false, Dir.exist?("#{@dir2}/.git")
51
- assert_equal false, Dir.exist?("#{@dir2}/.svn")
52
- assert_equal false, Dir.exist?("#{@dir2}/test.dir.1")
53
- assert_equal true, Dir.exist?("#{@dir2}/test.dir.2")
54
- assert_equal true, File.exist?("#{@dir2}/test.1")
55
- assert_equal false, File.exist?("#{@dir2}/test.2")
56
- assert_equal true, File.exist?("#{@dir2}/test.3")
57
- assert_equal false, File.exist?("#{@dir2}/test.4")
58
- assert_equal false, File.exist?("#{@dir2}/test.dir.2/test.1")
59
- assert_equal false, File.exist?("#{@dir2}/test.dir.2/test.2")
60
- assert_equal true, File.exist?("#{@dir2}/test.dir.2/test.4")
61
- assert_equal false, File.exist?("#{@dir2}/.gitignore")
49
+ assert_equal true, Dir.exists?("#{@dir2}")
50
+ assert_equal false, Dir.exists?("#{@dir2}/.git")
51
+ assert_equal false, Dir.exists?("#{@dir2}/.svn")
52
+ assert_equal false, Dir.exists?("#{@dir2}/test.dir.1")
53
+ assert_equal true, Dir.exists?("#{@dir2}/test.dir.2")
54
+ assert_equal true, File.exists?("#{@dir2}/test.1")
55
+ assert_equal false, File.exists?("#{@dir2}/test.2")
56
+ assert_equal true, File.exists?("#{@dir2}/test.3")
57
+ assert_equal false, File.exists?("#{@dir2}/test.4")
58
+ assert_equal false, File.exists?("#{@dir2}/test.dir.2/test.1")
59
+ assert_equal false, File.exists?("#{@dir2}/test.dir.2/test.2")
60
+ assert_equal true, File.exists?("#{@dir2}/test.dir.2/test.4")
61
+ assert_equal false, File.exists?("#{@dir2}/.gitignore")
62
62
  end
63
63
 
64
64
 
@@ -106,7 +106,7 @@ class TestTorqueHelper < Minitest::Test
106
106
  # Test that qdel works for quick batch
107
107
  def test_qdel_quick
108
108
  PBS::Batch.any_instance.stubs(:delete_job).returns(true)
109
- assert_equal true, @shell.qdel("123.quick-batch.ten.osc.edu")
109
+ assert_equal true, @shell.qdel("123.quick-batch.osc.edu")
110
110
  PBS::Batch.any_instance.unstub(:delete_job)
111
111
  end
112
112
 
@@ -120,18 +120,18 @@ class TestTorqueHelper < Minitest::Test
120
120
  # Test that qdel throws exception on PBS exception
121
121
  def test_qdel_throws_exception
122
122
  PBS::Batch.any_instance.stubs(:delete_job).raises(PBS::Error)
123
- assert_raises(PBS::Error) { @shell.qdel("123.quick-batch.ten.osc.edu") }
123
+ assert_raises(PBS::Error) { @shell.qdel("123.quick-batch.osc.edu") }
124
124
  PBS::Batch.any_instance.unstub(:delete_job)
125
125
 
126
126
  PBS::Batch.any_instance.stubs(:delete_job).raises(PBS::SystemError)
127
- assert_raises(PBS::SystemError) { @shell.qdel("123.quick-batch.ten.osc.edu") }
127
+ assert_raises(PBS::SystemError) { @shell.qdel("123.quick-batch.osc.edu") }
128
128
  PBS::Batch.any_instance.unstub(:delete_job)
129
129
  end
130
130
 
131
131
  # Test that qdel doesn't throw exception if Unknown Job Id exception
132
132
  def test_qdel_doesnt_throw_exception_on_unknown_job_id
133
133
  PBS::Batch.any_instance.stubs(:delete_job).raises(PBS::UnkjobidError)
134
- @shell.qdel("123.quick-batch.ten.osc.edu")
134
+ @shell.qdel("123.quick-batch.osc.edu")
135
135
  PBS::Batch.any_instance.unstub(:delete_job)
136
136
  end
137
137
 
@@ -206,49 +206,4 @@ class TestTorqueHelper < Minitest::Test
206
206
  PBS::Batch.any_instance.unstub(:submit_script)
207
207
  @shell.unstub(:default_account_string)
208
208
  end
209
-
210
- def test_pbs_default_host
211
- s = @shell.pbs
212
- assert_equal 'oak-batch.osc.edu', s.host
213
- assert_equal OSC::Machete::TorqueHelper::LIB, s.lib.to_s
214
- assert_equal OSC::Machete::TorqueHelper::BIN, s.bin.to_s
215
- end
216
-
217
- def test_pbs_host_variations
218
- # you can use the cluster ids
219
- assert_equal 'ruby-batch.ten.osc.edu', @shell.pbs(host: 'ruby').host
220
-
221
- # or you can use the host itself
222
- assert_equal 'ruby-batch.osc.edu', @shell.pbs(host: 'ruby-batch.osc.edu').host
223
- assert_equal '@ruby-batch', @shell.pbs(host: '@ruby-batch').host
224
-
225
- assert_equal 'ruby-batch.ten.osc.edu', @shell.pbs(id: '4567').host
226
- assert_equal 'ruby-batch.ten.osc.edu', @shell.pbs(script: @script_ruby).host
227
- assert_equal 'oak-batch.osc.edu', @shell.pbs(script: @script_oakley).host
228
- end
229
-
230
- def test_setting_default_torque_helper
231
- d = OSC::Machete::TorqueHelper.default
232
-
233
- assert_equal 'oak-batch.osc.edu', OSC::Machete::TorqueHelper.default.pbs.host
234
-
235
- # this is an example of how you can quickly modify the default behavior of
236
- # a TorqueHelper instance to provide a new host, id, and script
237
- d2 = OSC::Machete::TorqueHelper.new
238
- class << d2
239
- def pbs(host: nil, id: nil, script: nil)
240
- PBS::Batch.new(
241
- host: "ruby-batch.osc.edu",
242
- lib: LIB,
243
- bin: BIN
244
- )
245
- end
246
- end
247
-
248
- OSC::Machete::TorqueHelper.default = d2
249
-
250
- assert_equal 'ruby-batch.osc.edu', OSC::Machete::TorqueHelper.default.pbs.host
251
-
252
- OSC::Machete::TorqueHelper.default = d
253
- end
254
209
  end
@@ -30,7 +30,7 @@ class TestTorqueHelperLive < Minitest::Test
30
30
  # This raises an issue mentioning that it is not being submitted on the
31
31
  # correct host, comment out the raise to skip the live tests.
32
32
  # Maybe this would be better accomplished with a separate rake task.
33
- @submit_host = "webdev02.hpc.osc.edu"
33
+ @submit_host = "websvcs08.osc.edu"
34
34
 
35
35
  @job_state_queued = OSC::Machete::Status.queued
36
36
  @job_state_completed = OSC::Machete::Status.passed
@@ -71,7 +71,7 @@ class TestTorqueHelperLive < Minitest::Test
71
71
 
72
72
  # Qstat it to make sure it's queued.
73
73
  live_status = torque.qstat(live_job)
74
- assert_includes OSC::Machete::Status.active_values, live_status
74
+ assert_equal @job_state_queued, live_status
75
75
 
76
76
  # Delete it and assert true returned.
77
77
  live_delete_status = torque.qdel(live_job)
@@ -102,7 +102,7 @@ class TestTorqueHelperLive < Minitest::Test
102
102
 
103
103
  # Qstat it to make sure it's queued.
104
104
  live_status = torque.qstat(live_job)
105
- assert_includes OSC::Machete::Status.active_values, live_status
105
+ assert_equal @job_state_queued, live_status
106
106
 
107
107
  # Delete it and assert true returned.
108
108
  live_delete_status = torque.qdel(live_job)
@@ -128,11 +128,11 @@ class TestTorqueHelperLive < Minitest::Test
128
128
  if Socket.gethostname == @submit_host
129
129
  # Submit a small job.
130
130
  live_job = torque.qsub(@script_ruby)
131
- assert_match(/^\d+$/, live_job)
131
+ assert_match /^\d+$/, live_job
132
132
 
133
133
  # Qstat it to make sure it's queued.
134
134
  live_status = torque.qstat(live_job)
135
- assert_includes OSC::Machete::Status.active_values, live_status
135
+ assert_equal @job_state_queued, live_status
136
136
 
137
137
  # Delete it and assert true returned.
138
138
  live_delete_status = torque.qdel(live_job)
@@ -157,11 +157,11 @@ class TestTorqueHelperLive < Minitest::Test
157
157
  if Socket.gethostname == @submit_host
158
158
  # Submit a small job.
159
159
  live_job = torque.qsub(@script_quick, host: 'quick')
160
- assert_match(/\d+.quick-batch.ten.osc.edu/, live_job)
160
+ assert_match /\d+.quick-batch.osc.edu/, live_job
161
161
 
162
162
  # Qstat it to make sure it's queued.
163
163
  live_status = torque.qstat(live_job)
164
- assert_includes OSC::Machete::Status.active_values, live_status
164
+ assert_equal @job_state_queued, live_status
165
165
 
166
166
  # Delete it and assert true returned.
167
167
  live_delete_status = torque.qdel(live_job)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osc-machete
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 2.0.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Franz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-04 00:00:00.000000000 Z
11
+ date: 2016-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -149,9 +149,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
149
  version: '2.2'
150
150
  required_rubygems_version: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ">="
152
+ - - ">"
153
153
  - !ruby/object:Gem::Version
154
- version: '0'
154
+ version: 1.3.1
155
155
  requirements: []
156
156
  rubyforge_project:
157
157
  rubygems_version: 2.4.5
@@ -175,3 +175,4 @@ test_files:
175
175
  - test/test_status.rb
176
176
  - test/test_torque_helper.rb
177
177
  - test/test_torque_helper_live.rb
178
+ has_rdoc: