comana 0.0.7 → 0.0.8

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.
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: