nera 0.2.0 → 0.2.1
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/History.txt +7 -0
- data/lib/nera/nera_cui.rb +22 -1
- data/lib/nera/nera_db_folders.rb +5 -1
- data/lib/nera/nera_job_layer_controller.rb +35 -0
- data/lib/nera/nera_job_script.rb +3 -3
- data/lib/nera/nera_simulator_layer_controller.rb +5 -0
- data/lib/nera.rb +1 -1
- data/test/test_nera_db_folders.rb +5 -0
- data/test/test_nera_job_layer_controller.rb +38 -1
- data/test/test_nera_simulator_layer_controller.rb +5 -0
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== 0.2.1
|
2
|
+
* 1 major enhancement:
|
3
|
+
* "show log" menu is implemented into the CUI program.
|
4
|
+
* functions of local execution are implemented.
|
5
|
+
* 2 bug fixes
|
6
|
+
* fixes a bug which happens when a job script is created without any parameter.
|
7
|
+
|
1
8
|
== 0.2.0
|
2
9
|
* 1 major enhancement:
|
3
10
|
* logger is implemented. Log informatios are stored in "db_name"/Tables/logfile.txt.
|
data/lib/nera/nera_cui.rb
CHANGED
@@ -74,7 +74,7 @@ HEADER
|
|
74
74
|
r[:name]
|
75
75
|
end
|
76
76
|
names.unshift("go to Jobs layer")
|
77
|
-
names += ["exit"]
|
77
|
+
names += ["show logs", "exit"]
|
78
78
|
selected = 0
|
79
79
|
Dir.chdir( slc.path_to_sim_layer) {
|
80
80
|
selected = Dialog::select_one_or_return_string( names, "Select a simulator.")
|
@@ -85,6 +85,9 @@ HEADER
|
|
85
85
|
}
|
86
86
|
if names[selected] == "go to Jobs layer"
|
87
87
|
return :job_layer
|
88
|
+
elsif names[selected] == "show logs"
|
89
|
+
system "less #{slc.path_to_log_file}"
|
90
|
+
return :simulator_layer
|
88
91
|
elsif names[selected] == "exit"
|
89
92
|
return :exit
|
90
93
|
else
|
@@ -351,6 +354,7 @@ HEADER
|
|
351
354
|
action_list = ["Back to simulator layer",
|
352
355
|
"Show job infos",
|
353
356
|
"Cancel jobs",
|
357
|
+
"Execute jobs now",
|
354
358
|
"Show host infos",
|
355
359
|
"Upload jobs",
|
356
360
|
"Download data",
|
@@ -391,6 +395,23 @@ HEADER
|
|
391
395
|
Dialog::message("Cancellation failed.")
|
392
396
|
end
|
393
397
|
end
|
398
|
+
return :job_layer
|
399
|
+
when "Execute jobs now"
|
400
|
+
header,list = jlc.not_finished_list_in_csv
|
401
|
+
list.unshift("Cancel")
|
402
|
+
selected_jobs = Dialog::select_many( list, header).map do |num|
|
403
|
+
list[num].split(',')[0].to_i
|
404
|
+
end
|
405
|
+
return :job_layer if selected_jobs.include?(0)
|
406
|
+
|
407
|
+
system "top"
|
408
|
+
if Dialog::ask("Will you execute now?", true)
|
409
|
+
flag = jlc.execute_jobs_now( selected_jobs)
|
410
|
+
Dialog::message("The following jobs are successfully submitted.\n#{flag.join(', ')}") if flag
|
411
|
+
non_submitted = selected_jobs - flag.to_a
|
412
|
+
Dialog::message("Warning! The following jobs are not submitted.\n#{non_submitted.join(', ')}") if non_submitted.size > 0
|
413
|
+
end
|
414
|
+
|
394
415
|
return :job_layer
|
395
416
|
when "Show host infos"
|
396
417
|
h_list = ["Cancel", "All"] + rc.hostnames
|
data/lib/nera/nera_db_folders.rb
CHANGED
@@ -37,7 +37,7 @@ module NERA
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# logger instance
|
40
|
-
@logger = Logger.new(
|
40
|
+
@logger = Logger.new( path_to_log_file, 8)
|
41
41
|
@logger.level = Logger::INFO
|
42
42
|
end
|
43
43
|
|
@@ -238,6 +238,10 @@ module NERA
|
|
238
238
|
return @db_folder + "Tables/hosts.yml"
|
239
239
|
end
|
240
240
|
|
241
|
+
def path_to_log_file
|
242
|
+
return @db_folder + "Tables/logfile.txt"
|
243
|
+
end
|
244
|
+
|
241
245
|
end
|
242
246
|
end
|
243
247
|
|
@@ -91,6 +91,41 @@ module NERA
|
|
91
91
|
return destroyed_jobids
|
92
92
|
end
|
93
93
|
|
94
|
+
def execute_jobs_now( job_ids)
|
95
|
+
unless job_ids.is_a?(Array)
|
96
|
+
raise ArgumentError, "job_ids must be an Array."
|
97
|
+
end
|
98
|
+
job_ids.each do |x|
|
99
|
+
raise ArgumentError, "each element of job_ids must be an Integer" unless x.is_a?(Integer)
|
100
|
+
end
|
101
|
+
|
102
|
+
submitted_jobs = []
|
103
|
+
@job_records.transaction {
|
104
|
+
jids = []
|
105
|
+
job_ids.uniq.each do |jid|
|
106
|
+
jids << jid if @job_records.find_by_id(jid)
|
107
|
+
end
|
108
|
+
return nil if jids.size == 0
|
109
|
+
|
110
|
+
jids.each do |jid|
|
111
|
+
js_path = File.expand_path( @db_folders.path_to_job_script(jid) )
|
112
|
+
FileUtils.chmod(0744, js_path)
|
113
|
+
next if File.directory?( @db_folders.path_to_include_layer+File.basename( js_path).sub(/\.sh$/,'') ) or File.exist?( @db_folders.path_to_include_layer + File.basename( js_path).sub(/\.sh$/,'.tar.bz2'))
|
114
|
+
Dir.chdir( @db_folders.path_to_include_layer) {
|
115
|
+
system "nohup #{js_path} &"
|
116
|
+
submitted_jobs << jid
|
117
|
+
}
|
118
|
+
@job_records.update_to_state_submitted( jid, "localhost")
|
119
|
+
@db_folders.logger.info( self.class.to_s) {
|
120
|
+
"submitted a job (jobid:#{jid}) to localhost"
|
121
|
+
}
|
122
|
+
end
|
123
|
+
}
|
124
|
+
submitted_jobs = nil if submitted_jobs.size == 0
|
125
|
+
return submitted_jobs
|
126
|
+
end
|
127
|
+
|
128
|
+
|
94
129
|
def include_list
|
95
130
|
list = @db_folders.search_include_files
|
96
131
|
list.map! do |path|
|
data/lib/nera/nera_job_script.rb
CHANGED
@@ -112,9 +112,9 @@ BODY
|
|
112
112
|
unless sim_inst.kind_of?(NERA::Simulator)
|
113
113
|
raise ArgumentError, "Simulation_Instance must be a subclass of NERA::Simulator."
|
114
114
|
else
|
115
|
-
if sim_inst.param == {}
|
116
|
-
|
117
|
-
end
|
115
|
+
# if sim_inst.param == {}
|
116
|
+
# raise ArgumentError, "@param in Simulation_Instance must be set a parameter."
|
117
|
+
# end
|
118
118
|
end
|
119
119
|
unless run_stat.is_a?(Array)
|
120
120
|
raise ArgumentError, "Run_Status must be an Array."
|
data/lib/nera.rb
CHANGED
@@ -210,6 +210,11 @@ 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_path_to_log_file
|
214
|
+
path = @dbf.path_to_log_file
|
215
|
+
assert_equal( @db_folder + "/Tables/logfile.txt", path)
|
216
|
+
end
|
217
|
+
|
213
218
|
def test_logger
|
214
219
|
@dbf.logger.info("controller") do "test_message" end
|
215
220
|
assert( File.exist?( @db_folder+"/Tables/logfile.txt") )
|
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/test_helper'
|
|
4
4
|
class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
5
5
|
|
6
6
|
def setup
|
7
|
-
@testdir = '
|
7
|
+
@testdir = 'test_job_controller'
|
8
8
|
FileUtils.mkdir(@testdir)
|
9
9
|
FileUtils.chdir(@testdir)
|
10
10
|
@db_folder = "nera_db"
|
@@ -87,6 +87,43 @@ class TC_NERA_JOB_LAYER_CONTROLLER < Test::Unit::TestCase
|
|
87
87
|
|
88
88
|
end
|
89
89
|
|
90
|
+
def test_execute_jobs_now
|
91
|
+
assert_raise( ArgumentError) {
|
92
|
+
@jlc.execute_jobs_now(1)
|
93
|
+
}
|
94
|
+
|
95
|
+
logp = @db_folder+'/Tables/logfile.txt'
|
96
|
+
s1 = File.open(logp,'r').readlines.size
|
97
|
+
f = @jlc.execute_jobs_now( [1,2] )
|
98
|
+
assert_equal([1,2], f)
|
99
|
+
h, l = @jlc.not_finished_list_in_csv
|
100
|
+
assert_equal( 3, l.size)
|
101
|
+
assert_equal( "submitted", l[0].split(',')[1].strip)
|
102
|
+
assert_equal( "localhost", l[0].split(',')[-1].strip)
|
103
|
+
assert_equal( "submitted", l[1].split(',')[1].strip)
|
104
|
+
assert_equal( "localhost", l[1].split(',')[-1].strip)
|
105
|
+
s2 = File.open(logp,'r').readlines.size
|
106
|
+
assert_equal( s1+2, s2)
|
107
|
+
|
108
|
+
sleep 2
|
109
|
+
l = @jlc.include_list
|
110
|
+
assert_equal( 2, l.size)
|
111
|
+
|
112
|
+
f = @jlc.execute_jobs_now( [1,2] )
|
113
|
+
assert_nil( f)
|
114
|
+
s2 = File.open(logp,'r').readlines.size
|
115
|
+
assert_equal( s1+2, s2)
|
116
|
+
|
117
|
+
f = @jlc.execute_jobs_now( [2,3] )
|
118
|
+
assert_equal([3], f)
|
119
|
+
s3 = File.open(logp,'r').readlines.size
|
120
|
+
assert_equal( s2+1, s3)
|
121
|
+
sleep 2
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
|
90
127
|
def test_include_list
|
91
128
|
l = @jlc.include_list
|
92
129
|
assert_equal( 0, l.size)
|
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.2.
|
4
|
+
version: 0.2.1
|
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-
|
12
|
+
date: 2009-05-25 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|