rbatch 1.13.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +15 -0
- data/README.ja.md +81 -49
- data/README.md +88 -63
- data/Rakefile +2 -31
- data/bin/rbatch-init +57 -32
- data/{rdocs → doc}/RBatch/Cmd.html +66 -59
- data/{rdocs → doc}/RBatch/CmdException.html +9 -3
- data/{rdocs → doc}/RBatch/CmdResult.html +40 -34
- data/{rdocs → doc}/RBatch/CommonConfig/Exception.html +9 -3
- data/{rdocs → doc}/RBatch/CommonConfig.html +22 -17
- data/{rdocs → doc}/RBatch/Config/Exception.html +9 -3
- data/{rdocs → doc}/RBatch/Config.html +21 -16
- data/{rdocs/RBatchException.html → doc/RBatch/DoubleRunCheckException.html} +33 -30
- data/doc/RBatch/DoubleRunChecker.html +277 -0
- data/{rdocs → doc}/RBatch/Log.html +134 -138
- data/doc/RBatch/RunConf/Exception.html +159 -0
- data/doc/RBatch/RunConf.html +557 -0
- data/doc/RBatch.html +655 -0
- data/doc/created.rid +9 -0
- data/{rdocs → doc}/index.html +46 -20
- data/{rdocs → doc}/lib/rbatch/cmd_rb.html +4 -2
- data/{rdocs → doc}/lib/rbatch/common_config_rb.html +2 -2
- data/{rdocs → doc}/lib/rbatch/config_rb.html +2 -2
- data/doc/lib/rbatch/double_run_checker_rb.html +56 -0
- data/{rdocs → doc}/lib/rbatch/log_rb.html +2 -2
- data/doc/lib/rbatch/run_conf_rb.html +56 -0
- data/{rdocs → doc}/lib/rbatch/version_rb.html +2 -2
- data/{rdocs → doc}/lib/rbatch_rb.html +7 -3
- data/lib/rbatch/cmd.rb +20 -23
- data/lib/rbatch/common_config.rb +2 -3
- data/lib/rbatch/config.rb +1 -2
- data/lib/rbatch/double_run_checker.rb +24 -0
- data/lib/rbatch/log.rb +37 -59
- data/lib/rbatch/run_conf.rb +109 -0
- data/lib/rbatch/version.rb +1 -1
- data/lib/rbatch.rb +37 -56
- data/spec/{cmd_test.spec → cmd_spec.rb} +6 -6
- data/spec/common_config_spec.rb +54 -0
- data/spec/{config_test.spec → config_spec.rb} +2 -1
- data/spec/double_run_checker_spec.rb +10 -0
- data/spec/{log_test.spec → log_spec.rb} +22 -22
- data/spec/rbatch_spec.rb +24 -0
- data/spec/run_conf_spec.rb +85 -0
- metadata +66 -65
- data/rdocs/RBatch.html +0 -713
- data/rdocs/created.rid +0 -7
- data/spec/rbatch_test.spec +0 -25
- data/test/cases/test_cmd.rb +0 -134
- data/test/cases/test_common_config.rb +0 -41
- data/test/cases/test_config.rb +0 -41
- data/test/cases/test_log.rb +0 -613
- data/test/mocks/PrintArgs.exe +0 -0
- data/test/mocks/win_cmd.exe +0 -0
- /data/{rdocs → doc}/images/brick.png +0 -0
- /data/{rdocs → doc}/images/brick_link.png +0 -0
- /data/{rdocs → doc}/images/bug.png +0 -0
- /data/{rdocs → doc}/images/bullet_black.png +0 -0
- /data/{rdocs → doc}/images/bullet_toggle_minus.png +0 -0
- /data/{rdocs → doc}/images/bullet_toggle_plus.png +0 -0
- /data/{rdocs → doc}/images/date.png +0 -0
- /data/{rdocs → doc}/images/find.png +0 -0
- /data/{rdocs → doc}/images/loadingAnimation.gif +0 -0
- /data/{rdocs → doc}/images/macFFBgHack.png +0 -0
- /data/{rdocs → doc}/images/package.png +0 -0
- /data/{rdocs → doc}/images/page_green.png +0 -0
- /data/{rdocs → doc}/images/page_white_text.png +0 -0
- /data/{rdocs → doc}/images/page_white_width.png +0 -0
- /data/{rdocs → doc}/images/plugin.png +0 -0
- /data/{rdocs → doc}/images/ruby.png +0 -0
- /data/{rdocs → doc}/images/tag_green.png +0 -0
- /data/{rdocs → doc}/images/wrench.png +0 -0
- /data/{rdocs → doc}/images/wrench_orange.png +0 -0
- /data/{rdocs → doc}/images/zoom.png +0 -0
- /data/{rdocs → doc}/js/darkfish.js +0 -0
- /data/{rdocs → doc}/js/jquery.js +0 -0
- /data/{rdocs → doc}/js/quicksearch.js +0 -0
- /data/{rdocs → doc}/js/thickbox-compressed.js +0 -0
- /data/{rdocs → doc}/rdoc.css +0 -0
data/lib/rbatch/log.rb
CHANGED
@@ -38,21 +38,6 @@ module RBatch
|
|
38
38
|
#
|
39
39
|
class Log
|
40
40
|
@@verbose = false
|
41
|
-
@@def_opt = {
|
42
|
-
:name => "<date>_<time>_<prog>.log",
|
43
|
-
:dir => File.join(RBatch::home_dir , "log"),
|
44
|
-
:append => true,
|
45
|
-
:level => "info",
|
46
|
-
:stdout => false,
|
47
|
-
:quiet => false,
|
48
|
-
:delete_old_log => false,
|
49
|
-
:delete_old_log_date => 7,
|
50
|
-
:send_mail => false,
|
51
|
-
:mail_to => nil,
|
52
|
-
:mail_from => "rbatch.localhost",
|
53
|
-
:mail_server_host => "localhost",
|
54
|
-
:mail_server_port => 25
|
55
|
-
}
|
56
41
|
@@log_level_map = {
|
57
42
|
"debug" => Logger::DEBUG,
|
58
43
|
"info" => Logger::INFO,
|
@@ -85,7 +70,6 @@ module RBatch
|
|
85
70
|
# - +:level+ (String) = log level. Default is "info". ["debug"|"info"|"warn"|"error"|"fatal"] .
|
86
71
|
# - +:append+ (Boolean) = appned to log or not(=overwrite). Default is ture.
|
87
72
|
# - +:stdout+ (Boolean) = output both the log file and STDOUT. Default is false.
|
88
|
-
# - +:quiet+ (Boolean) = output only logfile, don't output to STDOUT. Default is true.
|
89
73
|
# ==== Block params
|
90
74
|
# +log+ = Instance of +Logger+
|
91
75
|
# ==== Sample
|
@@ -95,37 +79,34 @@ module RBatch
|
|
95
79
|
#
|
96
80
|
def initialize(opt = nil)
|
97
81
|
# parse option
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
&& RBatch.rbatch_config["log_" + key.to_s] != nil
|
105
|
-
# use config
|
106
|
-
@opt[key] = RBatch.rbatch_config["log_" + key.to_s]
|
107
|
-
else
|
108
|
-
# use default
|
82
|
+
tmp = {}
|
83
|
+
if opt.nil?
|
84
|
+
@opt=RBatch.run_conf.clone
|
85
|
+
else
|
86
|
+
opt.each_key do |key|
|
87
|
+
tmp[("log_" + key.to_s).to_sym] = opt[key]
|
109
88
|
end
|
89
|
+
@opt=RBatch.run_conf.merge(tmp)
|
110
90
|
end
|
111
|
-
|
91
|
+
|
112
92
|
# determine log file name
|
113
93
|
@prog_base = Pathname(File.basename(RBatch.program_name)).sub_ext("").to_s
|
114
|
-
@file_name = @opt[:
|
94
|
+
@file_name = @opt[:log_name].clone
|
115
95
|
@file_name.gsub!("<date>", Time.now.strftime("%Y%m%d"))
|
116
96
|
@file_name.gsub!("<time>", Time.now.strftime("%H%M%S"))
|
117
97
|
@file_name.gsub!("<prog>", @prog_base)
|
118
|
-
@file_name.gsub!("<host>",
|
119
|
-
|
98
|
+
@file_name.gsub!("<host>", @opt[:log_hostname])
|
99
|
+
@log_dir = @opt[:log_dir].gsub("<home>",RBatch.home_dir)
|
100
|
+
path = File.join(@log_dir,@file_name)
|
120
101
|
# create Logger instance
|
121
102
|
begin
|
122
|
-
if @opt[:
|
103
|
+
if @opt[:log_append] && File.exist?(path)
|
123
104
|
@log = Logger.new(open(path,"a"))
|
124
105
|
else
|
125
106
|
@log = Logger.new(open(path,"w"))
|
126
107
|
end
|
127
108
|
rescue Errno::ENOENT => e
|
128
|
-
|
109
|
+
RBatch.journal :error, "Can not open log file - #{path}"
|
129
110
|
raise e
|
130
111
|
end
|
131
112
|
# set logger option
|
@@ -137,21 +118,18 @@ module RBatch
|
|
137
118
|
"#{head} #{msg}\n"
|
138
119
|
end
|
139
120
|
end
|
140
|
-
@log.
|
141
|
-
@log.level = @@log_level_map[@opt[:level]]
|
121
|
+
@log.level = @@log_level_map[@opt[:log_level]]
|
142
122
|
@log.formatter = formatter
|
143
|
-
if @opt[:
|
123
|
+
if @opt[:log_stdout]
|
144
124
|
# ccreate Logger instance for STDOUT
|
145
125
|
@stdout_log = Logger.new(STDOUT)
|
146
|
-
@stdout_log.
|
147
|
-
@stdout_log.level = @@log_level_map[@opt[:level]]
|
126
|
+
@stdout_log.level = @@log_level_map[@opt[:log_level]]
|
148
127
|
@stdout_log.formatter = formatter
|
149
128
|
end
|
150
|
-
|
129
|
+
RBatch.journal :info,"Start Logging. Log file: " + path
|
151
130
|
# delete old log
|
152
|
-
self.delete_old_log(@opt[:
|
131
|
+
self.delete_old_log(@opt[:log_delete_old_log_date]) if @opt[:log_delete_old_log]
|
153
132
|
# Start logging
|
154
|
-
self.info("Start Logging. (PID=#{$$.to_s})") if ! @opt[:quiet]
|
155
133
|
if block_given?
|
156
134
|
begin
|
157
135
|
yield self
|
@@ -166,54 +144,54 @@ module RBatch
|
|
166
144
|
end
|
167
145
|
|
168
146
|
def fatal(a)
|
169
|
-
@stdout_log.fatal(a) if @opt[:
|
147
|
+
@stdout_log.fatal(a) if @opt[:log_stdout]
|
170
148
|
@log.fatal(a)
|
171
|
-
send_mail(a) if @opt[:
|
149
|
+
send_mail(a) if @opt[:log_send_mail]
|
172
150
|
end
|
173
151
|
|
174
152
|
def error(a)
|
175
|
-
@stdout_log.error(a) if @opt[:
|
153
|
+
@stdout_log.error(a) if @opt[:log_stdout]
|
176
154
|
@log.error(a)
|
177
|
-
send_mail(a) if @opt[:
|
155
|
+
send_mail(a) if @opt[:log_send_mail]
|
178
156
|
end
|
179
157
|
|
180
158
|
def warn(a)
|
181
|
-
@stdout_log.warn(a) if @opt[:
|
159
|
+
@stdout_log.warn(a) if @opt[:log_stdout]
|
182
160
|
@log.warn(a)
|
183
161
|
end
|
184
162
|
|
185
163
|
def info(a)
|
186
|
-
@stdout_log.info(a) if @opt[:
|
164
|
+
@stdout_log.info(a) if @opt[:log_stdout]
|
187
165
|
@log.info(a)
|
188
166
|
end
|
189
167
|
|
190
168
|
def debug(a)
|
191
|
-
@stdout_log.debug(a) if @opt[:
|
169
|
+
@stdout_log.debug(a) if @opt[:log_stdout]
|
192
170
|
@log.debug(a)
|
193
171
|
end
|
194
172
|
|
195
173
|
def close
|
196
|
-
@stdout_log.close if @opt[:
|
174
|
+
@stdout_log.close if @opt[:log_stdout]
|
197
175
|
@log.close
|
198
176
|
end
|
199
177
|
|
200
178
|
# Delete old log files.
|
201
|
-
# If @opt[:
|
179
|
+
# If @opt[:log_name] is not include "<date>", then do nothing.
|
202
180
|
#
|
203
181
|
# ==== Params
|
204
182
|
# - +date+ (Integer): The day of leaving log files
|
205
183
|
#
|
206
184
|
def delete_old_log(date = 7)
|
207
|
-
if Dir.exists?(@
|
208
|
-
Dir::foreach(@
|
185
|
+
if Dir.exists?(@log_dir) && @opt[:log_name].include?("<date>")
|
186
|
+
Dir::foreach(@log_dir) do |file|
|
209
187
|
r = Regexp.new("^" \
|
210
|
-
+ @opt[:
|
188
|
+
+ @opt[:log_name].gsub("<prog>",@prog_base)\
|
211
189
|
.gsub("<time>","[0-2][0-9][0-5][0-9][0-5][0-9]")\
|
212
190
|
.gsub("<date>","([0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9])")\
|
213
191
|
+ "$")
|
214
192
|
if r =~ file && Date.strptime($1,"%Y%m%d") <= Date.today - date
|
215
|
-
|
216
|
-
File::delete(File.join(@
|
193
|
+
RBatch.journal :info, "Delete old log file: " + File.join(@log_dir , file)
|
194
|
+
File::delete(File.join(@log_dir , file))
|
217
195
|
end
|
218
196
|
end
|
219
197
|
end
|
@@ -224,8 +202,8 @@ module RBatch
|
|
224
202
|
# send mail
|
225
203
|
def send_mail(msg)
|
226
204
|
body = <<EOT
|
227
|
-
From: <#{@opt[:
|
228
|
-
To: <#{@opt[:
|
205
|
+
From: <#{@opt[:log_mail_from]}>
|
206
|
+
To: <#{@opt[:log_mail_to]}>
|
229
207
|
Subject: [RBatch] #{RBatch.program_name} has error
|
230
208
|
Date: #{Time::now.strftime("%a, %d %b %Y %X %z")}
|
231
209
|
Mime-Version: 1.0
|
@@ -234,8 +212,8 @@ Content-Transfer-Encoding: 7bit
|
|
234
212
|
|
235
213
|
#{msg}
|
236
214
|
EOT
|
237
|
-
Net::SMTP.start(@opt[:
|
238
|
-
smtp.send_mail(body,@opt[:
|
215
|
+
Net::SMTP.start(@opt[:log_mail_server_host],@opt[:log_mail_server_port] ) {|smtp|
|
216
|
+
smtp.send_mail(body,@opt[:log_mail_from],@opt[:log_mail_to])
|
239
217
|
}
|
240
218
|
end
|
241
219
|
end # end class
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
require 'yaml'
|
3
|
+
module RBatch
|
4
|
+
class RunConf
|
5
|
+
@opt
|
6
|
+
@yaml
|
7
|
+
attr_reader :run_conf_path,:home_dir
|
8
|
+
@@def_opt = {
|
9
|
+
:conf_dir => "<home>/conf",
|
10
|
+
:common_conf_name => "common.yaml",
|
11
|
+
:forbid_double_run => false,
|
12
|
+
:cmd_raise => false,
|
13
|
+
:cmd_timeout => 0,
|
14
|
+
:log_dir => "<home>/log",
|
15
|
+
:log_name => "<date>_<time>_<prog>.log",
|
16
|
+
:log_append => true,
|
17
|
+
:log_level => "info",
|
18
|
+
:log_stdout => false,
|
19
|
+
:log_delete_old_log => false,
|
20
|
+
:log_delete_old_log_date => 7,
|
21
|
+
:log_send_mail => false,
|
22
|
+
:log_hostname => "unknownhost",
|
23
|
+
:log_mail_to => nil,
|
24
|
+
:log_mail_from => "rbatch.localhost",
|
25
|
+
:log_mail_server_host => "localhost",
|
26
|
+
:log_mail_server_port => 25
|
27
|
+
}
|
28
|
+
def initialize(run_conf_path,home_dir)
|
29
|
+
@run_conf_path = run_conf_path
|
30
|
+
@home_dir = home_dir
|
31
|
+
reset
|
32
|
+
load
|
33
|
+
end
|
34
|
+
|
35
|
+
def reset()
|
36
|
+
@opt = @@def_opt.clone
|
37
|
+
case RUBY_PLATFORM
|
38
|
+
when /mswin|mingw/
|
39
|
+
@opt[:log_hostname] = ENV["COMPUTERNAME"] ? ENV["COMPUTERNAME"] : "unknownhost"
|
40
|
+
when /cygwin|linux/
|
41
|
+
@opt[:log_hostname] = ENV["HOSTNAME"] ? ENV["HOSTNAME"] : "unknownhost"
|
42
|
+
else
|
43
|
+
@opt[:log_hostname] = "unknownhost"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def load()
|
48
|
+
begin
|
49
|
+
@yaml = YAML::load_file(@run_conf_path)
|
50
|
+
rescue
|
51
|
+
# when run_conf does not exist, do nothing.
|
52
|
+
@yaml = false
|
53
|
+
end
|
54
|
+
if @yaml
|
55
|
+
@yaml.each_key do |key|
|
56
|
+
if @@def_opt.has_key?(key.to_sym)
|
57
|
+
@opt[key.to_sym]=@yaml[key]
|
58
|
+
else
|
59
|
+
raise RBatch::RunConf::Exception, "\"#{key}\" is not available option"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def reload()
|
66
|
+
reset
|
67
|
+
load
|
68
|
+
end
|
69
|
+
|
70
|
+
def merge!(opt)
|
71
|
+
opt.each_key do |key|
|
72
|
+
if @opt.has_key?(key)
|
73
|
+
@opt[key] = opt[key]
|
74
|
+
else
|
75
|
+
raise RBatch::RunConf::Exception, "\"#{key}\" is not available option"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def merge(opt)
|
81
|
+
tmp = @opt.clone
|
82
|
+
opt.each_key do |key|
|
83
|
+
if tmp.has_key?(key)
|
84
|
+
tmp[key] = opt[key]
|
85
|
+
else
|
86
|
+
raise RBatch::RunConf::Exception, "\"#{key}\" is not available option"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
return tmp
|
90
|
+
end
|
91
|
+
|
92
|
+
def[](key)
|
93
|
+
if @opt[key].nil?
|
94
|
+
raise RBatch::RunConf::Exception, "Value of key=\"#{key}\" is nil"
|
95
|
+
end
|
96
|
+
@opt[key]
|
97
|
+
end
|
98
|
+
|
99
|
+
def[]=(key,value)
|
100
|
+
if ! @opt.has_key?(key)
|
101
|
+
raise RBatch::RunConf::Exception, "Key=\"#{key}\" does not exist"
|
102
|
+
end
|
103
|
+
@opt[key]=value
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
class RunConf::Exception < Exception ; end
|
108
|
+
|
109
|
+
end
|
data/lib/rbatch/version.rb
CHANGED
data/lib/rbatch.rb
CHANGED
@@ -1,74 +1,55 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
|
2
|
-
require 'digest'
|
3
2
|
require 'yaml'
|
3
|
+
|
4
4
|
module RBatch
|
5
|
-
@@
|
6
|
-
@@
|
5
|
+
@@program_name = $PROGRAM_NAME
|
6
|
+
@@program_base = File.basename($PROGRAM_NAME)
|
7
|
+
@@home_dir = nil
|
8
|
+
@@run_conf_path = nil
|
9
|
+
@@run_conf = nil
|
10
|
+
@@journal_verbose = 3
|
11
|
+
@@journal_verbose_map = { :error => 1, :warn => 2, :info => 3, :debug => 4}
|
7
12
|
module_function
|
8
|
-
def program_name
|
9
|
-
def
|
10
|
-
def home_dir
|
11
|
-
def
|
12
|
-
def
|
13
|
-
def
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
case RUBY_PLATFORM
|
18
|
-
when /mswin|mingw/
|
19
|
-
@@opt[:hostname] = ENV["COMPUTERNAME"] ? ENV["COMPUTERNAME"] : "unknownhost"
|
20
|
-
when /cygwin|linux/
|
21
|
-
@@opt[:hostname] = ENV["HOSTNAME"] ? ENV["HOSTNAME"] : "unknownhost"
|
22
|
-
else
|
23
|
-
@@opt[:hostname] = "unknownhost"
|
24
|
-
end
|
25
|
-
load_rbatch_config
|
26
|
-
end
|
27
|
-
def rbatch_config_path
|
28
|
-
File.join(@@opt[:home_dir],"conf","rbatch.yaml")
|
29
|
-
end
|
30
|
-
def config_dir
|
31
|
-
File.join(RBatch.home_dir,"conf")
|
32
|
-
end
|
33
|
-
def log_dir
|
34
|
-
File.join(RBatch.home_dir,"log")
|
13
|
+
def program_name ; @@program_name ; end
|
14
|
+
def program_base ; @@program_base ; end
|
15
|
+
def home_dir ; @@home_dir ; end
|
16
|
+
def run_conf_path ; @@run_conf_path ; end
|
17
|
+
def run_conf ; @@run_conf ; end
|
18
|
+
def conf_dir ; @@run_conf[:conf_dir].gsub("<home>",@@home_dir) ; end
|
19
|
+
def log_dir ; @@run_conf[:log_dir].gsub("<home>",@@home_dir) ; end
|
20
|
+
def journal(level,str)
|
21
|
+
puts "[RBatch] " + str if @@journal_verbose_map[level] <= @@journal_verbose
|
35
22
|
end
|
36
|
-
def
|
37
|
-
if
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
23
|
+
def init
|
24
|
+
@@journal_verbose = ENV["RB_VERBOSE"].to_i if ENV["RB_VERBOSE"]
|
25
|
+
if ENV["RB_HOME"]
|
26
|
+
@@home_dir = ENV["RB_HOME"]
|
27
|
+
RBatch.journal :info,"RB_HOME : \"#{@@home_dir}\" (defined by $RB_HOME)"
|
42
28
|
else
|
43
|
-
@@
|
44
|
-
|
45
|
-
end
|
46
|
-
def double_run_check
|
47
|
-
# double run check
|
48
|
-
if ( @@rbatch_config != nil && @@rbatch_config["forbid_double_run"] )
|
49
|
-
lock_file="rbatch_lock_" + Digest::MD5.hexdigest(@@opt[:program_name])
|
50
|
-
if Dir.exists? @@opt[:tmp_dir]
|
51
|
-
Dir::foreach(@@opt[:tmp_dir]) do |f|
|
52
|
-
if (Regexp.new(lock_file) =~ f)
|
53
|
-
raise RBatchException, "Script double run is forbid about \"#{@@opt[:program_name]}\""
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
# make lockfile
|
58
|
-
Tempfile::new(lock_file,@@opt[:tmp_dir])
|
29
|
+
@@home_dir = File.join(File.dirname(@@program_name) , "..")
|
30
|
+
RBatch.journal :info,"RB_HOME : \"#{@@home_dir}\" (default)"
|
59
31
|
end
|
32
|
+
@@run_conf_path = File.join(@@home_dir,".rbatchrc")
|
33
|
+
RBatch.journal :info,"Run-Conf: \"#{@@run_conf_path}\""
|
34
|
+
|
35
|
+
@@run_conf = RunConf.new(@@run_conf_path,@@home_dir)
|
36
|
+
RBatch.journal :debug,"RBatch option : #{@@run_conf.inspect}"
|
60
37
|
end
|
61
38
|
end
|
62
39
|
|
63
|
-
# RBatch Exception
|
64
|
-
class RBatchException < Exception ; end
|
65
|
-
|
66
40
|
# main
|
41
|
+
require 'rbatch/run_conf'
|
42
|
+
require 'rbatch/double_run_checker'
|
43
|
+
|
67
44
|
RBatch::init
|
45
|
+
if ( RBatch.run_conf[:forbid_double_run] )
|
46
|
+
RBatch::DoubleRunChecker.check(File.basename(RBatch.program_name)) #raise error if check is NG
|
47
|
+
RBatch::DoubleRunChecker.make_lock_file(File.basename(RBatch.program_name))
|
48
|
+
end
|
68
49
|
|
69
50
|
require 'rbatch/log'
|
70
51
|
require 'rbatch/config'
|
71
52
|
require 'rbatch/common_config'
|
72
53
|
require 'rbatch/cmd'
|
73
54
|
|
74
|
-
RBatch
|
55
|
+
RBatch.journal :info,"Start \"#{RBatch.program_name}\" under RBatch (PID=#{$$.to_s})"
|
@@ -1,9 +1,13 @@
|
|
1
1
|
require 'tmpdir'
|
2
|
+
ENV["RB_VERBOSE"]="0"
|
2
3
|
ENV["RB_HOME"]=Dir.tmpdir
|
3
4
|
|
4
5
|
require 'rbatch'
|
5
6
|
|
6
7
|
describe RBatch::Cmd do
|
8
|
+
before :each do
|
9
|
+
RBatch.run_conf.reset
|
10
|
+
end
|
7
11
|
|
8
12
|
it "run command which status is 0" do
|
9
13
|
result = RBatch::cmd "ruby -e 'STDOUT.print 1; STDERR.print 2; exit 0;'"
|
@@ -110,18 +114,14 @@ describe RBatch::Cmd do
|
|
110
114
|
Dir::mkdir @config_dir if ! Dir.exists? @config_dir
|
111
115
|
end
|
112
116
|
describe "raise" do
|
113
|
-
before :
|
114
|
-
|
115
|
-
RBatch.load_rbatch_config
|
117
|
+
before :each do
|
118
|
+
RBatch.run_conf[:cmd_raise] = true
|
116
119
|
end
|
117
120
|
it "raise error when command status is not 0" do
|
118
121
|
expect {
|
119
122
|
RBatch::cmd "ruby -e 'exit 1;'"
|
120
123
|
}.to raise_error(RBatch::CmdException)
|
121
124
|
end
|
122
|
-
after :each do
|
123
|
-
FileUtils.rm @config_file
|
124
|
-
end
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
ENV["RB_VERBOSE"]="0"
|
3
|
+
ENV["RB_HOME"]=Dir.tmpdir
|
4
|
+
|
5
|
+
require 'rbatch'
|
6
|
+
|
7
|
+
describe RBatch::CommonConfig do
|
8
|
+
before :all do
|
9
|
+
@config_dir=File.join(Dir.tmpdir,"conf")
|
10
|
+
@config_file = File.join(@config_dir , "common.yaml")
|
11
|
+
Dir::mkdir @config_dir if ! Dir.exists? @config_dir
|
12
|
+
end
|
13
|
+
|
14
|
+
before :each do
|
15
|
+
end
|
16
|
+
|
17
|
+
after :each do
|
18
|
+
FileUtils.rm @config_file if File.exists? @config_file
|
19
|
+
end
|
20
|
+
|
21
|
+
after :all do
|
22
|
+
end
|
23
|
+
|
24
|
+
it "read config" do
|
25
|
+
open( @config_file , "w" ){|f| f.write("key: value")}
|
26
|
+
expect(RBatch.common_config["key"]).to eq "value"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "raise error when config does not exist" do
|
30
|
+
expect {
|
31
|
+
RBatch.common_config
|
32
|
+
}.to raise_error(Errno::ENOENT)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "read config twice" do
|
36
|
+
open( @config_file , "w" ){|f| f.write("key: value")}
|
37
|
+
expect(RBatch.common_config["key"]).to eq "value"
|
38
|
+
expect(RBatch.common_config["key"]).to eq "value"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "raise error when read value which key does not exist" do
|
42
|
+
open( @config_file , "w" ){|f| f.write("key: value")}
|
43
|
+
expect {
|
44
|
+
RBatch.common_config["not_exist"]
|
45
|
+
}.to raise_error(RBatch::CommonConfig::Exception)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "success when common_conf_name changed" do
|
49
|
+
conf=File.join(Dir.tmpdir,"global.yaml")
|
50
|
+
open( conf , "w" ){|f| f.write("key4: value4")}
|
51
|
+
RBatch.run_conf[:common_conf_name]="global.yaml"
|
52
|
+
expect(RBatch.common_config["key4"]).to eq "value4"
|
53
|
+
end
|
54
|
+
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'tmpdir'
|
2
|
+
ENV["RB_VERBOSE"]="0"
|
2
3
|
ENV["RB_HOME"]=Dir.tmpdir
|
3
4
|
|
4
5
|
require 'rbatch'
|
5
6
|
|
6
7
|
describe RBatch::Config do
|
7
8
|
before :all do
|
8
|
-
@config_dir=
|
9
|
+
@config_dir=File.join(Dir.tmpdir,"conf")
|
9
10
|
@config_file = File.join(@config_dir , "rspec.yaml")
|
10
11
|
Dir::mkdir @config_dir if ! Dir.exists? @config_dir
|
11
12
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'rbatch/double_run_checker'
|
2
|
+
|
3
|
+
describe RBatch::DoubleRunChecker do
|
4
|
+
it "check" do
|
5
|
+
expect{RBatch::DoubleRunChecker.check("hoge")}.to_not raise_error
|
6
|
+
RBatch::DoubleRunChecker.make_lock_file("hoge")
|
7
|
+
expect{RBatch::DoubleRunChecker.check("hoge")}.to raise_error(RBatch::DoubleRunCheckException)
|
8
|
+
expect{RBatch::DoubleRunChecker.check("bar")}.to_not raise_error
|
9
|
+
end
|
10
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'tmpdir'
|
2
|
+
ENV["RB_VERBOSE"]="0"
|
2
3
|
ENV["RB_HOME"]=Dir.tmpdir
|
3
4
|
|
4
5
|
require 'rbatch'
|
@@ -6,21 +7,20 @@ require 'rbatch'
|
|
6
7
|
describe RBatch::Log do
|
7
8
|
|
8
9
|
before :all do
|
9
|
-
@dir =
|
10
|
+
@dir = File.join(Dir.tmpdir,"log")
|
10
11
|
Dir::mkdir(@dir)if ! Dir.exists? @dir
|
11
12
|
end
|
12
13
|
|
13
14
|
before :each do
|
14
|
-
|
15
|
-
|
16
|
-
open( RBatch.rbatch_config_path , "w" ){|f| f.write(confstr)}
|
17
|
-
RBatch.load_rbatch_config
|
15
|
+
open( RBatch.run_conf_path , "w" ){|f| f.write("")}
|
16
|
+
RBatch.run_conf.reload
|
18
17
|
end
|
19
18
|
|
20
19
|
after :each do
|
21
20
|
Dir::foreach(@dir) do |f|
|
22
21
|
File::delete(File.join(@dir , f)) if ! (/\.+$/ =~ f)
|
23
22
|
end
|
23
|
+
FileUtils.rm(RBatch.run_conf_path) if File.exist?(RBatch.run_conf_path)
|
24
24
|
end
|
25
25
|
|
26
26
|
it "is run" do
|
@@ -271,8 +271,8 @@ describe RBatch::Log do
|
|
271
271
|
describe "option by config" do
|
272
272
|
it "change log name" do
|
273
273
|
confstr = "log_name: name1.log"
|
274
|
-
open( RBatch.
|
275
|
-
RBatch.
|
274
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
275
|
+
RBatch.run_conf.reload
|
276
276
|
RBatch::Log.new() do | log |
|
277
277
|
log.info("hoge")
|
278
278
|
end
|
@@ -284,8 +284,8 @@ describe RBatch::Log do
|
|
284
284
|
it "change log dir" do
|
285
285
|
@tmp = Dir.tmpdir
|
286
286
|
confstr = "log_name: c.log\nlog_dir: " + @tmp
|
287
|
-
open( RBatch.
|
288
|
-
RBatch.
|
287
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
288
|
+
RBatch.run_conf.reload
|
289
289
|
RBatch::Log.new({:name => "c.log", :dir=> @tmp }) do | log |
|
290
290
|
log.info("hoge")
|
291
291
|
end
|
@@ -295,9 +295,9 @@ describe RBatch::Log do
|
|
295
295
|
end
|
296
296
|
|
297
297
|
it "is append mode" do
|
298
|
-
confstr = "log_name: a.log\
|
299
|
-
open( RBatch.
|
300
|
-
RBatch.
|
298
|
+
confstr = "log_name: a.log\nlog_append: true"
|
299
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
300
|
+
RBatch.run_conf.reload
|
301
301
|
RBatch::Log.new() do | log |
|
302
302
|
log.info("line1")
|
303
303
|
end
|
@@ -313,8 +313,8 @@ describe RBatch::Log do
|
|
313
313
|
|
314
314
|
it "is overwrite mode" do
|
315
315
|
confstr = "log_name: a.log\nlog_append: false"
|
316
|
-
open( RBatch.
|
317
|
-
RBatch.
|
316
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
317
|
+
RBatch.run_conf.reload
|
318
318
|
RBatch::Log.new() do | log |
|
319
319
|
log.info("line1")
|
320
320
|
end
|
@@ -330,8 +330,8 @@ describe RBatch::Log do
|
|
330
330
|
|
331
331
|
it "is warn level" do
|
332
332
|
confstr = "log_name: a.log\nlog_level: warn"
|
333
|
-
open( RBatch.
|
334
|
-
RBatch.
|
333
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
334
|
+
RBatch.run_conf.reload
|
335
335
|
RBatch::Log.new() do | log |
|
336
336
|
log.debug("test_debug")
|
337
337
|
log.info("test_info")
|
@@ -351,8 +351,8 @@ describe RBatch::Log do
|
|
351
351
|
|
352
352
|
it "delete old log file which name include <date>" do
|
353
353
|
confstr = "log_delete_old_log: true"
|
354
|
-
open( RBatch.
|
355
|
-
RBatch.
|
354
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
355
|
+
RBatch.run_conf.reload
|
356
356
|
loglist = [*0..20].map do |day|
|
357
357
|
File.join(@dir , (Date.today - day).strftime("%Y%m%d") + "_test_delete.log")
|
358
358
|
end
|
@@ -371,8 +371,8 @@ describe RBatch::Log do
|
|
371
371
|
describe "option by both argument and config" do
|
372
372
|
it "is prior to argument than config" do
|
373
373
|
confstr = "log_name: a.log"
|
374
|
-
open( RBatch.
|
375
|
-
RBatch.
|
374
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
375
|
+
RBatch.run_conf.reload
|
376
376
|
RBatch::Log.new({:name => "b.log"}) do | log |
|
377
377
|
log.info("hoge")
|
378
378
|
end
|
@@ -417,8 +417,8 @@ describe RBatch::Log do
|
|
417
417
|
|
418
418
|
it "option by config" do
|
419
419
|
confstr = "log_name: e.log"
|
420
|
-
open( RBatch.
|
421
|
-
RBatch.
|
420
|
+
open( RBatch.run_conf_path , "a" ){|f| f.write(confstr)}
|
421
|
+
RBatch.run_conf.reload
|
422
422
|
log = RBatch::Log.new()
|
423
423
|
log.info("hoge")
|
424
424
|
log.close
|