nera 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,12 @@
1
+ == 0.1.2
2
+ * 1 major enhancement:
3
+ * constructor of ParamLayerController now accepts String type simulator name.
4
+ * constructor of RunLayerController now accepts String type simulator name.
5
+ * RunLayerController#cancel_jobs returns an array of cancelled job ids.
6
+ * JobLayerController#cancel_jobs returns an array of cancelled job ids.
7
+ * 2 bug fixes
8
+ * require statements of NERA::Simulator classes become sooner.
9
+
1
10
  == 0.1.1
2
11
  * 1 major enhancement:
3
12
  * 2 bug fixes
data/lib/nera/nera_cui.rb CHANGED
@@ -88,7 +88,7 @@ HEADER
88
88
  elsif names[selected] == "exit"
89
89
  return :exit
90
90
  else
91
- @simulator_class = eval(names[selected])
91
+ @simulator_class = names[selected]
92
92
  return :parameter_layer
93
93
  end
94
94
  end
@@ -98,14 +98,14 @@ HEADER
98
98
 
99
99
  plc = NERA::ParameterLayerController.new( @path_db_folder, @simulator_class)
100
100
  unless plc
101
- Dialog::message("Specified simulator does not exist #{@path_db_folder}/#{@simulator_class.to_s}")
101
+ Dialog::message("Specified simulator does not exist #{@path_db_folder}/#{@simulator_class}")
102
102
  return :simulator_layer
103
103
  end
104
104
 
105
105
  $stdout.puts <<"HEADER"
106
106
  ===============================================
107
107
  --- in parameter layer ------------------------
108
- #{@path_db_folder} / #{@simulator_class.to_s}
108
+ #{@path_db_folder} / #{@simulator_class}
109
109
  ===============================================
110
110
  HEADER
111
111
 
@@ -212,14 +212,14 @@ HEADER
212
212
 
213
213
  rlc = NERA::RunLayerController.new( @path_db_folder, @simulator_class, @parameter_id)
214
214
  unless rlc
215
- Dialog::message("Table #{@path_db_folder}/#{@simulator_class.to_s}/#{@parameter_id} is not found.")
215
+ Dialog::message("Table #{@path_db_folder}/#{@simulator_class}/#{@parameter_id} is not found.")
216
216
  return :parameter_layer
217
217
  end
218
218
 
219
219
  $stdout.puts <<"HEADER"
220
220
  ===============================================
221
221
  --- in run layer ------------------------------
222
- #{@path_db_folder} / #{@simulator_class.to_s} / #{@parameter_id}
222
+ #{@path_db_folder} / #{@simulator_class} / #{@parameter_id}
223
223
  ===============================================
224
224
  HEADER
225
225
 
@@ -57,7 +57,7 @@ module NERA
57
57
  raise ArgumentError, "each element of job_ids must be an Integer" unless x.is_a?(Integer)
58
58
  end
59
59
 
60
- flag = nil
60
+ destroyed_jobids = []
61
61
  @job_records.transaction {
62
62
  job_ids.each do |jid|
63
63
  d = @job_records.destroy( jid)
@@ -75,11 +75,12 @@ module NERA
75
75
  YAML.dump( run_records.list_all, io)
76
76
  io.flush
77
77
  end
78
- flag = true
78
+ destroyed_jobids << jid
79
79
  end
80
80
  }
81
81
  dump_in_yaml
82
- return flag
82
+ destroyed_jobids = nil if destroyed_jobids.size == 0
83
+ return destroyed_jobids
83
84
  end
84
85
 
85
86
  def include_list
@@ -16,15 +16,19 @@ module NERA
16
16
  # instance of NERA::ParameterRecords
17
17
  @param_records
18
18
 
19
- def initialize( path_db_folder, sim_class)
19
+ def initialize( path_db_folder, sim_name)
20
20
  raise ArgumentError unless path_db_folder.is_a?(String)
21
- unless sim_class.is_a?(Class) and sim_class.superclass == NERA::Simulator
22
- raise ArgumentError, "#{sim_class} is not a subclass of NERA::Simulator"
23
- end
24
-
25
21
  @db_folders = NERA::DbFolders.new( path_db_folder)
26
22
  sim_records = NERA::SimulatorRecords.new( @db_folders.path_to_simulators_table)
27
- @sim_class = sim_class
23
+ found = sim_records.list.find do |rec|
24
+ rec[:name] == sim_name.to_s
25
+ end
26
+ raise "No such simulator." unless found
27
+ @sim_class = NERA::Simulator.inherited_simulators.find do |sim|
28
+ sim.to_s == sim_name.to_s
29
+ end
30
+ raise "No such simulator." unless @sim_class
31
+
28
32
  p_tab_path = @db_folders.path_to_parameters_table( @sim_class)
29
33
  @param_records = NERA::ParameterRecords.new( p_tab_path, @sim_class)
30
34
  end
@@ -20,17 +20,25 @@ module NERA
20
20
  # instance of NERA::RunRecords
21
21
  @run_records
22
22
 
23
- def initialize( path_db_folder, sim_class, param_id)
23
+ def initialize( path_db_folder, sim_name, param_id)
24
24
  raise ArgumentError unless path_db_folder.is_a?(String)
25
- unless sim_class.is_a?(Class) and sim_class.superclass == NERA::Simulator and param_id.is_a?(Integer)
26
- raise ArgumentError, "#{sim_class}, #{param_id} are not appropriate instances"
25
+
26
+ @db_folders = NERA::DbFolders.new( path_db_folder)
27
+ sim_records = NERA::SimulatorRecords.new( @db_folders.path_to_simulators_table)
28
+ found = sim_records.list.find do |rec|
29
+ rec[:name] == sim_name.to_s
27
30
  end
31
+ raise "No such simulator : #{sim_name.to_s}" unless found
32
+ sim_class = NERA::Simulator.inherited_simulators.find do |sim|
33
+ sim.to_s == sim_name.to_s
34
+ end
35
+ raise "No such simulator : #{sim_name.to_s}" unless sim_class
28
36
 
29
- @db_folders = NERA::DbFolders.new( path_db_folder)
30
37
  @sim_instance = sim_class.new
31
38
  @param_id = param_id
32
39
  param_records = NERA::ParameterRecords.new( @db_folders.path_to_parameters_table( sim_class), sim_class)
33
40
  found = param_records.find_by_id( @param_id)
41
+ raise "No such parameter : #{param_id}." unless found
34
42
  @sim_instance.class::Parameters.each do |pa|
35
43
  key = pa[0]
36
44
  if found[key]
@@ -124,6 +132,7 @@ module NERA
124
132
  end
125
133
 
126
134
  job_recs = NERA::JobRecords.new( @db_folders.path_to_jobs_table)
135
+ destroyed_jobids = []
127
136
  job_recs.transaction {
128
137
  @run_records.transaction {
129
138
  job_ids.each do |jid|
@@ -132,11 +141,13 @@ module NERA
132
141
  a = @run_records.destroy_job_id( jid)
133
142
  raise "must not happen" unless a
134
143
  FileUtils.rm( @db_folders.path_to_job_script(jid) )
144
+ destroyed_jobids << jid
135
145
  end
136
146
  }
137
147
  }
138
148
  dump_in_yaml( job_recs)
139
- return true
149
+ destroyed_jobids = nil if destroyed_jobids.size == 0
150
+ return destroyed_jobids
140
151
  end
141
152
 
142
153
  def analysis_methods
@@ -35,6 +35,14 @@ module NERA
35
35
  def path_to_sim_layer
36
36
  @db_folders.path_to_simulator_layer
37
37
  end
38
+
39
+ def get_class_by_name( sim_name)
40
+ raise ArgumentError unless sim_name.is_a?(String)
41
+ found = NERA::Simulator.inherited_simulators.find do |sim|
42
+ sim.to_s == sim_name
43
+ end
44
+ return found
45
+ end
38
46
 
39
47
  private
40
48
  def register_a_simulator( sim_klass)
data/lib/nera.rb CHANGED
@@ -22,5 +22,5 @@ require 'nera_simulator_records'
22
22
  require 'nera_remote_connector'
23
23
 
24
24
  module NERA
25
- VERSION = '0.1.1'
25
+ VERSION = '0.1.2'
26
26
  end
@@ -56,7 +56,7 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
56
56
  }
57
57
 
58
58
  f = @jlc.cancel_jobs( [1,2] )
59
- assert(f)
59
+ assert_equal([1,2], f)
60
60
  h, l = @jlc.not_finished_list_in_csv
61
61
  assert_equal( 1, l.size)
62
62
  assert_equal( 3, l[0].split(',')[0].to_i)
@@ -71,6 +71,9 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
71
71
 
72
72
  f = @jlc.cancel_jobs( [1000] )
73
73
  assert_nil( f)
74
+
75
+ f = @jlc.cancel_jobs( [2,3] )
76
+ assert_equal( [3], f)
74
77
  end
75
78
 
76
79
  def test_include_list
@@ -11,7 +11,7 @@ class TC_NERA_PARAM_LAYER_CONTROLLER < Test::Unit::TestCase
11
11
  NERA::DbFolders.create_db( @db_folder)
12
12
  @dbf = NERA::DbFolders.new( @db_folder)
13
13
  @slc = NERA::SimulatorLayerController.new( @db_folder)
14
- @plc = NERA::ParameterLayerController.new( @db_folder, Ising)
14
+ @plc = NERA::ParameterLayerController.new( @db_folder, "Ising")
15
15
  end
16
16
 
17
17
  def teardown
@@ -29,6 +29,9 @@ class TC_NERA_PARAM_LAYER_CONTROLLER < Test::Unit::TestCase
29
29
  assert_raise( ArgumentError) {
30
30
  x = NERA::ParameterLayerController.new( @dbf, "1")
31
31
  }
32
+ assert_raise( RuntimeError) {
33
+ x = NERA::ParameterLayerController.new( @db_folder, "Unknown")
34
+ }
32
35
  end
33
36
 
34
37
  def test_parameters_list_in_csv
@@ -11,9 +11,9 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
11
11
  NERA::DbFolders.create_db( @db_folder)
12
12
  @dbf = NERA::DbFolders.new( @db_folder)
13
13
  @slc = NERA::SimulatorLayerController.new( @db_folder)
14
- @plc = NERA::ParameterLayerController.new( @db_folder, Ising)
14
+ @plc = NERA::ParameterLayerController.new( @db_folder, "Ising")
15
15
  pid = @plc.create_a_new_parameter_set({:L => 32, :K => 0.01, :tmax => 1})
16
- @rlc = NERA::RunLayerController.new( @db_folder, Ising, pid)
16
+ @rlc = NERA::RunLayerController.new( @db_folder, "Ising", pid)
17
17
  end
18
18
 
19
19
  def teardown
@@ -28,12 +28,18 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
28
28
  assert_raise( ArgumentError) {
29
29
  NERA::RunLayerController.new( Temp,1, 1)
30
30
  }
31
- assert_raise( ArgumentError) {
31
+ assert_raise( RuntimeError) {
32
32
  x = NERA::RunLayerController.new( @db_folder, 1, "1")
33
33
  }
34
- assert_raise( ArgumentError) {
34
+ assert_raise( RuntimeError) {
35
35
  x = NERA::RunLayerController.new( @db_folder, "1", 1)
36
36
  }
37
+ assert_raise( RuntimeError) {
38
+ x = NERA::RunLayerController.new( @db_folder, "Unknown", 1)
39
+ }
40
+ assert_raise( RuntimeError) {
41
+ x = NERA::RunLayerController.new( @db_folder, "Ising", 2)
42
+ }
37
43
  end
38
44
 
39
45
  def test_path_to_run_layer
@@ -133,7 +139,8 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
133
139
  def test_cancel_jobs
134
140
  jids = @rlc.create_jobs(3)
135
141
  p jids
136
- @rlc.cancel_jobs( jids)
142
+ canceled = @rlc.cancel_jobs( jids)
143
+ assert_equal( jids, canceled)
137
144
  h, l = @rlc.all_runs_list_in_csv
138
145
  assert_equal( 0, l.size)
139
146
 
@@ -147,8 +154,10 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
147
154
 
148
155
  # -----------------------------
149
156
  jids = @rlc.create_jobs(3)
150
- jids.delete(4)
151
- @rlc.cancel_jobs( jids)
157
+ canceled = jids.delete(4)
158
+ canceled = @rlc.cancel_jobs( jids)
159
+ assert_equal( [5,6], canceled)
160
+ assert_nil( @rlc.cancel_jobs( [5,6]) )
152
161
  h, l = @rlc.all_runs_list_in_csv
153
162
  assert_equal( 1, l.size)
154
163
  l = NERA::JobRecords.new( @dbf.path_to_jobs_table).list_all
@@ -49,6 +49,15 @@ class TC_NERA_SIM_LAYER_CONTROLLER < Test::Unit::TestCase
49
49
  p = @slc.path_to_sim_layer
50
50
  assert_equal( @db_folder+'/', p)
51
51
  end
52
-
52
+
53
+ def test_get_class_by_name
54
+ found = @slc.get_class_by_name('Ising')
55
+ assert_equal( found, Ising)
56
+ assert_raise(ArgumentError) {
57
+ found = @slc.get_class_by_name(1)
58
+ }
59
+ found = @slc.get_class_by_name('Unknown_simulator')
60
+ assert_nil(found)
61
+ end
53
62
 
54
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nera
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yohsuke Murase
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-11 00:00:00 +09:00
12
+ date: 2009-05-18 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,7 +52,9 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: 1.8.0
54
54
  version:
55
- description: This is an application which helps you to manage a database for the Monte Carlo simulations. For the dtailed usage, see http://nera.rubyforge.com
55
+ description: |-
56
+ This is an application which helps you to manage a database for the Monte Carlo simulations.
57
+ For the dtailed usage, see http://nera.rubyforge.com
56
58
  email:
57
59
  - murase@serow.t.u-tokyo.ac.jp
58
60
  executables:
@@ -112,6 +114,8 @@ files:
112
114
  - test/test_nera_simulator_records.rb
113
115
  has_rdoc: true
114
116
  homepage: http://nera.rubyforge.com
117
+ licenses: []
118
+
115
119
  post_install_message:
116
120
  rdoc_options:
117
121
  - --main
@@ -133,9 +137,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
137
  requirements: []
134
138
 
135
139
  rubyforge_project: nera
136
- rubygems_version: 1.2.0
140
+ rubygems_version: 1.3.3
137
141
  signing_key:
138
- specification_version: 2
142
+ specification_version: 3
139
143
  summary: This is an application which helps you to manage a database for the Monte Carlo simulations
140
144
  test_files:
141
145
  - test/test_helper.rb