comana 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "rspec", ">= 2.9.0"
9
+ gem "rspec", ">= 2.10.0"
10
10
  gem "rdoc", ">= 3.12"
11
11
  gem "bundler", ">= 1.1.3"
12
12
  gem "jeweler", ">= 1.8.3"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
data/comana.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "comana"
8
- s.version = "0.0.7"
8
+ s.version = "0.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippei94da"]
12
- s.date = "2012-05-10"
12
+ s.date = "2012-05-18"
13
13
  s.description = "Comana, COmputation MANAger,\n is a software to provide a framework of\n managing scientific computing.\n Researchers on computing have to check calculation and\n generate new calculation and execute, repeatedly.\n The abstract class that this gem provide would help the work.\n "
14
14
  s.email = "ippei94da@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -61,20 +61,20 @@ Gem::Specification.new do |s|
61
61
  s.specification_version = 3
62
62
 
63
63
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
- s.add_development_dependency(%q<rspec>, [">= 2.9.0"])
64
+ s.add_development_dependency(%q<rspec>, [">= 2.10.0"])
65
65
  s.add_development_dependency(%q<rdoc>, [">= 3.12"])
66
66
  s.add_development_dependency(%q<bundler>, [">= 1.1.3"])
67
67
  s.add_development_dependency(%q<jeweler>, [">= 1.8.3"])
68
68
  s.add_development_dependency(%q<simplecov>, [">= 0"])
69
69
  else
70
- s.add_dependency(%q<rspec>, [">= 2.9.0"])
70
+ s.add_dependency(%q<rspec>, [">= 2.10.0"])
71
71
  s.add_dependency(%q<rdoc>, [">= 3.12"])
72
72
  s.add_dependency(%q<bundler>, [">= 1.1.3"])
73
73
  s.add_dependency(%q<jeweler>, [">= 1.8.3"])
74
74
  s.add_dependency(%q<simplecov>, [">= 0"])
75
75
  end
76
76
  else
77
- s.add_dependency(%q<rspec>, [">= 2.9.0"])
77
+ s.add_dependency(%q<rspec>, [">= 2.10.0"])
78
78
  s.add_dependency(%q<rdoc>, [">= 3.12"])
79
79
  s.add_dependency(%q<bundler>, [">= 1.1.3"])
80
80
  s.add_dependency(%q<jeweler>, [">= 1.8.3"])
@@ -24,7 +24,10 @@ class MachineInfo
24
24
 
25
25
  def get_info(host)
26
26
  series = host.sub(/\d*$/, "")
27
- raise NoEntryError unless @data.has_key?(series)
27
+ unless @data.has_key?(series)
28
+ raise NoEntryError,
29
+ "#{series}"
30
+ end
28
31
  @data[series]
29
32
  end
30
33
 
@@ -1,46 +1,98 @@
1
1
  #! /usr/bin/env ruby
2
2
  # coding: utf-8
3
3
 
4
+ require "fileutils"
4
5
  require "comana/computationmanager.rb"
5
6
  require "comana/machineinfo.rb"
7
+ require "optparse"
6
8
 
7
9
  #
8
10
  #
9
11
  #
10
12
  class QueueSubmitter < ComputationManager
11
- QSUB_SCRIPT = "script.qsub"
13
+ SCRIPT = "script.sh"
14
+ PROLOGUE = "prologue_script.sh"
15
+ EPILOGUE = "epilogue_script.sh"
12
16
  WALLTIME = "7:00:00:00" # day:hour:minute:second
13
17
 
14
18
  class PrepareNextError < Exception; end
15
19
  class InitializeError < Exception; end
20
+ class InvalidArgumentError < Exception; end
16
21
 
17
22
  # opts is a hash includes data belows:
18
- # :d => calculation as comana subclass.
19
- # :c => command line.
20
- # :n => name of cluster.
21
- # :s => flag for speed prior mode (option).
23
+ # :command => command line.
24
+ # :cluster => name of cluster.
22
25
  # :machineinfo => MachineInfo class instance.
23
- # NOTE:
24
- # :d is a comana subclass not directory name to check to be calculatable.
26
+ # :directory => calculation as ComputationManager subclass.
27
+ # Note that this is not directory name, to check to be calculatable.
25
28
  def initialize(opts)
26
- raise InitializeError, "No :d entry in options" unless opts.has_key?(:d)
27
- raise InitializeError, "No :c entry in options" unless opts.has_key?(:c)
28
- raise InitializeError, "No :n entry in options" unless opts.has_key?(:n)
29
- raise InitializeError, "No :machineinfo entry in options" unless opts.has_key?(:machineinfo)
30
-
31
- super(opts[:d].dir)
32
- @command = opts[:c]
33
- @nodes = opts[:n]
34
- @speed = opts[:s]
35
- @machineinfo = opts[:machineinfo]
36
- @lockdir = "lock_queuesubmitter"
29
+ [:directory, :command, :number, :cluster, :fileserver].each do |symbol|
30
+ raise InitializeError, "No #{symbol}" unless opts.has_key?(symbol)
31
+ end
32
+
33
+ super(opts[:directory].dir)
34
+ @command = opts[:command]
35
+ @cluster = opts[:cluster]
36
+ @number = opts[:number]
37
+ @fileserver = opts[:fileserver]
38
+ @lockdir = "lock_queuesubmitter"
39
+ end
40
+
41
+ def self.parse_options(ary, machineinfo)
42
+ ## option analysis
43
+ opts = {}
44
+ op = OptionParser.new
45
+ op.on("-c cluster", "--cluster" , "Cluster name."){|v| opts[:cluster] = v }
46
+ op.on("-n number", "--number", "Indicate node number, or key in ~/.machineinfo."){|v|
47
+ opts[:number] = v
48
+ }
49
+ op.parse!(ary)
50
+
51
+ unless ary.size == 1
52
+ raise InitializeError, "Not one directory indicated: #{ary.join(", ")}."
53
+ end
54
+
55
+ opts[:fileserver] = machineinfo.get_info("fileserver")
56
+
57
+ unless opts[:cluster]
58
+ raise InvalidArgumentError,
59
+ "-c option not set."
60
+ end
61
+
62
+ # Number of nodes: number, key string, or default value(1).
63
+ if opts[:number].to_i > 0
64
+ opts[:number] = opts[:number].to_i
65
+ else
66
+ number = machineinfo.get_info(opts[:cluster])[opts[:number]]
67
+ if number
68
+ opts[:number] = number
69
+ else
70
+ raise InvalidArgumentError,
71
+ "No entry '#{opts[:number]}' in machineinfo: #{machineinfo.inspect}."
72
+ end
73
+ end
74
+ opts[:number] ||= 1
75
+
76
+ opts
37
77
  end
38
78
 
39
79
  def calculate
40
- script_path = "#{@dir}/#{QSUB_SCRIPT}"
41
- File.open(script_path, "w") { |io| dump_qsub_str(io) }
80
+ # prologue
81
+ prologue_path = "#{@dir}/#{PROLOGUE}"
82
+ File.open(prologue_path, "w") { |io| dump_prologue(io) }
83
+ FileUtils.chmod(0700, prologue_path)
84
+
85
+ # epilogue
86
+ epilogue_path = "#{@dir}/#{EPILOGUE}"
87
+ File.open(epilogue_path, "w") { |io| dump_epilogue(io) }
88
+ FileUtils.chmod(0700, epilogue_path)
42
89
 
43
- system("cd #{@dir}; qsub #{script_path} > #{@dir}/#{@lockdir}/stdout")
90
+ # script
91
+ script_path = "#{@dir}/#{SCRIPT}"
92
+ File.open(script_path, "w") { |io| dump_script(io) }
93
+
94
+ # run
95
+ system("cd #{@dir}; qsub -l prologue=#{prologue_path} -l epilogue=#{epilogue_path} #{script_path}")
44
96
  end
45
97
 
46
98
  # Raise QueueSubmitter::PrepareNextError when called.
@@ -55,25 +107,40 @@ class QueueSubmitter < ComputationManager
55
107
 
56
108
  private
57
109
 
58
- def dump_qsub_str(io = nil)
59
- fs = @machineinfo.get_info("fileserver") #fileserver
60
- node_info = @machineinfo.get_info(@nodes)
61
- num = node_info["economy_nodes"]
62
- num = node_info["speed_nodes"] if @speed
110
+ def dump_prologue(io = nil)
111
+ str = [
112
+ '#! /bin/sh',
113
+ 'LOGFILE="${PBS_O_WORKDIR}/prologue_script.log"',
114
+ 'echo "hostname : `hostname`" >> $LOGFILE',
115
+ 'echo "job id : $1" >> $LOGFILE',
116
+ 'echo "job execution user name : $2" >> $LOGFILE',
117
+ 'echo "job execution group name : $3" >> $LOGFILE',
118
+ 'echo "job name : $4" >> $LOGFILE',
119
+ 'echo "list of requested resource limits: $5" >> $LOGFILE',
120
+ 'echo "job execution queue : $6" >> $LOGFILE',
121
+ 'echo "job account : $7" >> $LOGFILE',
122
+ 'echo "PBS_O_WORKDIR : ${PBS_O_WORKDIR}" >> $LOGFILE',
123
+ 'echo "nodes in pbs_nodefile : " >> $LOGFILE',
124
+ 'cat ${PBS_NODEFILE} >> $LOGFILE',
125
+ 'exit 0',
126
+ ].join("\n")
63
127
 
128
+ if io
129
+ io.puts str
130
+ else
131
+ return str
132
+ end
133
+ end
134
+
135
+ def dump_script(io = nil)
64
136
  str = [
65
137
  "#! /bin/sh",
66
138
  "#PBS -N #{@dir}",
67
- "#PBS -l nodes=#{num}:ppn=1:#{@nodes},walltime=#{WALLTIME}",
139
+ "#PBS -l nodes=#{@number}:ppn=1:#{@cluster},walltime=#{WALLTIME}",
68
140
  "#PBS -j oe",
69
- "mkdir -p ${PBS_O_WORKDIR} && \\",
70
- "rsync -azq --delete #{fs}:${PBS_O_WORKDIR}/ ${PBS_O_WORKDIR} && \\",
71
- "cp ${PBS_NODEFILE} ${PBS_O_WORKDIR}/pbs_nodefile && \\",
141
+ "",
72
142
  "cd ${PBS_O_WORKDIR} && \\",
73
- "#{@command} && \\",
74
- "rsync -azq --delete ${PBS_O_WORKDIR}/ #{fs}:${PBS_O_WORKDIR} && \\",
75
- "#rm -rf ${PBS_O_WORKDIR}",
76
- "mv ${PBS_O_WORKDIR} ~/.trash",
143
+ "#{@command}",
77
144
  ].join("\n")
78
145
 
79
146
  if io
@@ -82,6 +149,29 @@ class QueueSubmitter < ComputationManager
82
149
  return str
83
150
  end
84
151
  end
85
- end
86
152
 
153
+ def dump_epilogue(io = nil)
154
+ str = [
155
+ '#! /bin/sh',
156
+ 'LOGFILE="${PBS_O_WORKDIR}/epilogue_script.log"',
157
+ 'echo "job id : $1" >> $LOGFILE',
158
+ 'echo "job execution user name : $2" >> $LOGFILE',
159
+ 'echo "job execution group name : $3" >> $LOGFILE',
160
+ 'echo "job name : $4" >> $LOGFILE',
161
+ 'echo "session id : $5" >> $LOGFILE',
162
+ 'echo "list of requested resource limits: $6" >> $LOGFILE',
163
+ 'echo "list of resources used by job : $7" >> $LOGFILE',
164
+ 'echo "job execution queue : $8" >> $LOGFILE',
165
+ 'echo "job account : $9" >> $LOGFILE',
166
+ 'echo "job exit code : $10" >> $LOGFILE',
167
+ 'exit 0',
168
+ ].join("\n")
169
+
170
+ if io
171
+ io.puts str
172
+ else
173
+ return str
174
+ end
175
+ end
176
+ end
87
177
 
data/memo.txt CHANGED
@@ -4,7 +4,11 @@ Comana don't have information of output files.
4
4
  Because it is difficult to define final output and to deal systematically.
5
5
  e.g., repeated calculation till convergence.
6
6
 
7
- 0.0.7 release [2012-05-10]
7
+ 0.0.8 release
8
+ Changed queuesubmitter option. (long name symbol)
9
+ Add prologue and epilogue to QueueSubmitter.
10
+
11
+ 0.0.7 release
8
12
  Bugfix of danger to rsync large directory:
9
13
  - bin/submitqueue is removed.
10
14
  - lib/queuesubmitter.rb is modified.
@@ -10,23 +10,10 @@ describe MachineInfo do
10
10
  describe "#load_file" do
11
11
  context "not exist machineinfo file" do
12
12
  DATA_FILE = "spec/machineinfo"
13
- #DATA_FILE = "spec/dummy.yaml"
14
- #data = {
15
- # "SeriesA" => { "data1" => "A-1", "data2" => "A-2" },
16
- # "SeriesB" => { "data1" => "B-1", "data2" => "B-2" },
17
- #}
18
- #io = File.open(DATA_FILE, "w")
19
- #YAML.dump(data, io)
20
- #io.close
21
-
22
- #pp File.open(DATA_FILE, "r").readlines
23
-
24
13
  it { lambda{MachineInfo.load_file(DATA_FILE)}.should_not raise_error}
25
14
 
26
15
  mi00 = MachineInfo.load_file(DATA_FILE)
27
16
  it {mi00.get_info("SeriesA").should == { "data1" => "A-1", "data2" => "A-2" } }
28
-
29
- #FileUtils.rm DATA_FILE
30
17
  end
31
18
 
32
19
  context "not exist machineinfo file" do
@@ -3,87 +3,145 @@
3
3
 
4
4
  require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
5
5
  require "comana/queuesubmitter.rb"
6
+ require "comana/computationmanager.rb"
6
7
  require "comana/machineinfo.rb"
7
8
 
8
9
  class QueueSubmitter < ComputationManager
9
- public :dump_qsub_str
10
+ public :dump_prologue
11
+ public :dump_script
12
+ public :dump_epilogue
10
13
  end
11
14
 
12
15
  #describe QueueSubmitter, "with chars to be escaped" do
13
16
  describe QueueSubmitter do
14
17
  describe "#initialize" do
15
- context "opts not have :d" do
18
+ context "opts not have :directory" do
16
19
  opts = {
17
- #:d => "dir_name",
18
- :c => "command_line",
19
- :n => "Nodes",
20
- :s => true,
21
- :machineinfo => MachineInfo.new(
22
- "fileserver" => "FS",
23
- "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
24
- )
20
+ #:directory => "dir_name",
21
+ :command => "command_line",
22
+ :cluster => "Nodes",
23
+ :number => 4,
24
+ :fileserver => "FS",
25
25
  }
26
26
  it {lambda{QueueSubmitter.new(opts)}.should raise_error(
27
27
  QueueSubmitter::InitializeError)}
28
28
  end
29
29
 
30
- context "opts not have :c" do
30
+ context "opts not have :command" do
31
31
  opts = {
32
- :d => "dir_name",
33
- #:c => "command_line",
34
- :n => "Nodes",
35
- :s => true,
36
- :machineinfo => MachineInfo.new(
37
- "fileserver" => "FS",
38
- "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
39
- )
32
+ :directory => ComputationManager.new("dir_name"),
33
+ #:command => "command_line",
34
+ :cluster => "Nodes",
35
+ :number => 4,
36
+ :fileserver => "FS",
40
37
  }
41
38
  it {lambda{QueueSubmitter.new(opts)}.should raise_error(
42
39
  QueueSubmitter::InitializeError)}
43
40
  end
44
41
 
45
- context "opts not have :n" do
42
+ context "opts not have :cluster" do
46
43
  opts = {
47
- :d => "dir_name",
48
- :c => "command_line",
49
- #:n => "Nodes",
50
- :s => true,
51
- :machineinfo => MachineInfo.new(
52
- "fileserver" => "FS",
53
- "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
54
- )
44
+ :directory => ComputationManager.new("dir_name"),
45
+ :command => "command_line",
46
+ #:cluster => "Nodes",
47
+ :number => 4,
48
+ :fileserver => "FS",
55
49
  }
56
50
  it {lambda{QueueSubmitter.new(opts)}.should raise_error(
57
51
  QueueSubmitter::InitializeError)}
58
52
  end
59
53
 
60
- context "opts not have :c" do
54
+ context "opts not have :command" do
61
55
  opts = {
62
- :d => "dir_name",
63
- :c => "command_line",
64
- :n => "Nodes",
65
- :s => true,
66
- #:machineinfo => MachineInfo.new(
67
- # "fileserver" => "FS",
68
- # "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
69
- #)
56
+ :directory => ComputationManager.new("dir_name"),
57
+ #:command => "command_line",
58
+ :cluster => "Nodes",
59
+ :number => 4,
60
+ :fileserver => "FS",
70
61
  }
71
62
  it {lambda{QueueSubmitter.new(opts)}.should raise_error(
72
63
  QueueSubmitter::InitializeError)}
73
64
  end
74
65
  end
75
66
 
76
- describe "#dump_qsub_str" do
67
+ describe "#self.parse_options" do
77
68
  before do
78
- opts = {
79
- :d => ComputationManager.new("spec/not_started"),
80
- :c => "command_line",
81
- :n => "Nodes",
82
- :s => true,
83
- :machineinfo => MachineInfo.new(
69
+ @machine_info = MachineInfo.new(
70
+ {
84
71
  "fileserver" => "FS",
85
- "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
86
- )
72
+ "CLUSTER" => {
73
+ "speed" => 2,
74
+ "economy" => 1,
75
+ },
76
+ }
77
+ )
78
+ end
79
+
80
+ context "-c not indicated" do
81
+ ary = %w( a -n 1 )
82
+ it {lambda{QueueSubmitter.parse_options(ary, @machine_info)}.should raise_error(
83
+ QueueSubmitter::InvalidArgumentError)}
84
+ end
85
+
86
+ #context "-n not indicated" do
87
+ # ary = %w( a -c CLUSTER_DUMMY )
88
+ # it {lambda{QueueSubmitter.parse_options(ary, @machine_info)}.should raise_error(MachineInfo::NoEntryError)}
89
+ #end
90
+
91
+ context "-n not indicated" do
92
+ ary = %w( a -c CLUSTER )
93
+ it {lambda{QueueSubmitter.parse_options(ary, @machine_info)}.should raise_error(QueueSubmitter::InvalidArgumentError)}
94
+ end
95
+
96
+ context "-c and -n number indicated" do
97
+ ary = %w( a -c CLUSTER -n 1 )
98
+ it {lambda{QueueSubmitter.parse_options(ary, @machine_info)}.should_not raise_error}
99
+ end
100
+
101
+ end
102
+
103
+ describe "#dump_prologue" do
104
+ before do
105
+ opts = {
106
+ :directory => ComputationManager.new("spec/not_started"),
107
+ :command => "command_line",
108
+ :cluster => "Nodes",
109
+ :number => 4,
110
+ :fileserver => "FS",
111
+ }
112
+ @qs00 = QueueSubmitter.new(opts)
113
+
114
+ @correct = [
115
+ '#! /bin/sh',
116
+ 'LOGFILE="${PBS_O_WORKDIR}/prologue_script.log"',
117
+ 'echo "hostname : `hostname`" >> $LOGFILE',
118
+ 'echo "job id : $1" >> $LOGFILE',
119
+ 'echo "job execution user name : $2" >> $LOGFILE',
120
+ 'echo "job execution group name : $3" >> $LOGFILE',
121
+ 'echo "job name : $4" >> $LOGFILE',
122
+ 'echo "list of requested resource limits: $5" >> $LOGFILE',
123
+ 'echo "job execution queue : $6" >> $LOGFILE',
124
+ 'echo "job account : $7" >> $LOGFILE',
125
+ 'echo "PBS_O_WORKDIR : ${PBS_O_WORKDIR}" >> $LOGFILE',
126
+ 'echo "nodes in pbs_nodefile : " >> $LOGFILE',
127
+ 'cat ${PBS_NODEFILE} >> $LOGFILE',
128
+ 'exit 0',
129
+ ].join("\n")
130
+ end
131
+
132
+ context "speed mode" do
133
+ it { @qs00.dump_prologue.should == @correct}
134
+ end
135
+ end
136
+
137
+ describe "#dump_script" do
138
+ before do
139
+ opts = {
140
+ :directory => ComputationManager.new("spec/not_started"),
141
+ :command => "command_line",
142
+ :cluster => "Nodes",
143
+ :number => 4,
144
+ :fileserver => "FS",
87
145
  }
88
146
  @qs00 = QueueSubmitter.new(opts)
89
147
 
@@ -92,42 +150,61 @@ describe QueueSubmitter do
92
150
  "#PBS -N spec/not_started",
93
151
  "#PBS -l nodes=4:ppn=1:Nodes,walltime=7:00:00:00",
94
152
  "#PBS -j oe",
95
- "mkdir -p ${PBS_O_WORKDIR} && \\",
96
- "rsync -azq --delete FS:${PBS_O_WORKDIR}/ ${PBS_O_WORKDIR} && \\",
97
- "cp ${PBS_NODEFILE} ${PBS_O_WORKDIR}/pbs_nodefile && \\",
153
+ "",
98
154
  "cd ${PBS_O_WORKDIR} && \\",
99
- "command_line && \\",
100
- "rsync -azq --delete ${PBS_O_WORKDIR}/ FS:${PBS_O_WORKDIR} && \\",
101
- "#rm -rf ${PBS_O_WORKDIR}",
102
- "mv ${PBS_O_WORKDIR} ~/.trash",
155
+ "command_line",
103
156
  ].join("\n")
104
157
  end
105
158
 
106
159
  context "speed mode" do
107
- it { @qs00.dump_qsub_str.should == @correct}
160
+ it { @qs00.dump_script.should == @correct}
161
+ end
162
+ end
108
163
 
109
- it do
110
- io = StringIO.new
111
- @qs00.dump_qsub_str(io)
112
- io.rewind
113
- #pp io.readlines
114
- io.readlines.join.chomp.should == @correct
115
- end
164
+ describe "#dump_epilogue" do
165
+ before do
166
+ opts = {
167
+ :directory => ComputationManager.new("spec/not_started"),
168
+ :command => "command_line",
169
+ :cluster => "Nodes",
170
+ :number => 4,
171
+ :fileserver => "FS",
172
+ }
173
+ @qs00 = QueueSubmitter.new(opts)
174
+
175
+ @correct = [
176
+ '#! /bin/sh',
177
+ 'LOGFILE="${PBS_O_WORKDIR}/epilogue_script.log"',
178
+ 'echo "job id : $1" >> $LOGFILE',
179
+ 'echo "job execution user name : $2" >> $LOGFILE',
180
+ 'echo "job execution group name : $3" >> $LOGFILE',
181
+ 'echo "job name : $4" >> $LOGFILE',
182
+ 'echo "session id : $5" >> $LOGFILE',
183
+ 'echo "list of requested resource limits: $6" >> $LOGFILE',
184
+ 'echo "list of resources used by job : $7" >> $LOGFILE',
185
+ 'echo "job execution queue : $8" >> $LOGFILE',
186
+ 'echo "job account : $9" >> $LOGFILE',
187
+ 'echo "job exit code : $10" >> $LOGFILE',
188
+ 'exit 0',
189
+ ].join("\n")
190
+ end
191
+
192
+ context "speed mode" do
193
+ it { @qs00.dump_epilogue.should == @correct}
116
194
  end
117
195
  end
118
196
 
197
+
198
+
119
199
  describe "#finished?" do
120
200
  context "locked" do
121
201
  it do
122
202
  opts = {
123
- :d => ComputationManager.new("spec/queuesubmitter/locked"),
124
- :c => "command_line",
125
- :n => "Nodes",
126
- :s => true,
127
- :machineinfo => MachineInfo.new(
128
- "fileserver" => "FS",
129
- "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
130
- )
203
+ :directory => ComputationManager.new("spec/queuesubmitter/locked"),
204
+ :command => "command_line",
205
+ :cluster => "Nodes",
206
+ :number => 4,
207
+ :fileserver => "FS",
131
208
  }
132
209
  @qs00 = QueueSubmitter.new(opts)
133
210
 
@@ -138,14 +215,11 @@ describe QueueSubmitter do
138
215
  context "unlocked" do
139
216
  it do
140
217
  opts = {
141
- :d => ComputationManager.new("spec/queuesubmitter/unlocked"),
142
- :c => "command_line",
143
- :n => "Nodes",
144
- :s => true,
145
- :machineinfo => MachineInfo.new(
146
- "fileserver" => "FS",
147
- "Nodes" => { "speed_nodes" => 4, "economy_nodes" => 1, }
148
- )
218
+ :directory => ComputationManager.new("spec/queuesubmitter/unlocked"),
219
+ :command => "command_line",
220
+ :cluster => "Nodes",
221
+ :number => 4,
222
+ :fileserver => "FS",
149
223
  }
150
224
  @qs00 = QueueSubmitter.new(opts)
151
225
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-10 00:00:00.000000000 Z
12
+ date: 2012-05-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &80007130 !ruby/object:Gem::Requirement
16
+ requirement: &71401920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 2.9.0
21
+ version: 2.10.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *80007130
24
+ version_requirements: *71401920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &80006610 !ruby/object:Gem::Requirement
27
+ requirement: &71401380 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.12'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *80006610
35
+ version_requirements: *71401380
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &80005810 !ruby/object:Gem::Requirement
38
+ requirement: &71400960 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.1.3
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *80005810
46
+ version_requirements: *71400960
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &80005240 !ruby/object:Gem::Requirement
49
+ requirement: &71400540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *80005240
57
+ version_requirements: *71400540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &80004850 !ruby/object:Gem::Requirement
60
+ requirement: &71399840 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *80004850
68
+ version_requirements: *71399840
69
69
  description: ! "Comana, COmputation MANAger,\n is a software to provide a framework
70
70
  of\n managing scientific computing.\n Researchers on computing have to check
71
71
  calculation and\n generate new calculation and execute, repeatedly.\n The
@@ -125,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  segments:
127
127
  - 0
128
- hash: 244597455
128
+ hash: 49117789
129
129
  required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  none: false
131
131
  requirements: