comana 0.0.9 → 0.0.10

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.
Files changed (53) hide show
  1. data/CHANGES +20 -0
  2. data/Gemfile +10 -4
  3. data/Rakefile +26 -9
  4. data/VERSION +1 -1
  5. data/bin/machinestatus +189 -0
  6. data/bin/scpall +64 -0
  7. data/bin/sshall +58 -0
  8. data/example/dot.clustersetting +15 -0
  9. data/lib/comana.rb +12 -1
  10. data/lib/comana/clustersetting.rb +55 -0
  11. data/lib/comana/computationmanager.rb +10 -10
  12. data/lib/comana/hostinspector.rb +4 -0
  13. data/lib/comana/hostinspector/pbsnodes.rb +51 -0
  14. data/lib/comana/hostinspector/ping.rb +34 -0
  15. data/lib/comana/hostselector.rb +45 -0
  16. data/lib/comana/queuesubmitter.rb +39 -64
  17. data/memo.txt +2 -0
  18. data/test/helper.rb +17 -0
  19. data/{spec → test}/locked/input_a +0 -0
  20. data/{spec → test}/locked/input_b +0 -0
  21. data/{spec → test}/locked/lock_comana/dummy +0 -0
  22. data/{spec → test}/locked_outputted/input_a +0 -0
  23. data/{spec → test}/locked_outputted/input_b +0 -0
  24. data/{spec → test}/locked_outputted/lock_comana/dummy +0 -0
  25. data/{spec → test}/locked_outputted/output +0 -0
  26. data/{spec/queuesubmitter/locked/lock_queuesubmitter → test/not_executable}/dummy +0 -0
  27. data/{spec → test}/not_started/input_a +0 -0
  28. data/{spec → test}/not_started/input_b +0 -0
  29. data/{spec → test}/outputted/input_a +0 -0
  30. data/{spec → test}/outputted/input_b +0 -0
  31. data/{spec → test}/outputted/output +0 -0
  32. data/test/pbsnodes/Br09.xml +11 -0
  33. data/test/pbsnodes/Br10.xml +2 -0
  34. data/test/pbsnodes/Ge00.xml +2 -0
  35. data/test/pbsnodes/Ge08.xml +1 -0
  36. data/test/pbsnodes/all.xml +1 -0
  37. data/{spec/queuesubmitter/unlocked → test/queuesubmitter/locked/lock_queuesubmitter}/dummy +0 -0
  38. data/test/queuesubmitter/unlocked/dummy +0 -0
  39. data/test/test_clustersetting.rb +116 -0
  40. data/test/test_computationmanager.rb +131 -0
  41. data/test/test_hostinspector_pbsnodes.rb +92 -0
  42. data/test/test_hostinspector_ping.rb +21 -0
  43. data/test/test_hostselector.rb +57 -0
  44. data/test/test_queuesubmitter.rb +214 -0
  45. metadata +92 -49
  46. data/comana.gemspec +0 -84
  47. data/dot.machineinfo +0 -14
  48. data/lib/comana/machineinfo.rb +0 -44
  49. data/spec/computationmanager_spec.rb +0 -158
  50. data/spec/machineinfo +0 -7
  51. data/spec/machineinfo_spec.rb +0 -52
  52. data/spec/queuesubmitter_spec.rb +0 -263
  53. data/spec/spec_helper.rb +0 -12
@@ -4,7 +4,7 @@
4
4
  # This class profides a framework of scientific computation.
5
5
  # Users have to redefine some methods in subclasses for various computation.
6
6
  #
7
- class ComputationManager
7
+ class Comana::ComputationManager
8
8
  class NotImplementedError < Exception; end
9
9
  class AlreadyStartedError < Exception; end
10
10
  class ExecuteError < Exception; end
@@ -47,6 +47,15 @@ class ComputationManager
47
47
  end
48
48
  end
49
49
 
50
+ # Return latest modified time of files in calc dir recursively.
51
+ # require "find"
52
+ def latest_modified_time
53
+ tmp = Dir.glob("#{@dir}/**/*").max_by do |file|
54
+ File.mtime(file)
55
+ end
56
+ File.mtime(tmp)
57
+ end
58
+
50
59
  private
51
60
 
52
61
  # Redefine in subclass, e.g.,
@@ -60,15 +69,6 @@ class ComputationManager
60
69
  raise NotImplementedError, "#{self.class}::prepare_next need to be redefined"
61
70
  end
62
71
 
63
- # Return latest modified time of files in calc dir recursively.
64
- # require "find"
65
- def latest_modified_time
66
- tmp = Dir.glob("#{@dir}/**/*").max_by do |file|
67
- File.mtime(file)
68
- end
69
- File.mtime(tmp)
70
- end
71
-
72
72
  def started?
73
73
  return true if File.exist?( "#{@dir}/#{@lockdir}" )
74
74
  return false
@@ -0,0 +1,4 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ module Comana::HostInspector; end
@@ -0,0 +1,51 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'rexml/document'
5
+ #
6
+ #
7
+ #
8
+ class Comana::HostInspector::Pbsnodes
9
+ attr_reader :name, :state, :np, :properties, :ntype, :gpus, :status
10
+
11
+ class UnknownNodeError < Exception; end
12
+
13
+ def initialize(hostname, pbs_server = nil)
14
+ @hostname = hostname
15
+ command = "pbsnodes -x #{hostname}"
16
+ command = "pbsnodes -x -s #{pbs_server} #{hostname}" if pbs_server
17
+ command = "cat test/pbsnodes/#{hostname}.xml" if $TEST
18
+ #command = "cat test/pbsnodes/#{hostname}.xml"
19
+ parse `#{command} 2> /dev/null`
20
+ end
21
+
22
+ private
23
+
24
+ def parse(str)
25
+ doc = REXML::Document.new(str)
26
+ #pp doc.elements["/Data/Node/name" ] == nil
27
+ if doc.elements["/Data/Node/name" ] == nil
28
+ raise UnknownNodeError
29
+ end
30
+
31
+ @name = doc.elements["/Data/Node/name" ].text
32
+ @state = doc.elements["/Data/Node/state" ].text
33
+ @np = doc.elements["/Data/Node/np" ].text
34
+ @properties = doc.elements["/Data/Node/properties"].text
35
+ @ntype = doc.elements["/Data/Node/ntype" ].text
36
+ @gpus = doc.elements["/Data/Node/gpus" ].text
37
+
38
+ #status
39
+ @status = {}
40
+ elem = doc.elements["/Data/Node/status"]
41
+ if elem
42
+ #doc.elements["/Data/Node/status"].text.to_s.split(",").each do |equation|
43
+ elem.text.split(",").each do |equation|
44
+ left = equation.split("=")[0]
45
+ right = equation.split("=")[1].to_s
46
+ @status[left] = right
47
+ end
48
+ end
49
+ end
50
+ end
51
+
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ #
5
+ #
6
+ #
7
+ class Comana::HostInspector::Ping
8
+ PING_MIN_INTERVAL = 1
9
+
10
+ #
11
+ def initialize(hostname)
12
+ @hostname = hostname
13
+ @alive = ping
14
+ end
15
+
16
+ #Return true if ping respond from the host.
17
+ #Return false if no ping respond from the host.
18
+ def alive?
19
+ @alive
20
+ end
21
+
22
+ private
23
+
24
+ #Try ping three times.
25
+ #Return true if at least one time responds.
26
+ #def ping3
27
+ def ping
28
+ 3.times do
29
+ return true if system("ping -c 1 -W #{PING_MIN_INTERVAL} #{@hostname} 2> /dev/null 1> /dev/null")
30
+ end
31
+ return false
32
+ end
33
+ end
34
+
@@ -0,0 +1,45 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "yaml"
5
+
6
+ #
7
+ #
8
+ #
9
+ class Comana::HostSelector
10
+ class NoEntryError < Exception; end
11
+
12
+ #Argument 'groups_hosts' should be a hash;
13
+ #the keys are group name, and the value is the hostnames of the member.
14
+ def initialize(groups_hosts)
15
+ @groups_hosts = groups_hosts
16
+ end
17
+
18
+ def self.load_file(file = Comana::ClusterSetting::DEFAULT_DATA_FILE)
19
+ #pp Comana::ClusterSetting::DEFAULT_DATA_FILE
20
+ yaml = YAML.load_file(file)
21
+ groups_hosts = {}
22
+ yaml["groups"].each do |key, val|
23
+ groups_hosts[key] = val["members"]
24
+ end
25
+ self.new(groups_hosts)
26
+ end
27
+
28
+ #Return all hosts included with sorted order.
29
+ def select_all
30
+ @groups_hosts.values.flatten.delete_if{|v| v == nil}.sort
31
+ end
32
+
33
+ #Return member hosts in indicated group.
34
+ def select_group(group)
35
+ raise NoEntryError unless @groups_hosts.keys.include? group
36
+ @groups_hosts[group]
37
+ end
38
+
39
+ #Return all groups with sorted order.
40
+ def groups
41
+ @groups_hosts.keys.sort
42
+ end
43
+
44
+ end
45
+
@@ -2,13 +2,13 @@
2
2
  # coding: utf-8
3
3
 
4
4
  require "fileutils"
5
- require "comana/computationmanager.rb"
6
- require "comana/machineinfo.rb"
5
+ #require "comana/computationmanager.rb"
6
+ #require "comana/clustersetting.rb"
7
7
 
8
8
  #
9
9
  #
10
10
  #
11
- class QueueSubmitter < ComputationManager
11
+ class Comana::QueueSubmitter < Comana::ComputationManager
12
12
  SCRIPT = "script.sh"
13
13
  PROLOGUE = "prologue_script.sh"
14
14
  EPILOGUE = "epilogue_script.sh"
@@ -19,65 +19,25 @@ class QueueSubmitter < ComputationManager
19
19
  class InvalidArgumentError < Exception; end
20
20
 
21
21
  # opts is a hash includes data belows:
22
- # "command" => executable command line written in script.
23
- # "cluster" => name of cluster.
24
- # "target" => calculation as ComputationManager subclass.
22
+ # :command => executable command line written in script.
23
+ # :cluster => name of cluster.
24
+ # :target => calculation as ComputationManager subclass.
25
25
  # Note that this is not target name, to check calculatable.
26
26
  def initialize(opts)
27
- #opts = self.class.correct_options(opts)
28
- ["target", "command", "number", "cluster"].each do |symbol|
29
- raise InitializeError, "No #{symbol} in argument 'opts'" unless opts.has_key?(symbol)
27
+ [:target, :command].each do |symbol|
28
+ raise InitializeError, "No '#{symbol}' in argument 'opts'" unless opts.has_key?(symbol)
29
+ #raise InitializeError unless opts.has_key?(symbol)
30
30
  end
31
31
 
32
- super(opts["target"].dir)
32
+ super(opts[:target].dir)
33
33
 
34
- @command = opts["command"]
35
- @cluster = opts["cluster"]
36
- @number = opts["number"]
34
+ @command = opts[:command]
35
+ @cluster = opts[:cluster]
36
+ @num_nodes = opts[:num_nodes]
37
+ @priority = opts[:priority]
37
38
  @lockdir = "lock_queuesubmitter"
38
39
  end
39
40
 
40
- ## Check and correct options given as hash, 'opts', using machineinfo.
41
- ## Return hash corrected.
42
- ## 'opts' must have keys of
43
- ## "number"
44
- ## "cluster"
45
- ## "target"
46
- ## machineinfo is a MachineInfo class instance.
47
- #def self.correct_options(opts, machineinfo)
48
- # # option analysis
49
- # ["target", "number", "cluster"].each do |symbol|
50
- # raise InitializeError, "No #{symbol} in argument 'opts'" unless opts.has_key?(symbol)
51
- # end
52
-
53
-
54
- # #unless ary.size == 1
55
- # # raise InitializeError, "Not one target indicated: #{ary.join(", ")}."
56
- # #end
57
-
58
- # #unless opts["cluster"]
59
- # # raise InvalidArgumentError,
60
- # # "-c option not set."
61
- # #end
62
-
63
- # ## Number of nodes: number, key string, or default value(1).
64
- # #if opts["number"].to_i > 0
65
- # # opts["number"] = opts["number"].to_i
66
- # #else
67
- # # number = machineinfo.get_info(opts["cluster"])[opts["number"]]
68
- # # if number
69
- # # opts["number"] = number
70
- # # else
71
- # # raise InvalidArgumentError,
72
- # # "No entry '#{opts["number"]}' in machineinfo: #{machineinfo.inspect}."
73
- # # end
74
- # #end
75
- # #opts["number"] ||= 1
76
-
77
-
78
- # opts
79
- #end
80
-
81
41
  def calculate
82
42
  # prologue
83
43
  prologue_path = "#{@dir}/#{PROLOGUE}"
@@ -94,7 +54,7 @@ class QueueSubmitter < ComputationManager
94
54
  File.open(script_path, "w") { |io| dump_script(io) }
95
55
 
96
56
  # run
97
- system("cd #{@dir}; qsub -l prologue=#{prologue_path} -l epilogue=#{epilogue_path} #{script_path}")
57
+ system("cd #{@dir}; qsub -l prologue=#{prologue_path} -l epilogue=#{epilogue_path} #{script_path} > jobid.log")
98
58
  end
99
59
 
100
60
  # Raise QueueSubmitter::PrepareNextError when called.
@@ -135,15 +95,30 @@ class QueueSubmitter < ComputationManager
135
95
  end
136
96
 
137
97
  def dump_script(io = nil)
138
- str = [
139
- "#! /bin/sh",
140
- "#PBS -N #{@dir}",
141
- "#PBS -l nodes=#{@number}:ppn=1:#{@cluster},walltime=#{WALLTIME}",
142
- "#PBS -j oe",
143
- "",
144
- "cd ${PBS_O_WORKDIR} && \\",
145
- "#{@command}",
146
- ].join("\n")
98
+ lines = []
99
+ lines << "#! /bin/sh"
100
+ lines << "#PBS -N #{@dir}"
101
+
102
+ if @num_nodes || @cluster
103
+ tmp = []
104
+ @num_nodes ||= 1
105
+ tmp << "nodes=#{@num_nodes}"
106
+ tmp << "ppn=1"
107
+ #pp @cluster
108
+ tmp << @cluster if @cluster
109
+ lines << "#PBS -l #{tmp.join(":")},walltime=#{WALLTIME}"
110
+ else
111
+ lines << "#PBS -l walltime=#{WALLTIME}"
112
+ end
113
+
114
+ lines << "#PBS -p #{@priority}" if @priority
115
+
116
+ lines << "#PBS -j oe"
117
+ lines << ""
118
+ lines << "cd ${PBS_O_WORKDIR} && \\"
119
+ lines << "#{@command}"
120
+
121
+ str = lines.join("\n")
147
122
 
148
123
  if io
149
124
  io.puts str
data/memo.txt CHANGED
@@ -4,6 +4,8 @@ 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.10
8
+
7
9
  0.0.9 release
8
10
  Change opts specification in QueueSubmitter; symbol to string
9
11
 
data/test/helper.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ require 'comana'
15
+
16
+ class Test::Unit::TestCase
17
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,11 @@
1
+ <Data>
2
+ <Node>
3
+ <name>Br09</name>
4
+ <state>down</state>
5
+ <np>1</np>
6
+ <properties>Br</properties>
7
+ <ntype>cluster</ntype>
8
+ <gpus>0</gpus>
9
+ </Node>
10
+ </Data>
11
+
@@ -0,0 +1,2 @@
1
+ <Data><Node><name>Br10</name><state>free</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><status>rectime=1368099478,varattr=,jobs=,state=free,netload=1636471502,gres=,loadave=0.00,ncpus=4,physmem=12322444kb,availmem=20402856kb,totmem=20702856kb,idletime=1389153,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Br10 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node></Data>
2
+
@@ -0,0 +1,2 @@
1
+ <Data><Node><name>Ge00</name><state>job-exclusive</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><jobs>0/6073.os.calc.atom</jobs><status>rectime=1368442164,varattr=,jobs=6073.os.calc.atom,state=free,netload=18920135352,gres=,loadave=0.63,ncpus=4,physmem=4046772kb,availmem=12143912kb,totmem=12427184kb,idletime=2697087,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge00 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node></Data>
2
+
@@ -0,0 +1 @@
1
+ pbsnodes: Unknown node MSG=cannot locate specified node
@@ -0,0 +1 @@
1
+ <Data><Node><name>Os.calc.atom</name><state>free</state><np>1</np><properties>headnode</properties><ntype>cluster</ntype><status>rectime=1368030627,varattr=,jobs=,state=free,netload=1198157106,gres=,loadave=0.27,ncpus=4,physmem=8260672kb,availmem=15844000kb,totmem=16636988kb,idletime=153,nusers=3,nsessions=113,sessions=390 23881 936 1381 2109 2431 2534 3078 26547 3858 4619 4711 5199 5214 5426 5441 5456 5471 5486 5851 5866 5875 5881 6093 6108 6123 6138 18344 6190 6205 6220 6235 6302 6623 13788 6709 12896 18148 8684 9493 12135 12530 12572 12573 12574 12575 12693 12699 12708 12709 12711 12895 12944 13813 14019 14374 15422 15440 15458 15553 16096 16111 17718 17733 17748 17763 17779 17794 17809 17824 17839 17854 18028 18043 18058 18073 18088 18103 18118 18133 18163 19893 20053 20069 20085 20100 20252 20268 20284 20300 20317 20333 20825 20842 20858 20873 20888 20903 20918 20933 21015 21030 21308 21363 23711 25816 26457 26466 27261 27325 29508 29509 31629,uname=Linux Os.calc.atom 3.0.0-16-generic-pae #28-Ubuntu SMP Fri Jan 27 19:24:01 UTC 2012 i686,opsys=linux</status><gpus>0</gpus></Node><Node><name>Dm00</name><state>down</state><np>1</np><properties>Dm</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Dm01</name><state>down</state><np>1</np><properties>Dm</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Ga00</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030621,varattr=,jobs=,state=free,netload=69851681776,gres=,loadave=0.00,ncpus=4,physmem=8121324kb,availmem=16186112kb,totmem=16501736kb,idletime=7725500,nusers=1,nsessions=3,sessions=10270 15747 20635,uname=Linux Ga00 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga01</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030623,varattr=,jobs=111.os 133.os 150.os,state=free,netload=59314173024,gres=,loadave=0.00,ncpus=4,physmem=2047500kb,availmem=10226720kb,totmem=10427912kb,idletime=13308540,nusers=1,nsessions=6,sessions=13227 14983 17853 18165 22434 22969,uname=Linux Ga01 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga02</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030622,varattr=,jobs=,state=free,netload=32766499218,gres=,loadave=0.00,ncpus=4,physmem=8121324kb,availmem=16235508kb,totmem=16501736kb,idletime=7171946,nusers=1,nsessions=4,sessions=12014 17527 23793 23842,uname=Linux Ga02 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga03</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030628,varattr=,jobs=,state=free,netload=6679686917,gres=,loadave=0.00,ncpus=4,physmem=5987316kb,availmem=13985572kb,totmem=14367728kb,idletime=358187361,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ga03 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga04</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030634,varattr=,jobs=,state=free,netload=29611034893,gres=,loadave=0.00,ncpus=4,physmem=2047500kb,availmem=10258572kb,totmem=10427912kb,idletime=1404624,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ga04 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga05</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030626,varattr=,jobs=,state=free,netload=9088442032,gres=,loadave=0.00,ncpus=4,physmem=2047500kb,availmem=10261384kb,totmem=10427912kb,idletime=1403803,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ga05 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga06</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030628,varattr=,jobs=,state=free,netload=32066540217,gres=,loadave=0.00,ncpus=4,physmem=5987316kb,availmem=14101824kb,totmem=14367728kb,idletime=8932720,nusers=1,nsessions=3,sessions=12006 17289 22060,uname=Linux Ga06 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ga07</name><state>free</state><np>1</np><properties>Ga</properties><ntype>cluster</ntype><status>rectime=1368030625,varattr=,jobs=,state=free,netload=9149709759,gres=,loadave=0.00,ncpus=4,physmem=8121324kb,availmem=16275868kb,totmem=16501736kb,idletime=14740550,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ga07 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge00</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030628,varattr=,jobs=,state=free,netload=18367671323,gres=,loadave=0.00,ncpus=4,physmem=4046772kb,availmem=12229228kb,totmem=12427184kb,idletime=2285552,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge00 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge01</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030620,varattr=,jobs=,state=free,netload=7916710860,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16314708kb,totmem=16564128kb,idletime=1405515,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge01 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge02</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030621,varattr=,jobs=,state=free,netload=7788575420,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16316144kb,totmem=16564128kb,idletime=1403473,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge02 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge03</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030626,varattr=,jobs=,state=free,netload=4163597694,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16319836kb,totmem=16564128kb,idletime=1430409,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge03 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge04</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030635,varattr=,jobs=,state=free,netload=5552599895,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16316672kb,totmem=16564128kb,idletime=1402965,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge04 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge05</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030625,varattr=,jobs=,state=free,netload=7130218246,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16320492kb,totmem=16564128kb,idletime=1402705,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge05 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge06</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030614,varattr=,jobs=,state=free,netload=13627533917,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16315984kb,totmem=16564128kb,idletime=1402526,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge06 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Ge07</name><state>free</state><np>1</np><properties>Ge</properties><ntype>cluster</ntype><status>rectime=1368030613,varattr=,jobs=,state=free,netload=9201946467,gres=,loadave=0.00,ncpus=4,physmem=8183716kb,availmem=16320620kb,totmem=16564128kb,idletime=1402269,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Ge07 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se00</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5355.os.calc.atom</jobs><status>rectime=1368030620,varattr=,jobs=5355.os.calc.atom,state=free,netload=9736407152,gres=,loadave=3.43,ncpus=4,physmem=8183720kb,availmem=11863532kb,totmem=16564132kb,idletime=1399468,nusers=1,nsessions=2,sessions=5042 5061,uname=Linux Se00 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se01</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5353.os.calc.atom</jobs><status>rectime=1368030628,varattr=,jobs=5353.os.calc.atom,state=free,netload=7376186931,gres=,loadave=2.16,ncpus=4,physmem=8183720kb,availmem=13888436kb,totmem=16564132kb,idletime=1324074,nusers=1,nsessions=2,sessions=4792 4811,uname=Linux Se01 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se02</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5371.os.calc.atom</jobs><status>rectime=1368030619,varattr=,jobs=5371.os.calc.atom,state=free,netload=8986014562,gres=,loadave=3.74,ncpus=4,physmem=8183720kb,availmem=14759572kb,totmem=16564132kb,idletime=1334092,nusers=1,nsessions=2,sessions=4885 4904,uname=Linux Se02 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se03</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5361.os.calc.atom</jobs><status>rectime=1368030614,varattr=,jobs=5361.os.calc.atom,state=free,netload=2751431505,gres=,loadave=3.05,ncpus=4,physmem=8183720kb,availmem=14508576kb,totmem=16564132kb,idletime=1333989,nusers=1,nsessions=2,sessions=4461 4480,uname=Linux Se03 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se04</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5356.os.calc.atom</jobs><status>rectime=1368030635,varattr=,jobs=5356.os.calc.atom,state=free,netload=5379625209,gres=,loadave=2.16,ncpus=4,physmem=8183720kb,availmem=11790392kb,totmem=16564132kb,idletime=1334009,nusers=1,nsessions=2,sessions=4584 4603,uname=Linux Se04 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se05</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5370.os.calc.atom</jobs><status>rectime=1368030619,varattr=,jobs=5370.os.calc.atom,state=free,netload=5699408350,gres=,loadave=1.36,ncpus=4,physmem=8183720kb,availmem=13416348kb,totmem=16564132kb,idletime=1333991,nusers=1,nsessions=2,sessions=4730 4749,uname=Linux Se05 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se06</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5363.os.calc.atom</jobs><status>rectime=1368030612,varattr=,jobs=5363.os.calc.atom,state=free,netload=2494147097,gres=,loadave=1.73,ncpus=4,physmem=8183720kb,availmem=14538196kb,totmem=16564132kb,idletime=1333984,nusers=1,nsessions=2,sessions=4298 4317,uname=Linux Se06 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se07</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5369.os.calc.atom</jobs><status>rectime=1368030618,varattr=,jobs=5369.os.calc.atom,state=free,netload=6931198579,gres=,loadave=3.92,ncpus=4,physmem=8183720kb,availmem=13950288kb,totmem=16564132kb,idletime=1333991,nusers=1,nsessions=2,sessions=4623 4642,uname=Linux Se07 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se08</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5352.os.calc.atom</jobs><status>rectime=1368030614,varattr=,jobs=5352.os.calc.atom,state=free,netload=4312193224,gres=,loadave=1.66,ncpus=4,physmem=8183720kb,availmem=14416132kb,totmem=16564132kb,idletime=1324026,nusers=1,nsessions=2,sessions=4109 4128,uname=Linux Se08 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se09</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5357.os.calc.atom</jobs><status>rectime=1368030630,varattr=,jobs=5357.os.calc.atom,state=free,netload=5165453701,gres=,loadave=2.40,ncpus=4,physmem=8183720kb,availmem=11941196kb,totmem=16564132kb,idletime=1324040,nusers=1,nsessions=2,sessions=4816 4835,uname=Linux Se09 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se10</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5373.os.calc.atom</jobs><status>rectime=1368030629,varattr=,jobs=5373.os.calc.atom,state=free,netload=5750396025,gres=,loadave=3.29,ncpus=4,physmem=8183720kb,availmem=15528716kb,totmem=16564132kb,idletime=1324037,nusers=1,nsessions=2,sessions=4659 4678,uname=Linux Se10 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se11</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5354.os.calc.atom</jobs><status>rectime=1368030612,varattr=,jobs=5354.os.calc.atom,state=free,netload=4492406234,gres=,loadave=3.97,ncpus=4,physmem=8183720kb,availmem=14660388kb,totmem=16564132kb,idletime=1324020,nusers=1,nsessions=2,sessions=4624 4643,uname=Linux Se11 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se12</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5372.os.calc.atom</jobs><status>rectime=1368030631,varattr=,jobs=5372.os.calc.atom,state=free,netload=5936157085,gres=,loadave=3.95,ncpus=4,physmem=8183720kb,availmem=14472768kb,totmem=16564132kb,idletime=1324039,nusers=1,nsessions=2,sessions=4797 4816,uname=Linux Se12 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se13</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5358.os.calc.atom</jobs><status>rectime=1368030632,varattr=,jobs=5358.os.calc.atom,state=free,netload=5314053766,gres=,loadave=3.92,ncpus=4,physmem=8183720kb,availmem=14557156kb,totmem=16564132kb,idletime=1324040,nusers=1,nsessions=2,sessions=4624 4643,uname=Linux Se13 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se14</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5366.os.calc.atom</jobs><status>rectime=1368030615,varattr=,jobs=5366.os.calc.atom,state=free,netload=6106491084,gres=,loadave=3.36,ncpus=4,physmem=8183720kb,availmem=11860388kb,totmem=16564132kb,idletime=1324023,nusers=1,nsessions=2,sessions=4712 4731,uname=Linux Se14 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se15</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5368.os.calc.atom</jobs><status>rectime=1368030617,varattr=,jobs=5368.os.calc.atom,state=free,netload=5638979565,gres=,loadave=3.79,ncpus=4,physmem=8183720kb,availmem=14491576kb,totmem=16564132kb,idletime=1324023,nusers=1,nsessions=2,sessions=4800 4819,uname=Linux Se15 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se16</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5367.os.calc.atom</jobs><status>rectime=1368030616,varattr=,jobs=5367.os.calc.atom,state=free,netload=5555901152,gres=,loadave=3.95,ncpus=4,physmem=8183720kb,availmem=11885964kb,totmem=16564132kb,idletime=1324033,nusers=1,nsessions=2,sessions=4744 4763,uname=Linux Se16 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se17</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5360.os.calc.atom</jobs><status>rectime=1368030641,varattr=,jobs=5360.os.calc.atom,state=free,netload=6303963588,gres=,loadave=2.75,ncpus=4,physmem=8183720kb,availmem=11938020kb,totmem=16564132kb,idletime=1324046,nusers=1,nsessions=2,sessions=4952 4971,uname=Linux Se17 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se18</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5365.os.calc.atom</jobs><status>rectime=1368030616,varattr=,jobs=5365.os.calc.atom,state=free,netload=6013322999,gres=,loadave=3.95,ncpus=4,physmem=8183720kb,availmem=11943572kb,totmem=16564132kb,idletime=1324018,nusers=1,nsessions=2,sessions=4955 4974,uname=Linux Se18 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se19</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5362.os.calc.atom</jobs><status>rectime=1368030607,varattr=,jobs=5362.os.calc.atom,state=free,netload=3813542995,gres=,loadave=1.40,ncpus=4,physmem=8183720kb,availmem=13469744kb,totmem=16564132kb,idletime=1324011,nusers=1,nsessions=2,sessions=4496 4515,uname=Linux Se19 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se20</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5359.os.calc.atom</jobs><status>rectime=1368030636,varattr=,jobs=5359.os.calc.atom,state=free,netload=2637240703,gres=,loadave=3.66,ncpus=4,physmem=8183720kb,availmem=13435216kb,totmem=16564132kb,idletime=1324040,nusers=1,nsessions=2,sessions=4232 4251,uname=Linux Se20 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Se21</name><state>job-exclusive</state><np>1</np><properties>Se</properties><ntype>cluster</ntype><jobs>0/5364.os.calc.atom</jobs><status>rectime=1368030614,varattr=,jobs=5364.os.calc.atom,state=free,netload=2677808969,gres=,loadave=2.22,ncpus=4,physmem=8183720kb,availmem=15021240kb,totmem=16564132kb,idletime=1324017,nusers=1,nsessions=2,sessions=4319 4338,uname=Linux Se21 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Br00</name><state>free</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><status>rectime=1368030623,varattr=,jobs=,state=free,netload=1553455155,gres=,loadave=0.00,ncpus=4,physmem=12323308kb,availmem=20394224kb,totmem=20703720kb,idletime=1320591,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Br00 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Br01</name><state>free</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><status>rectime=1368030641,varattr=,jobs=,state=free,netload=1553051810,gres=,loadave=0.00,ncpus=4,physmem=12323308kb,availmem=20396152kb,totmem=20703720kb,idletime=1320383,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Br01 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Br02</name><state>free</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><status>rectime=1368030633,varattr=,jobs=,state=free,netload=1553034711,gres=,loadave=0.00,ncpus=4,physmem=12322444kb,availmem=20403812kb,totmem=20702856kb,idletime=1320376,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Br02 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Br03</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br04</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br05</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br06</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br07</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br08</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br09</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br10</name><state>free</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><status>rectime=1368030628,varattr=,jobs=,state=free,netload=1552655743,gres=,loadave=0.00,ncpus=4,physmem=12322444kb,availmem=20403112kb,totmem=20702856kb,idletime=1320303,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Br10 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Br11</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br12</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br13</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br14</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br15</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br16</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br17</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br18</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br19</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br20</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br21</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br22</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br23</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br24</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br25</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br26</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br27</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br28</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br29</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br30</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br31</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br32</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br33</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br34</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Br35</name><state>down</state><np>1</np><properties>Br</properties><ntype>cluster</ntype><gpus>0</gpus></Node><Node><name>Kr00</name><state>free</state><np>1</np><properties>Kr</properties><ntype>cluster</ntype><status>rectime=1368030627,varattr=,jobs=,state=free,netload=3830581534,gres=,loadave=0.00,ncpus=8,physmem=16382420kb,availmem=24426956kb,totmem=24762832kb,idletime=1228492,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Kr00 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Kr01</name><state>free</state><np>1</np><properties>Kr</properties><ntype>cluster</ntype><status>rectime=1368030630,varattr=,jobs=,state=free,netload=1717186267,gres=,loadave=0.00,ncpus=8,physmem=16382420kb,availmem=24444292kb,totmem=24762832kb,idletime=1254681,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Kr01 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Kr02</name><state>free</state><np>1</np><properties>Kr</properties><ntype>cluster</ntype><status>rectime=1368030628,varattr=,jobs=,state=free,netload=6803442050,gres=,loadave=0.00,ncpus=8,physmem=16382420kb,availmem=24440432kb,totmem=24762832kb,idletime=1254677,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Kr02 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Kr03</name><state>free</state><np>1</np><properties>Kr</properties><ntype>cluster</ntype><status>rectime=1368030623,varattr=,jobs=,state=free,netload=7358379418,gres=,loadave=0.00,ncpus=8,physmem=16382420kb,availmem=24440900kb,totmem=24762832kb,idletime=1254670,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Kr03 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Kr04</name><state>free</state><np>1</np><properties>Kr</properties><ntype>cluster</ntype><status>rectime=1368030627,varattr=,jobs=,state=free,netload=1667982689,gres=,loadave=0.00,ncpus=8,physmem=16382420kb,availmem=24446604kb,totmem=24762832kb,idletime=1252839,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Kr04 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node><Node><name>Kr05</name><state>free</state><np>1</np><properties>Kr</properties><ntype>cluster</ntype><status>rectime=1368030633,varattr=,jobs=,state=free,netload=6378427822,gres=,loadave=0.00,ncpus=8,physmem=16382420kb,availmem=24439312kb,totmem=24762832kb,idletime=1254676,nusers=0,nsessions=? 0,sessions=? 0,uname=Linux Kr05 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64,opsys=linux</status><gpus>0</gpus></Node></Data>
File without changes
@@ -0,0 +1,116 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ require "fileutils"
6
+
7
+ #require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
8
+ #require "comana/clustersetting.rb"
9
+
10
+ class TC_ClusterSetting < Test::Unit::TestCase
11
+ def setup
12
+ @mi00 = Comana::ClusterSetting.new({
13
+ "pbs_server" => "P00",
14
+ "groups" => {
15
+ "A" => {
16
+ "data1" => "A-1",
17
+ "data2" => "A-2",
18
+ "members" => ["A00", "A01"]
19
+ },
20
+ "B" => {
21
+ "data1" => "B-1",
22
+ "data2" => "B-2",
23
+ "members" => ["B00", "B01", "B02"]
24
+ },
25
+ "C" => { #No member
26
+ "data1" => "A-1",
27
+ "data2" => "A-2",
28
+ },
29
+ }
30
+ })
31
+ end
32
+
33
+ def test_load_file
34
+ assert_equal("P00", @mi00.pbs_server)
35
+
36
+ data_file = "example/dot.clustersetting"
37
+ assert_nothing_raised{
38
+ Comana::ClusterSetting.load_file(data_file)
39
+ }
40
+
41
+ #context "not exist clustersetting file" do
42
+ assert_raise(Errno::ENOENT){ Comana::ClusterSetting.load_file("") }
43
+ end
44
+
45
+ #mi00 = Comana::ClusterSetting.load_file(data_file)
46
+ #mi00.groups.should == {
47
+ # "A" => {
48
+ # "data1" => "A-1",
49
+ # "data2" => "A-2",
50
+ # "members" => ["A00", "A01"]
51
+ # },
52
+ # "B" => {
53
+ # "data1" => "B-1",
54
+ # "data2" => "B-2",
55
+ # "members" => ["B00", "B01", "B02"]
56
+ # },
57
+ #}
58
+
59
+ def test_belonged_cluster
60
+ assert_equal("A" , @mi00.belonged_cluster("A00"))
61
+ assert_equal("A" , @mi00.belonged_cluster("A01"))
62
+ assert_equal("B" , @mi00.belonged_cluster("B00"))
63
+ assert_equal("B" , @mi00.belonged_cluster("B01"))
64
+ assert_equal("B" , @mi00.belonged_cluster("B02"))
65
+ assert_raise(Comana::ClusterSetting::NoEntryError){ @mi00.settings_host("NONE")}
66
+ end
67
+
68
+ def test_settings_group
69
+ assert_equal(
70
+ {
71
+ "data1" => "A-1",
72
+ "data2" => "A-2",
73
+ "members" => ["A00", "A01"]
74
+ },
75
+ @mi00.settings_group("A")
76
+ )
77
+
78
+ assert_equal(
79
+ {
80
+ "data1" => "B-1",
81
+ "data2" => "B-2",
82
+ "members" => ["B00", "B01", "B02"]
83
+ },
84
+ @mi00.settings_group("B")
85
+ )
86
+ end
87
+
88
+ def test_settings_host
89
+ assert_equal(
90
+ {
91
+ "data1" => "A-1",
92
+ "data2" => "A-2",
93
+ "members" => ["A00", "A01"]
94
+ },
95
+ @mi00.settings_host("A00")
96
+ )
97
+
98
+ assert_equal(
99
+ {
100
+ "data1" => "B-1",
101
+ "data2" => "B-2",
102
+ "members" => ["B00", "B01", "B02"]
103
+ },
104
+ @mi00.settings_host("B00")
105
+ )
106
+
107
+ #assert_equal(nil, @mi00.settings_host("NONE"))
108
+ assert_raise(Comana::ClusterSetting::NoEntryError){ @mi00.settings_host("NONE")}
109
+ end
110
+
111
+ def test_clusters
112
+ assert_equal(["A", "B", "C"], @mi00.clusters)
113
+ end
114
+
115
+ end
116
+