nera 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/lib/nera/nera_database.rb +26 -2
- data/lib/nera/nera_db_folders.rb +13 -0
- data/lib/nera/nera_job_layer_controller.rb +30 -26
- data/lib/nera/nera_job_records.rb +5 -0
- data/lib/nera/nera_parameter_layer_controller.rb +20 -15
- data/lib/nera/nera_parameter_records.rb +18 -6
- data/lib/nera/nera_remote_connector.rb +50 -20
- data/lib/nera/nera_run_layer_controller.rb +26 -16
- data/lib/nera/nera_run_records.rb +11 -2
- data/lib/nera/nera_simulator_layer_controller.rb +4 -10
- data/lib/nera/nera_simulator_records.rb +8 -0
- data/lib/nera.rb +1 -1
- data/test/test_nera_database.rb +63 -1
- data/test/test_nera_db_folders.rb +8 -0
- data/test/test_nera_job_layer_controller.rb +22 -0
- data/test/test_nera_job_records.rb +13 -0
- data/test/test_nera_parameter_layer_controller.rb +16 -0
- data/test/test_nera_parameter_records.rb +69 -7
- data/test/test_nera_remote_connector.rb +25 -0
- data/test/test_nera_run_layer_controller.rb +27 -0
- data/test/test_nera_run_records.rb +56 -2
- data/test/test_nera_simulator_records.rb +29 -0
- metadata +2 -2
@@ -24,11 +24,20 @@ module NERA
|
|
24
24
|
attr_accessor :keys
|
25
25
|
|
26
26
|
# run record
|
27
|
-
def initialize( table_file)
|
27
|
+
def initialize( table_file, param_recs, param_id)
|
28
|
+
raise ArgumentError unless param_recs.is_a?( NERA::ParameterRecords) and param_id.is_a?(Integer)
|
29
|
+
|
28
30
|
@keys = ATTRIBUTES.map do |k| k[0] end
|
29
|
-
@db = NERA::Database.new( table_file)
|
31
|
+
@db = NERA::Database.new( table_file, param_id)
|
32
|
+
@db.add_observer( param_recs)
|
30
33
|
end
|
31
34
|
|
35
|
+
# argument is the path to runs.yml
|
36
|
+
def set_yaml_file( yaml_path)
|
37
|
+
@db.set_yaml_file( yaml_path)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
32
41
|
def self.create_table(table_file)
|
33
42
|
NERA::Database.create_table( table_file)
|
34
43
|
end
|
@@ -17,6 +17,7 @@ module NERA
|
|
17
17
|
@db_folders = NERA::DbFolders.new( path_db_folds)
|
18
18
|
table_path = @db_folders.path_to_simulators_table
|
19
19
|
@sim_records = NERA::SimulatorRecords.new(table_path)
|
20
|
+
@sim_records.set_yaml_file( @db_folders.path_to_simulators_yaml )
|
20
21
|
|
21
22
|
NERA::Simulator.inherited_simulators.each do |sim|
|
22
23
|
next if list.find do |rec| rec[:name] == sim.to_s end
|
@@ -55,20 +56,13 @@ module NERA
|
|
55
56
|
path = @db_folders.path_to_parameters_table( sim_klass)
|
56
57
|
c = NERA::ParameterRecords.create_table( path, sim_klass)
|
57
58
|
raise "The file #{path} already exists." unless c
|
59
|
+
@db_folders.logger.info(self.class.to_s) {
|
60
|
+
"registered the simulator (#{sim_klass.to_s})"
|
61
|
+
}
|
58
62
|
}
|
59
|
-
dump_in_yaml
|
60
63
|
return a
|
61
64
|
end
|
62
65
|
|
63
|
-
private
|
64
|
-
def dump_in_yaml
|
65
|
-
ymlpath = @db_folders.path_to_simulators_yaml
|
66
|
-
File.open( ymlpath, 'w') do |io|
|
67
|
-
YAML::dump( @sim_records.list, io)
|
68
|
-
io.flush
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
66
|
end
|
73
67
|
|
74
68
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'nera_database'
|
2
2
|
require 'nera_simulator'
|
3
|
+
require 'observer'
|
3
4
|
|
4
5
|
module NERA
|
5
6
|
|
@@ -17,6 +18,11 @@ module NERA
|
|
17
18
|
@db = NERA::Database.new( db_file)
|
18
19
|
end
|
19
20
|
|
21
|
+
# argument is the path to simulators.yml
|
22
|
+
def set_yaml_file( yaml_path)
|
23
|
+
@db.set_yaml_file( yaml_path)
|
24
|
+
end
|
25
|
+
|
20
26
|
# if file already exists, returns false
|
21
27
|
def self.create_table( db_file)
|
22
28
|
NERA::Database.create_table( db_file)
|
@@ -69,6 +75,8 @@ module NERA
|
|
69
75
|
@db.update( rec)
|
70
76
|
end
|
71
77
|
|
78
|
+
alias :update :touch
|
79
|
+
|
72
80
|
def destroy( id)
|
73
81
|
raise ArgumentError unless id.is_a?(Integer)
|
74
82
|
@db.destroy(id)
|
data/lib/nera.rb
CHANGED
data/test/test_nera_database.rb
CHANGED
@@ -8,7 +8,7 @@ class TC_NERA_DB < Test::Unit::TestCase
|
|
8
8
|
FileUtils.chdir(@test_dir)
|
9
9
|
@path_to_db = "./testdb"
|
10
10
|
NERA::Database.create_table( @path_to_db)
|
11
|
-
@db = NERA::Database.new( @path_to_db)
|
11
|
+
@db = NERA::Database.new( @path_to_db, 'arg')
|
12
12
|
end
|
13
13
|
|
14
14
|
def teardown
|
@@ -20,6 +20,68 @@ class TC_NERA_DB < Test::Unit::TestCase
|
|
20
20
|
assert_raise( RuntimeError ) { ( NERA::Database.new("Unknown") ) }
|
21
21
|
end
|
22
22
|
|
23
|
+
def test_observable
|
24
|
+
a = 'a'
|
25
|
+
def a.update( arg)
|
26
|
+
upcase!
|
27
|
+
end
|
28
|
+
@db.add_observer( a)
|
29
|
+
record = { :key1 => 3, :key2 => 3.0}
|
30
|
+
@db.add( record)
|
31
|
+
assert_equal( 'A', a)
|
32
|
+
|
33
|
+
a.downcase!
|
34
|
+
rec = @db.find_by_id(1)
|
35
|
+
assert_equal( 'a', a)
|
36
|
+
rec[:key3] = 4.0
|
37
|
+
@db.update( rec)
|
38
|
+
assert_equal( 'A', a)
|
39
|
+
|
40
|
+
a.downcase!
|
41
|
+
@db.destroy(1)
|
42
|
+
assert_equal( 'A', a)
|
43
|
+
|
44
|
+
a.downcase!
|
45
|
+
@db.transaction do
|
46
|
+
@db.add(record)
|
47
|
+
assert_equal( 'a', a)
|
48
|
+
@db.destroy( 2)
|
49
|
+
assert_equal( 'a', a)
|
50
|
+
end
|
51
|
+
assert_equal( 'A', a)
|
52
|
+
|
53
|
+
a.downcase!
|
54
|
+
assert_raise(RuntimeError) {
|
55
|
+
@db.transaction do
|
56
|
+
@db.add( {:key1 => 99, :key2 => 2} )
|
57
|
+
raise
|
58
|
+
end
|
59
|
+
}
|
60
|
+
assert_equal( 'a', a)
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_set_yaml_file
|
65
|
+
@db.set_yaml_file('rec.yml')
|
66
|
+
|
67
|
+
record = { :key1 => 3, :key2 => 3.0}
|
68
|
+
@db.add( record)
|
69
|
+
assert( File.exist?('rec.yml') )
|
70
|
+
loaded = YAML.load( File.open('rec.yml','r') )
|
71
|
+
rec2 = record.dup
|
72
|
+
rec2[:id] = 1
|
73
|
+
assert_equal( rec2, loaded[0])
|
74
|
+
|
75
|
+
assert_raise(RuntimeError) {
|
76
|
+
@db.transaction do
|
77
|
+
@db.add( {:key1 => 99, :key2 => 2} )
|
78
|
+
raise
|
79
|
+
end
|
80
|
+
}
|
81
|
+
loaded2 = YAML.load( File.open('rec.yml','r') )
|
82
|
+
assert_equal( loaded, loaded2)
|
83
|
+
end
|
84
|
+
|
23
85
|
def test_create_table
|
24
86
|
assert_nil( NERA::Database.create_table( @path_to_db) )
|
25
87
|
end
|
@@ -210,5 +210,13 @@ class TC_NERA_DB_FOLDERS < Test::Unit::TestCase
|
|
210
210
|
assert_equal( @db_folder+"/Tables/hosts.yml",p)
|
211
211
|
end
|
212
212
|
|
213
|
+
def test_logger
|
214
|
+
@dbf.logger.info("controller") do "test_message" end
|
215
|
+
assert( File.exist?( @db_folder+"/Tables/logfile.txt") )
|
216
|
+
last_line = File.open( @db_folder+"/Tables/logfile.txt", 'r').readlines[-1]
|
217
|
+
assert( last_line =~ /^I,/)
|
218
|
+
assert( last_line =~ /controller: test_message$/)
|
219
|
+
end
|
220
|
+
|
213
221
|
end
|
214
222
|
|
@@ -55,11 +55,16 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
55
55
|
@jlc.cancel_jobs(1)
|
56
56
|
}
|
57
57
|
|
58
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
59
|
+
s1 = File.open(logp,'r').readlines.size
|
58
60
|
f = @jlc.cancel_jobs( [1,2] )
|
59
61
|
assert_equal([1,2], f)
|
60
62
|
h, l = @jlc.not_finished_list_in_csv
|
61
63
|
assert_equal( 1, l.size)
|
62
64
|
assert_equal( 3, l[0].split(',')[0].to_i)
|
65
|
+
s2 = File.open(logp,'r').readlines.size
|
66
|
+
assert_equal( s1+2, s2)
|
67
|
+
|
63
68
|
|
64
69
|
flag = File.exist?( @dbf.path_to_job_script(1))
|
65
70
|
assert_equal( false, flag)
|
@@ -71,9 +76,15 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
71
76
|
|
72
77
|
f = @jlc.cancel_jobs( [1000] )
|
73
78
|
assert_nil( f)
|
79
|
+
s3 = File.open(logp,'r').readlines.size
|
80
|
+
assert_equal( s2, s3)
|
81
|
+
|
74
82
|
|
75
83
|
f = @jlc.cancel_jobs( [2,3] )
|
76
84
|
assert_equal( [3], f)
|
85
|
+
s4 = File.open(logp,'r').readlines.size
|
86
|
+
assert_equal( s3+1, s4)
|
87
|
+
|
77
88
|
end
|
78
89
|
|
79
90
|
def test_include_list
|
@@ -93,9 +104,15 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
93
104
|
def test_include
|
94
105
|
prepare_zipped_file
|
95
106
|
fname = "j000001.tar.bz2"
|
107
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
108
|
+
s1 = File.open(logp,'r').readlines.size
|
109
|
+
|
96
110
|
@jlc.include(fname)
|
97
111
|
f = FileTest.exist?(fname)
|
98
112
|
assert_equal( false, f)
|
113
|
+
s2 = File.open(logp,'r').readlines.size
|
114
|
+
assert_equal( s1+1, s2)
|
115
|
+
|
99
116
|
count = 0
|
100
117
|
File.open( @dbf.path_to_finished_jobs_file, 'r') do |io|
|
101
118
|
YAML.load_documents( io) do |doc|
|
@@ -112,6 +129,9 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
112
129
|
|
113
130
|
def test_include_all
|
114
131
|
prepare_zipped_file
|
132
|
+
|
133
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
134
|
+
s1 = File.open(logp,'r').readlines.size
|
115
135
|
@jlc.include_all
|
116
136
|
a = Dir.glob( @dbf.path_to_include_layer + "*" )
|
117
137
|
assert_equal( [], a)
|
@@ -119,6 +139,8 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
119
139
|
assert_equal( [], l)
|
120
140
|
h, l = @rlc.not_finished_jobs_list_in_csv
|
121
141
|
assert_equal( [], l)
|
142
|
+
s2 = File.open(logp,'r').readlines.size
|
143
|
+
assert_equal( s1+3, s2)
|
122
144
|
end
|
123
145
|
|
124
146
|
def prepare_zipped_file
|
@@ -27,6 +27,19 @@ class TC_NERA_JOB_RECS < Test::Unit::TestCase
|
|
27
27
|
assert_nil( f)
|
28
28
|
end
|
29
29
|
|
30
|
+
def test_set_yaml_file
|
31
|
+
@db.set_yaml_file( 'jobs.yml')
|
32
|
+
assert( ! File.exist?( 'jobs.yml') )
|
33
|
+
|
34
|
+
given_id = @db.add( Ising,5,3,4 )
|
35
|
+
assert( File.exist?( 'jobs.yml') )
|
36
|
+
loaded = YAML.load( File.open('jobs.yml','r') )
|
37
|
+
|
38
|
+
given_id = @db.add( XY,4,2,5 )
|
39
|
+
loaded2 = YAML.load( File.open('jobs.yml','r') )
|
40
|
+
assert( loaded.size < loaded2.size )
|
41
|
+
end
|
42
|
+
|
30
43
|
def test_keys
|
31
44
|
k = [ :id,:state,:simulator,:parameter_id,:run_id,
|
32
45
|
:number_of_runs,:created_at,:updated_at,:host_name ]
|
@@ -93,8 +93,12 @@ class TC_NERA_PARAM_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_create_a_new_parameter_set
|
96
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
97
|
+
s1 = File.open(logp,'r').readlines.size
|
96
98
|
f = @plc.create_a_new_parameter_set( {:L => 32, :K => 0.01, :tmax => 1} )
|
97
99
|
assert_equal( 1, f)
|
100
|
+
s2 = File.open(logp,'r').readlines.size
|
101
|
+
assert_equal( s1+1, s2)
|
98
102
|
f = @plc.create_a_new_parameter_set( {:L => 64, :K => 0.02} )
|
99
103
|
assert_equal( 2, f)
|
100
104
|
f = @plc.create_a_new_parameter_set( {:L => 96, :tmax => 3} )
|
@@ -120,8 +124,12 @@ class TC_NERA_PARAM_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
120
124
|
|
121
125
|
def test_move_a_parameter_set_into_trashbox
|
122
126
|
add_three
|
127
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
128
|
+
s1 = File.open(logp,'r').readlines.size
|
123
129
|
f = @plc.move_a_parameter_set_into_trashbox(2)
|
124
130
|
assert_equal( true, f)
|
131
|
+
s2 = File.open(logp,'r').readlines.size
|
132
|
+
assert_equal( s1+1,s2)
|
125
133
|
header, list = @plc.parameters_list_in_csv
|
126
134
|
assert_equal( 2, list.size)
|
127
135
|
f = @plc.move_a_parameter_set_into_trashbox(2)
|
@@ -148,8 +156,12 @@ class TC_NERA_PARAM_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
148
156
|
add_three
|
149
157
|
h_org, l_org = @plc.parameters_list_in_csv
|
150
158
|
f = @plc.move_a_parameter_set_into_trashbox(2)
|
159
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
160
|
+
s1 = File.open(logp,'r').readlines.size
|
151
161
|
f = @plc.revert_a_parameter_set_in_trashbox(2)
|
152
162
|
assert(f)
|
163
|
+
s2 = File.open(logp,'r').readlines.size
|
164
|
+
assert_equal( s1+1, s2)
|
153
165
|
h2, l2 = @plc.parameters_list_in_csv
|
154
166
|
assert_equal( l_org, l2)
|
155
167
|
h3, l3 = @plc.trashbox_parameter_list_in_csv
|
@@ -169,8 +181,12 @@ class TC_NERA_PARAM_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
169
181
|
add_three
|
170
182
|
h_org, l_org = @plc.parameters_list_in_csv
|
171
183
|
@plc.move_a_parameter_set_into_trashbox(2)
|
184
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
185
|
+
s1 = File.open(logp,'r').readlines.size
|
172
186
|
s = @plc.delete_a_parameter_set(2)
|
173
187
|
assert(s)
|
188
|
+
s2 = File.open(logp,'r').readlines.size
|
189
|
+
assert_equal( s1+1, s2)
|
174
190
|
ht, lt = @plc.trashbox_parameter_list_in_csv
|
175
191
|
assert_equal( [], lt)
|
176
192
|
|
@@ -7,9 +7,13 @@ class TC_NERA_PARAM_RECS < Test::Unit::TestCase
|
|
7
7
|
@testdir = 'test_sim_recs'
|
8
8
|
FileUtils.mkdir(@testdir)
|
9
9
|
FileUtils.chdir(@testdir)
|
10
|
-
@
|
10
|
+
@path_to_db_sim = 'sim_recs_table.marshal'
|
11
|
+
@path_to_db = 'param_recs_table.marshal'
|
12
|
+
NERA::SimulatorRecords.create_table( @path_to_db_sim)
|
13
|
+
@s_db = NERA::SimulatorRecords.new( @path_to_db_sim)
|
14
|
+
id = @s_db.add(Ising)
|
11
15
|
NERA::ParameterRecords.create_table( @path_to_db, Ising)
|
12
|
-
@db = NERA::ParameterRecords.new( @path_to_db,
|
16
|
+
@db = NERA::ParameterRecords.new( @path_to_db, @s_db, id)
|
13
17
|
end
|
14
18
|
|
15
19
|
def teardown
|
@@ -18,14 +22,17 @@ class TC_NERA_PARAM_RECS < Test::Unit::TestCase
|
|
18
22
|
end
|
19
23
|
|
20
24
|
def test_initialize
|
21
|
-
assert_raise(
|
22
|
-
NERA::ParameterRecords.new('unknown_file', Ising)
|
25
|
+
assert_raise( ArgumentError) {
|
26
|
+
NERA::ParameterRecords.new('unknown_file', Ising, "1")
|
27
|
+
}
|
28
|
+
assert_raise( ArgumentError) {
|
29
|
+
NERA::ParameterRecords.new('unknown_file', Ising, 1)
|
23
30
|
}
|
24
31
|
assert_raise( ArgumentError) {
|
25
|
-
NERA::ParameterRecords.new( @path_to_db, XY)
|
32
|
+
NERA::ParameterRecords.new( @path_to_db, XY, 1)
|
26
33
|
}
|
27
34
|
assert_raise( ArgumentError) {
|
28
|
-
NERA::ParameterRecords.new(@path_to_db, Temp)
|
35
|
+
NERA::ParameterRecords.new(@path_to_db, Temp, 1)
|
29
36
|
}
|
30
37
|
end
|
31
38
|
|
@@ -42,6 +49,46 @@ class TC_NERA_PARAM_RECS < Test::Unit::TestCase
|
|
42
49
|
}
|
43
50
|
end
|
44
51
|
|
52
|
+
def test_observer
|
53
|
+
@s_db.add(XY)
|
54
|
+
|
55
|
+
d1 = @s_db.list[0][:updated_at]
|
56
|
+
dx1 = @s_db.list[1][:updated_at]
|
57
|
+
sleep 2
|
58
|
+
param1 = { :L => 32, :K => 0.22, :tmax => 512 }
|
59
|
+
f = @db.add( param1)
|
60
|
+
d2 = @s_db.list[0][:updated_at]
|
61
|
+
dx2 = @s_db.list[1][:updated_at]
|
62
|
+
assert( d1 < d2)
|
63
|
+
assert_equal( dx1, dx2)
|
64
|
+
|
65
|
+
sleep 2
|
66
|
+
@db.transaction do
|
67
|
+
@db.update_to_state_trashbox(1)
|
68
|
+
d3 = @s_db.list[0][:updated_at]
|
69
|
+
assert_equal( d2, d3)
|
70
|
+
end
|
71
|
+
d4 = @s_db.list[0][:updated_at]
|
72
|
+
dx3 = @s_db.list[1][:updated_at]
|
73
|
+
assert( d2 < d4)
|
74
|
+
assert_equal( dx1, dx3)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_set_yaml_file
|
78
|
+
@db.set_yaml_file( 'parameters.yml')
|
79
|
+
assert( ! File.exist?( 'parameters.yml') )
|
80
|
+
|
81
|
+
param1 = { :L => 32, :K => 0.22, :tmax => 512 }
|
82
|
+
f = @db.add( param1)
|
83
|
+
assert( File.exist?( 'parameters.yml') )
|
84
|
+
loaded = YAML.load( File.open('parameters.yml','r') )
|
85
|
+
|
86
|
+
sleep 2
|
87
|
+
@db.touch(f)
|
88
|
+
loaded2 = YAML.load( File.open('parameters.yml','r') )
|
89
|
+
assert( loaded[0][:updated_at] < loaded2[0][:updated_at] )
|
90
|
+
end
|
91
|
+
|
45
92
|
def test_keys
|
46
93
|
assert_equal( [:id,:created_at,:updated_at,:in_trashbox?,:L,:K,:tmax], @db.keys)
|
47
94
|
end
|
@@ -232,7 +279,7 @@ class TC_NERA_PARAM_RECS < Test::Unit::TestCase
|
|
232
279
|
def test_touch
|
233
280
|
add_three
|
234
281
|
a = @db.find_by_id(1)
|
235
|
-
sleep
|
282
|
+
sleep 2
|
236
283
|
f = @db.touch( 1)
|
237
284
|
assert_equal(true, f)
|
238
285
|
b = @db.find_by_id(1)
|
@@ -244,6 +291,21 @@ class TC_NERA_PARAM_RECS < Test::Unit::TestCase
|
|
244
291
|
assert_nil( f)
|
245
292
|
end
|
246
293
|
|
294
|
+
def test_update
|
295
|
+
add_three
|
296
|
+
a = @db.find_by_id(1)
|
297
|
+
sleep 2
|
298
|
+
f = @db.update( 1)
|
299
|
+
assert_equal(true, f)
|
300
|
+
b = @db.find_by_id(1)
|
301
|
+
assert( a[:updated_at] < b[:updated_at] )
|
302
|
+
b[:updated_at] = a[:updated_at]
|
303
|
+
assert_equal( a, b)
|
304
|
+
|
305
|
+
f = @db.update(500)
|
306
|
+
assert_nil( f)
|
307
|
+
end
|
308
|
+
|
247
309
|
def test_destroy
|
248
310
|
add_three
|
249
311
|
@db.update_to_state_trashbox(3)
|
@@ -68,17 +68,27 @@ class TC_NERA_RM_CONNECTOR < Test::Unit::TestCase
|
|
68
68
|
@rc.transfer( [1,2], 1)
|
69
69
|
}
|
70
70
|
|
71
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
72
|
+
s1 = File.open(logp,'r').readlines.size
|
71
73
|
ret = @rc.transfer( [999,1000], "localhost")
|
72
74
|
assert_equal( :no_such_jobs, ret)
|
75
|
+
s2 = File.open(logp,'r').readlines.size
|
76
|
+
assert_equal( s1, s2)
|
77
|
+
|
73
78
|
|
74
79
|
ret = @rc.transfer( [1,2], "unknown_host")
|
75
80
|
assert_equal( :connection_failed, ret)
|
76
81
|
|
77
82
|
ret = @rc.transfer( [1], "unconnectable")
|
78
83
|
assert_equal( :connection_failed, ret)
|
84
|
+
s3 = File.open(logp,'r').readlines.size
|
85
|
+
assert_equal( s2+1, s3)
|
79
86
|
|
80
87
|
ret = @rc.transfer( [1,2], "localhost")
|
81
88
|
assert_equal( :succeeded, ret)
|
89
|
+
s3 = File.open(logp,'r').readlines.size
|
90
|
+
assert_equal( s2+3, s3)
|
91
|
+
|
82
92
|
h,l = @jlc.not_finished_list_in_csv
|
83
93
|
stat = l[0].split(',')[1].strip
|
84
94
|
assert_equal( :copied.to_s, stat)
|
@@ -120,11 +130,17 @@ class TC_NERA_RM_CONNECTOR < Test::Unit::TestCase
|
|
120
130
|
ret = @rc.submit( [1,2], "unknown_host")
|
121
131
|
assert_equal( :connection_failed, ret)
|
122
132
|
|
133
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
134
|
+
s1 = File.open(logp,'r').readlines.size
|
123
135
|
ret = @rc.submit( [1], "unconnectable")
|
124
136
|
assert_equal( :connection_failed, ret)
|
137
|
+
s2 = File.open(logp,'r').readlines.size
|
138
|
+
assert_equal( s1+1, s2)
|
125
139
|
|
126
140
|
ret = @rc.submit( [1,2], "localhost_submittable")
|
127
141
|
assert_equal( :succeeded, ret)
|
142
|
+
s2 = File.open(logp,'r').readlines.size
|
143
|
+
assert_equal( s1+3, s2)
|
128
144
|
|
129
145
|
h,l = @jlc.not_finished_list_in_csv
|
130
146
|
stat = l[0].split(',')[1].strip
|
@@ -198,17 +214,26 @@ class TC_NERA_RM_CONNECTOR < Test::Unit::TestCase
|
|
198
214
|
ret = @rc.download( ["j000001.tar.bz2"], "unknown_host")
|
199
215
|
assert_equal( :connection_failed, ret)
|
200
216
|
|
217
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
218
|
+
s1 = File.open(logp,'r').readlines.size
|
201
219
|
ret = @rc.download( ["j000001.tar.bz2"], "unconnectable")
|
202
220
|
assert_equal( :connection_failed, ret)
|
221
|
+
s2 = File.open(logp,'r').readlines.size
|
222
|
+
assert_equal( s1+1,s2)
|
203
223
|
|
204
224
|
ret = @rc.download( ["j000001.tar.bz2"], "localhost_submittable")
|
205
225
|
assert_equal( [], ret)
|
226
|
+
s2 = File.open(logp,'r').readlines.size
|
227
|
+
assert_equal( s1+1,s2)
|
206
228
|
|
207
229
|
ret = @rc.submit( [1,2], "localhost_submittable")
|
208
230
|
sleep 3 # wait for completion
|
209
231
|
downloadable = @rc.check_completion("localhost_submittable")
|
210
232
|
ret = @rc.download( downloadable, "localhost_submittable")
|
211
233
|
assert_equal( ["j000001.tar.bz2", "j000002.tar.bz2"], ret)
|
234
|
+
s2 = File.open(logp,'r').readlines.size
|
235
|
+
assert_equal( s1+5,s2)
|
236
|
+
|
212
237
|
|
213
238
|
downloadable = @rc.check_completion("localhost_submittable")
|
214
239
|
assert_equal( downloadable, [])
|
@@ -73,11 +73,16 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def test_create_jobs
|
76
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
77
|
+
s1 = File.open(logp,'r').readlines.size
|
78
|
+
|
76
79
|
jid = @rlc.create_jobs(1)
|
77
80
|
header, list = @rlc.all_runs_list_in_csv
|
78
81
|
assert_equal( 1, list.size)
|
79
82
|
assert_equal( [1], jid)
|
80
83
|
assert( list[0].split(', ')[3].to_i > 0) # check job id
|
84
|
+
s2 = File.open(logp,'r').readlines.size
|
85
|
+
assert_equal( s1+1,s2)
|
81
86
|
|
82
87
|
jobs_table = NERA::JobRecords.new( @dbf.path_to_jobs_table)
|
83
88
|
l = jobs_table.list_all
|
@@ -87,6 +92,9 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
87
92
|
|
88
93
|
# -------------------------------------
|
89
94
|
jid = @rlc.create_jobs(3)
|
95
|
+
s3 = File.open(logp,'r').readlines.size
|
96
|
+
assert_equal( s2+3,s3)
|
97
|
+
|
90
98
|
header, list = @rlc.all_runs_list_in_csv
|
91
99
|
assert_equal( 4, list.size)
|
92
100
|
assert_equal( [2,3,4], jid)
|
@@ -107,6 +115,9 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
107
115
|
header, list = @rlc.all_runs_list_in_csv
|
108
116
|
assert_equal( 8, list.size)
|
109
117
|
assert_equal( [5,6], jid)
|
118
|
+
s4 = File.open(logp,'r').readlines.size
|
119
|
+
assert_equal( s3+2,s4)
|
120
|
+
|
110
121
|
|
111
122
|
jobs_table = NERA::JobRecords.new( @dbf.path_to_jobs_table)
|
112
123
|
l = jobs_table.list_all
|
@@ -139,10 +150,15 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
139
150
|
def test_cancel_jobs
|
140
151
|
jids = @rlc.create_jobs(3)
|
141
152
|
p jids
|
153
|
+
|
154
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
155
|
+
s1 = File.open(logp,'r').readlines.size
|
142
156
|
canceled = @rlc.cancel_jobs( jids)
|
143
157
|
assert_equal( jids, canceled)
|
144
158
|
h, l = @rlc.all_runs_list_in_csv
|
145
159
|
assert_equal( 0, l.size)
|
160
|
+
s2 = File.open(logp,'r').readlines.size
|
161
|
+
assert_equal( s1+3, s2)
|
146
162
|
|
147
163
|
l = NERA::JobRecords.new( @dbf.path_to_jobs_table).list_all
|
148
164
|
assert_equal( 0, l.size)
|
@@ -165,16 +181,27 @@ class TC_NERA_RUN_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
165
181
|
end
|
166
182
|
|
167
183
|
def test_analyze
|
184
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
185
|
+
s1 = File.open(logp,'r').readlines.size
|
186
|
+
|
168
187
|
@rlc.analyze( "analyze_test1")
|
169
188
|
assert( FileTest.exist?( @dbf.path_to_run_layer(Ising,1) + "test1") )
|
189
|
+
s2 = File.open(logp,'r').readlines.size
|
190
|
+
assert_equal( s1+1, s2)
|
170
191
|
|
171
192
|
assert_nil( @rlc.analyze( "hoge") )
|
172
193
|
end
|
173
194
|
|
174
195
|
def test_analyze_all
|
196
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
197
|
+
s1 = File.open(logp,'r').readlines.size
|
198
|
+
|
175
199
|
@rlc.analyze_all
|
176
200
|
assert( FileTest.exist?( @dbf.path_to_run_layer(Ising,1) + "test1") )
|
177
201
|
assert( FileTest.exist?( @dbf.path_to_run_layer(Ising,1) + "test2") )
|
202
|
+
s2 = File.open(logp,'r').readlines.size
|
203
|
+
assert_equal( s1+2, s2)
|
204
|
+
|
178
205
|
end
|
179
206
|
|
180
207
|
end
|
@@ -8,8 +8,20 @@ class TC_NERA_RUN_RECORDS < Test::Unit::TestCase
|
|
8
8
|
FileUtils.mkdir( @testdir)
|
9
9
|
FileUtils.chdir( @testdir)
|
10
10
|
@table_file = 'run_recs.pstore'
|
11
|
+
|
12
|
+
@path_to_db_sim = 'sim_recs_table.marshal'
|
13
|
+
@path_to_db_param = 'param_recs_table.marshal'
|
14
|
+
NERA::SimulatorRecords.create_table( @path_to_db_sim)
|
15
|
+
@s_recs = NERA::SimulatorRecords.new( @path_to_db_sim)
|
16
|
+
id = @s_recs.add( Ising)
|
17
|
+
NERA::ParameterRecords.create_table( @path_to_db_param, Ising)
|
18
|
+
@p_recs = NERA::ParameterRecords.new( @path_to_db_param, @s_recs, id)
|
19
|
+
param1 = { :L => 32, :K => 0.22, :tmax => 512 }
|
20
|
+
f = @p_recs.add( param1)
|
21
|
+
|
22
|
+
|
11
23
|
NERA::RunRecords.create_table( @table_file)
|
12
|
-
@rrecs = NERA::RunRecords.new( @table_file)
|
24
|
+
@rrecs = NERA::RunRecords.new( @table_file, @p_recs, f)
|
13
25
|
end
|
14
26
|
|
15
27
|
def teardown
|
@@ -19,10 +31,52 @@ class TC_NERA_RUN_RECORDS < Test::Unit::TestCase
|
|
19
31
|
|
20
32
|
def test_initialize
|
21
33
|
assert_raise( RuntimeError) {
|
22
|
-
NERA::RunRecords.new( 'unknown')
|
34
|
+
NERA::RunRecords.new( 'unknown', @p_recs, 1)
|
35
|
+
}
|
36
|
+
assert_raise( ArgumentError) {
|
37
|
+
NERA::RunRecords.new( @table_file, Ising, 1)
|
38
|
+
}
|
39
|
+
assert_raise( ArgumentError) {
|
40
|
+
NERA::RunRecords.new( @table_file, @p_recs, '1')
|
23
41
|
}
|
24
42
|
end
|
25
43
|
|
44
|
+
def test_observer
|
45
|
+
@s_recs.add(XY)
|
46
|
+
@p_recs.add( { :L => 64, :K => 0.25, :tmax => 512 })
|
47
|
+
|
48
|
+
da1 = @s_recs.list[0][:updated_at]
|
49
|
+
db1 = @s_recs.list[1][:updated_at]
|
50
|
+
dc1 = @p_recs.list_all[0][:updated_at]
|
51
|
+
dd1 = @p_recs.list_all[1][:updated_at]
|
52
|
+
sleep 2
|
53
|
+
|
54
|
+
@rrecs.add(1)
|
55
|
+
de1 = @s_recs.list[0][:updated_at]
|
56
|
+
df1 = @s_recs.list[1][:updated_at]
|
57
|
+
dg1 = @p_recs.list_all[0][:updated_at]
|
58
|
+
dh1 = @p_recs.list_all[1][:updated_at]
|
59
|
+
assert( da1 < de1)
|
60
|
+
assert( dc1 < dg1)
|
61
|
+
assert_equal( db1, df1)
|
62
|
+
assert_equal( dd1, dh1)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_set_yaml_file
|
66
|
+
@rrecs.set_yaml_file( 'runs.yml')
|
67
|
+
assert( ! File.exist?( 'runs.yml') )
|
68
|
+
|
69
|
+
@rrecs.add( 1)
|
70
|
+
assert( File.exist?( 'runs.yml') )
|
71
|
+
loaded = YAML.load( File.open('runs.yml','r') )
|
72
|
+
|
73
|
+
sleep 2
|
74
|
+
@rrecs.add(1)
|
75
|
+
loaded2 = YAML.load( File.open('runs.yml','r') )
|
76
|
+
assert( loaded.size < loaded2.size )
|
77
|
+
end
|
78
|
+
|
79
|
+
|
26
80
|
def test_create_a_new_table
|
27
81
|
n = NERA::RunRecords.create_table( @table_file)
|
28
82
|
assert_nil(n)
|