super-test 1.0.9
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.
- checksums.yaml +7 -0
- data/CHANGE.txt +9 -0
- data/README.txt +13 -0
- data/bin/idb +19 -0
- data/bin/ii +113 -0
- data/bin/istart_mock +36 -0
- data/bin/istop_mock +16 -0
- data/bin/kk +181 -0
- data/bin/rubyatp +42 -0
- data/bin/start_mock +36 -0
- data/bin/stop_mock +16 -0
- data/bin/xgo +45 -0
- data/conf/conf.rb +11 -0
- data/conf/db03.yml +31 -0
- data/conf/db13.yml +37 -0
- data/conf/db19.yml +33 -0
- data/conf/online.yml +32 -0
- data/conf/super_test.yml +40 -0
- data/conf/system.yml +26 -0
- data/conf/sz00.yml +31 -0
- data/conf/sz06.yml +34 -0
- data/conf/wise00.yml +11 -0
- data/data/case.house +0 -0
- data/data/char.house +0 -0
- data/data/images/Bluehills.jpg +0 -0
- data/data/images/Sunset.jpg +0 -0
- data/data/images/Waterlilies.jpg +0 -0
- data/data/images/Winter.jpg +0 -0
- data/data/query.house +18595 -0
- data/data/user.house +8 -0
- data/lib/action/module/check_action.rb +58 -0
- data/lib/action/module/cnnt_action.rb +161 -0
- data/lib/action/module/datacenter_action.rb +48 -0
- data/lib/action/module/http_pack_helper.rb +163 -0
- data/lib/action/module/httpserver_action.rb +297 -0
- data/lib/action/module/inc.rb +21 -0
- data/lib/action/module/mcpack_action.rb +57 -0
- data/lib/action/module/sql_action.rb +84 -0
- data/lib/action/module/ssh_action.rb +37 -0
- data/lib/action/system/user_action.rb +180 -0
- data/lib/common/appium_helper.rb +217 -0
- data/lib/common/atp_helper.rb +74 -0
- data/lib/common/atp_report.rb +344 -0
- data/lib/common/data_house.rb +405 -0
- data/lib/common/data_model.rb +87 -0
- data/lib/common/http/assert_helper.rb +343 -0
- data/lib/common/http/fix_hpricot.rb +118 -0
- data/lib/common/http/html_helper.rb +362 -0
- data/lib/common/http/http_helper.rb +469 -0
- data/lib/common/http/multipart.rb +81 -0
- data/lib/common/isandbox_helper.rb +195 -0
- data/lib/common/json_helper.rb +43 -0
- data/lib/common/mock_helper.rb +168 -0
- data/lib/common/mtop_helper.rb +141 -0
- data/lib/common/myconf_helper.rb +49 -0
- data/lib/common/mylog_helper.rb +77 -0
- data/lib/common/pairwise.rb +121 -0
- data/lib/common/query_house.rb +89 -0
- data/lib/common/report_helper.rb +97 -0
- data/lib/common/robot_helper.rb +85 -0
- data/lib/common/socket/check.rb +325 -0
- data/lib/common/socket/conf_modifier.rb +149 -0
- data/lib/common/socket/context.rb +55 -0
- data/lib/common/socket/data.rb +392 -0
- data/lib/common/socket/data_helper.rb +41 -0
- data/lib/common/socket/env.rb +317 -0
- data/lib/common/socket/inc.rb +24 -0
- data/lib/common/socket/log.rb +213 -0
- data/lib/common/socket/log4s.rb +58 -0
- data/lib/common/socket/log_helper.rb +332 -0
- data/lib/common/socket/my_sql.rb +77 -0
- data/lib/common/socket/net.rb +74 -0
- data/lib/common/socket/network.rb +115 -0
- data/lib/common/socket/rlib/conf_modifier.rb +130 -0
- data/lib/common/socket/rlib/data_helper.rb +33 -0
- data/lib/common/socket/rlib/log_helper.rb +303 -0
- data/lib/common/socket/rlib/process_helper.rb +91 -0
- data/lib/common/socket/stub.rb +276 -0
- data/lib/common/socket/util.rb +266 -0
- data/lib/patterns/inc.rb +10 -0
- data/lib/patterns/mc_base_pattern.rb +474 -0
- data/lib/patterns/some_pattern.rb +145 -0
- data/lib/super_test.rb +114 -0
- data/log/super_test.log +0 -0
- data/log/super_test.log.wf +0 -0
- data/test/cover_me.rb +6 -0
- data/tool/jenny +0 -0
- data/tool/mcsend/mcsend2 +0 -0
- data/tool/mcsend/mcsend2_shead +0 -0
- data/tool/mcserver/conf/mcserver.conf +77 -0
- data/tool/mcserver/conf/mcserverauthip +17 -0
- data/tool/mcserver/mcserver +0 -0
- data/tool/mcserver/mcserver_trans +0 -0
- data/tool/mysql +0 -0
- data/tool/net/mcsend/mcsend +0 -0
- data/tool/net/mcsend/mcsend_trans +0 -0
- data/tool/net/mcsend/nshead.data +7 -0
- data/tool/net/mcsend/res_nshead.data +7 -0
- data/tool/net/my_client/my_client +0 -0
- data/tool/net/tsclient/client.tcl +205 -0
- data/tool/others/kk +190 -0
- data/tool/others/rubyatp +42 -0
- data/tool/others/supertest_install.sh +34 -0
- data/tool/trip/idb +0 -0
- data/tool/ts-agent/nshead.bft +12 -0
- data/tool/ts-agent/server.conf +10 -0
- data/tool/ts-agent/server.tcl +376 -0
- metadata +275 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
require 'log4r'
|
5
|
+
|
6
|
+
# === 功能:
|
7
|
+
# 使用$log对象实现所有的写日志的功能
|
8
|
+
# === Example:
|
9
|
+
# Log4s::set_level "debug"
|
10
|
+
# $log.debug "test deb"
|
11
|
+
# $log.info "test info"
|
12
|
+
# $log.warn "test warn"
|
13
|
+
# $log.error "test error"
|
14
|
+
# $log.fatal "test fatal"
|
15
|
+
module Log4s
|
16
|
+
include Log4r
|
17
|
+
LOG_ROOT = File.join(File.dirname(__FILE__), '../../log/')
|
18
|
+
|
19
|
+
#第一步,配置log
|
20
|
+
log = Logger.new "mylog"
|
21
|
+
f = PatternFormatter.new(:pattern => "%5l %d %m")
|
22
|
+
file = FileOutputter.new('fileOutputter', :filename => "#{LOG_ROOT}mtest.log",:trunc => false)
|
23
|
+
file.only_at DEBUG,INFO
|
24
|
+
file.formatter = f
|
25
|
+
log.add file
|
26
|
+
|
27
|
+
file_wf = FileOutputter.new('fileOutputter', :filename => "#{LOG_ROOT}mtest.log.wf",:trunc => false)
|
28
|
+
file_wf.only_at WARN,ERROR,FATAL
|
29
|
+
file_wf.formatter = f
|
30
|
+
log.add file_wf
|
31
|
+
$log = log
|
32
|
+
|
33
|
+
def self.set_level(level)
|
34
|
+
case level.downcase
|
35
|
+
when "debug"
|
36
|
+
$log.level = DEBUG
|
37
|
+
when "info"
|
38
|
+
$log.level = INFO
|
39
|
+
when "warn"
|
40
|
+
$log.level = WARN
|
41
|
+
when "error"
|
42
|
+
$log.level = ERROR
|
43
|
+
when "fatal"
|
44
|
+
$log.level = FATAL
|
45
|
+
else
|
46
|
+
raise "bad log level"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
if __FILE__ == $0
|
52
|
+
Log4s::set_level "debug"
|
53
|
+
$log.debug "test deb"
|
54
|
+
$log.info "test info"
|
55
|
+
$log.warn "test warn"
|
56
|
+
$log.error "test error"
|
57
|
+
$log.fatal "test fatal"
|
58
|
+
end
|
@@ -0,0 +1,332 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
LOG_LEVEL=["DEBUG", "NOTICE", "WARNING", "FATAL"]
|
4
|
+
|
5
|
+
#===========================================================
|
6
|
+
#class for scan local log file
|
7
|
+
#support log level : ["DEBUG", "NOTICE", "WARNING", "FATAL"]
|
8
|
+
#===========================================================
|
9
|
+
|
10
|
+
class LogHelper
|
11
|
+
|
12
|
+
# ===功能
|
13
|
+
#get the total lines of the log file
|
14
|
+
# ===参数
|
15
|
+
#params
|
16
|
+
#log_path: logfile path
|
17
|
+
#log_name: logfile name
|
18
|
+
#return: the total lines of the log file
|
19
|
+
# ===example
|
20
|
+
# LogHelper.get_lines logpath, "log1"
|
21
|
+
def LogHelper.get_lines(log_path, log_name)
|
22
|
+
log_file = log_path + "/" + log_name
|
23
|
+
|
24
|
+
#param check
|
25
|
+
if File::exists?(log_file) && File::file?(log_file) then
|
26
|
+
File.open(log_file) do |f|
|
27
|
+
lines = f.readlines.size
|
28
|
+
return lines
|
29
|
+
end
|
30
|
+
else
|
31
|
+
raise "logfile #{log_file} not exists or is not a regular file"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
# ===功能
|
37
|
+
#get the last n lines's contents of the log file
|
38
|
+
# ===参数
|
39
|
+
#param
|
40
|
+
#log_path
|
41
|
+
#log_name
|
42
|
+
#start_lines: from which line we search the log content, newlog=[start_lines, log_end]
|
43
|
+
#return: an array contains the last n lines' contents
|
44
|
+
# ===example
|
45
|
+
# LogHelper.get_tail_contents logpath, "log1", 10
|
46
|
+
def LogHelper.get_tail_contents(log_path, log_name, start_lines)
|
47
|
+
last_lines = LogHelper.get_lines(log_path, log_name) - start_lines + 1
|
48
|
+
#param check
|
49
|
+
if last_lines <= 0 then
|
50
|
+
raise "params error: last_lines should bigger than 0"
|
51
|
+
end
|
52
|
+
log_file = log_path + "/" + log_name
|
53
|
+
|
54
|
+
contents = Array.new
|
55
|
+
if File::exists?(log_file) && File::file?(log_file) then
|
56
|
+
system "tail -#{last_lines} #{log_file} > tmp_file"
|
57
|
+
File.open("tmp_file") do |f|
|
58
|
+
contents = f.readlines
|
59
|
+
#remove the tmp file
|
60
|
+
system "rm tmp_file"
|
61
|
+
return contents
|
62
|
+
end
|
63
|
+
else
|
64
|
+
raise "file #{log_file} not exists or is not a regular file"
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
# === 功能:
|
70
|
+
# 获取匹配的次数
|
71
|
+
# === 参数:
|
72
|
+
# log_level: ["DEBUG", "NOTICE", "WARNING", "FATAL"]
|
73
|
+
# === Example:
|
74
|
+
# LogHelper.get_match_lines "/home/space/space/log/", "log1", 1, ["DEBUG", "NOTICE", "WARNING", "FATAL"], "time"
|
75
|
+
def LogHelper.get_match_lines log_path, log_name, start_lines, log_level, pattern
|
76
|
+
contents = get_tail_contents log_path, log_name, start_lines
|
77
|
+
lines = []
|
78
|
+
|
79
|
+
if contents == nil
|
80
|
+
return lines
|
81
|
+
else
|
82
|
+
contents.each{|line|
|
83
|
+
checkable = false
|
84
|
+
if log_level.size > 0
|
85
|
+
log_level.each{|level|
|
86
|
+
if line.include? level
|
87
|
+
checkable = true
|
88
|
+
break
|
89
|
+
end
|
90
|
+
}
|
91
|
+
else
|
92
|
+
checkable = true
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
if checkable
|
97
|
+
#match = line.scan pattern
|
98
|
+
#if match != nil && match.size > 0
|
99
|
+
# lines << line
|
100
|
+
#end
|
101
|
+
#match = pattern.match line
|
102
|
+
match = line.match pattern
|
103
|
+
if match != nil
|
104
|
+
lines << line
|
105
|
+
end
|
106
|
+
end
|
107
|
+
}
|
108
|
+
|
109
|
+
return lines
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# ===功能
|
114
|
+
# get the match times with the giving log level and regex pattern
|
115
|
+
#
|
116
|
+
# ===参数
|
117
|
+
# -log_path:
|
118
|
+
# -log_name:
|
119
|
+
# -start_lines:from which line we search the log content, newlog=[start_lines, log_end]
|
120
|
+
# -log_level: an array whoes value from ["DEBUG", "NOTICE", "WARNING", "FATAL"]; nil for all levels
|
121
|
+
# -pattern: a string or a regex pattern
|
122
|
+
# return: int, the match times with the giving log level and regex pattern
|
123
|
+
#
|
124
|
+
# ===example:
|
125
|
+
# LogHelper.get_match_times("./", "chenjie.log", 1, nil, "openapptrans")
|
126
|
+
# LogHelper.get_match_times("./", "chenjie.log", 1, nil, /(\d{4})-(\d{2})-(\d{2})/)
|
127
|
+
def LogHelper.get_match_times(log_path, log_name, start_lines, log_level, pattern)
|
128
|
+
contents = get_tail_contents(log_path, log_name, start_lines)
|
129
|
+
count = 0
|
130
|
+
if contents == nil then
|
131
|
+
return 0
|
132
|
+
else
|
133
|
+
contents.each{|line|
|
134
|
+
checkable = false
|
135
|
+
if log_level.size > 0 then
|
136
|
+
#log_level is not nil, only the line contains the log_level, then should be check
|
137
|
+
log_level.each{|level|
|
138
|
+
if line.include?(level) then
|
139
|
+
checkable = true
|
140
|
+
break;
|
141
|
+
end
|
142
|
+
}
|
143
|
+
else
|
144
|
+
#log_level is nil, the line should be check
|
145
|
+
checkable = true
|
146
|
+
end
|
147
|
+
|
148
|
+
if checkable then
|
149
|
+
matches = line.scan(pattern)
|
150
|
+
count += matches.size
|
151
|
+
end
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
155
|
+
return count
|
156
|
+
end
|
157
|
+
|
158
|
+
# ===功能
|
159
|
+
#get the match values with the giving log level and regex pattern
|
160
|
+
# ===参数
|
161
|
+
#param
|
162
|
+
#log_path:
|
163
|
+
#log_name:
|
164
|
+
#last_lines:the lines read from tail to head
|
165
|
+
#log_level: an array whoes value from ["DEBUG", "NOTICE", "WARNING", "FATAL"]; nil for all levels
|
166
|
+
#pattern: a string or a regex pattern
|
167
|
+
#return: an array contains the match values with the giving log level and regex pattern
|
168
|
+
#
|
169
|
+
#===example:
|
170
|
+
#LogHelper.get_match_values("./", "chenjie.log", 1, nil, /(\d{4})-(\d{2})-(\d{2})/)
|
171
|
+
#LogHelper.get_match_values("./", "chenjie.log", 1, nil, "openapptrans")
|
172
|
+
def LogHelper.get_match_values(log_path, log_name, start_lines, log_level, pattern)
|
173
|
+
contents = get_tail_contents(log_path, log_name, start_lines)
|
174
|
+
values = Array.new
|
175
|
+
if contents == nil then
|
176
|
+
return 0
|
177
|
+
else
|
178
|
+
contents.each{|line|
|
179
|
+
checkable = false
|
180
|
+
if log_level.size > 0 then
|
181
|
+
#log_level is not nil, only the line contains the log_level, then should be check
|
182
|
+
log_level.each{|level|
|
183
|
+
if line.include?(level) then
|
184
|
+
checkable = true
|
185
|
+
break;
|
186
|
+
end
|
187
|
+
}
|
188
|
+
else
|
189
|
+
#log_level is nil, the line should be check
|
190
|
+
checkable = true
|
191
|
+
end
|
192
|
+
|
193
|
+
if checkable then
|
194
|
+
matches = line.scan(pattern)
|
195
|
+
matches.each{|m|
|
196
|
+
values << m
|
197
|
+
}
|
198
|
+
end
|
199
|
+
}
|
200
|
+
end
|
201
|
+
|
202
|
+
return values
|
203
|
+
end
|
204
|
+
|
205
|
+
# ===功能
|
206
|
+
#get the first match value, nil if no match found
|
207
|
+
# ===参数
|
208
|
+
#param
|
209
|
+
#log_path:
|
210
|
+
#log_name:
|
211
|
+
#last_lines:the lines read from tail to head
|
212
|
+
#log_level: an array whoes value from ["DEBUG", "NOTICE", "WARNING", "FATAL"]; nil for all levels
|
213
|
+
#pattern: a string or a regex pattern
|
214
|
+
#return: a string firstly matches the pattern, nil if no match found
|
215
|
+
#
|
216
|
+
#===example:
|
217
|
+
#LogHelper.get_match_value("./", "chenjie.log", 1, nil, /(\d{4})-(\d{2})-(\d{2})/)
|
218
|
+
#LogHelper.get_match_value("./", "chenjie.log", 1, nil, "openapptrans")
|
219
|
+
def LogHelper.get_match_value(log_path, log_name, start_lines, log_level, pattern)
|
220
|
+
contents = get_tail_contents(log_path, log_name, start_lines)
|
221
|
+
if contents == nil then
|
222
|
+
return nil
|
223
|
+
else
|
224
|
+
contents.each{|line|
|
225
|
+
checkable = false
|
226
|
+
if log_level.size > 0 then
|
227
|
+
#log_level is not nil, only the line contains the log_level, then should be check
|
228
|
+
log_level.each{|level|
|
229
|
+
if line.include?(level) then
|
230
|
+
checkable = true
|
231
|
+
break;
|
232
|
+
end
|
233
|
+
}
|
234
|
+
else
|
235
|
+
#log_level is nil, the line should be check
|
236
|
+
checkable = true
|
237
|
+
end
|
238
|
+
|
239
|
+
if checkable then
|
240
|
+
match = pattern.match(line)
|
241
|
+
if match != nil then
|
242
|
+
return match[0]
|
243
|
+
end
|
244
|
+
end
|
245
|
+
}
|
246
|
+
end
|
247
|
+
|
248
|
+
return nil
|
249
|
+
end
|
250
|
+
|
251
|
+
# ===功能
|
252
|
+
#turn log_level code into log level array(helper method)
|
253
|
+
#used to solve remote parameter passing problem(pass string format parameter)
|
254
|
+
# ===参数
|
255
|
+
#param
|
256
|
+
#code: "0:0:0:0" to "1:1:1:1"
|
257
|
+
#return: [] to ["DEBUG", "NOTICE", "WARNING", "FATAL"]
|
258
|
+
# ===example
|
259
|
+
#array1 = LogHelper.level_decode "0:0:0:1"
|
260
|
+
def LogHelper.level_decode(code)
|
261
|
+
levels = Array.new
|
262
|
+
arr = code.split(":")
|
263
|
+
|
264
|
+
i = 0
|
265
|
+
arr.each{|a|
|
266
|
+
if a == "1" then
|
267
|
+
levels << LOG_LEVEL[i]
|
268
|
+
end
|
269
|
+
i += 1
|
270
|
+
}
|
271
|
+
return levels
|
272
|
+
end
|
273
|
+
|
274
|
+
# ===功能
|
275
|
+
#translate log_level array into log level code(helper method)
|
276
|
+
#used to solve remote parameter passing problem(pass string format parameter)
|
277
|
+
# ===参数
|
278
|
+
#param
|
279
|
+
#code: "0:0:0:0" to "1:1:1:1"
|
280
|
+
#return: [] to ["DEBUG", "NOTICE", "WARNING", "FATAL"]
|
281
|
+
# ===example
|
282
|
+
# code1 = LogHelper.level_encode ["DEBUG", "WARNING"]
|
283
|
+
def LogHelper.level_encode arr
|
284
|
+
code = ""
|
285
|
+
if arr.include?("DEBUG") then
|
286
|
+
code += "1:"
|
287
|
+
else
|
288
|
+
code += "0:"
|
289
|
+
end
|
290
|
+
|
291
|
+
if arr.include?("NOTICE") then
|
292
|
+
code += "1:"
|
293
|
+
else
|
294
|
+
code += "0:"
|
295
|
+
end
|
296
|
+
|
297
|
+
if arr.include?("WARNING") then
|
298
|
+
code += "1:"
|
299
|
+
else
|
300
|
+
code += "0:"
|
301
|
+
end
|
302
|
+
|
303
|
+
if arr.include?("FATAL") then
|
304
|
+
code += "1"
|
305
|
+
else
|
306
|
+
code += "0"
|
307
|
+
end
|
308
|
+
|
309
|
+
return code
|
310
|
+
end
|
311
|
+
|
312
|
+
end
|
313
|
+
|
314
|
+
if ARGV.length > 0 then
|
315
|
+
case ARGV[0]
|
316
|
+
when "get_lines"
|
317
|
+
puts LogHelper.get_lines(ARGV[1], ARGV[2])
|
318
|
+
when "get_tail_contents"
|
319
|
+
puts LogHelper.get_tail_contents(ARGV[1], ARGV[2], ARGV[3].to_i)
|
320
|
+
when "get_match_times"
|
321
|
+
puts LogHelper.get_match_times(ARGV[1], ARGV[2], ARGV[3].to_i, LogHelper.level_decode(ARGV[4]) , Regexp.new(ARGV[5]))
|
322
|
+
when "get_match_lines"
|
323
|
+
puts LogHelper.get_match_lines(ARGV[1], ARGV[2], ARGV[3].to_i, LogHelper.level_decode(ARGV[4]) , Regexp.new(ARGV[5]))
|
324
|
+
when "get_match_values"
|
325
|
+
puts LogHelper.get_match_values(ARGV[1], ARGV[2], ARGV[3].to_i, LogHelper.level_decode(ARGV[4]) , Regexp.new(ARGV[5]))
|
326
|
+
when "get_match_value"
|
327
|
+
puts LogHelper.get_match_value(ARGV[1], ARGV[2], ARGV[3].to_i, LogHelper.level_decode(ARGV[4]) , Regexp.new(ARGV[5]))
|
328
|
+
# else
|
329
|
+
# puts "LogHelper: bad method name? #{ARGV[0]}"
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
@@ -0,0 +1,77 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
# Author:: chenjie
|
4
|
+
# Date::2009-6-16
|
5
|
+
|
6
|
+
require 'dbi'
|
7
|
+
require "#{File.dirname(__FILE__)}/context"
|
8
|
+
#require "#{File.dirname(__FILE__)}/log4s"
|
9
|
+
|
10
|
+
# Mysql reated methods; context support
|
11
|
+
module MY_SQL
|
12
|
+
# ===功能
|
13
|
+
# 连接数据库
|
14
|
+
# ===example
|
15
|
+
# db_connect "newfriend", "127.0.0.1", 3306, "root", "root"
|
16
|
+
def db_connect db, host, port, user, pwd
|
17
|
+
|
18
|
+
dbh = DBI.connect("DBI:Mysql:#{db}:#{host}:#{port}", user, pwd)
|
19
|
+
|
20
|
+
#Context.set "#{host}.#{db}", dbh
|
21
|
+
Context.set :DATABASE, db
|
22
|
+
Context.set :DB_HOST, host
|
23
|
+
Context.set :DBH, dbh
|
24
|
+
return dbh
|
25
|
+
end
|
26
|
+
|
27
|
+
# ===功能
|
28
|
+
# 断开数据库连接
|
29
|
+
# ===example
|
30
|
+
# db_disconnect
|
31
|
+
def db_disconnect
|
32
|
+
#dbh = Context.get "#{host}.#{db}"
|
33
|
+
dbh = Context.get :DBH
|
34
|
+
|
35
|
+
if dbh != nil
|
36
|
+
dbh.disconnect
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# ===功能
|
41
|
+
# 发送数据库操作命令
|
42
|
+
# ===example
|
43
|
+
# db_do "select * from table1;"
|
44
|
+
def db_do sql
|
45
|
+
dbh = Context.get :DBH
|
46
|
+
$log.info "DB=#{$globals[:DATABASE]}_HOST=#{$globals[:DB_HOST]}_SQL=#{sql}"
|
47
|
+
dbh.do sql
|
48
|
+
end
|
49
|
+
|
50
|
+
# ===功能
|
51
|
+
# 发送数据库操作命令
|
52
|
+
# ===example
|
53
|
+
# db_select_one "select * from table1;"
|
54
|
+
def db_select_one sql
|
55
|
+
dbh = Context.get :DBH
|
56
|
+
$log.info "DB=#{$globals[:DATABASE]}_HOST=#{$globals[:DB_HOST]}_SQL=#{sql}"
|
57
|
+
dbh.select_one sql
|
58
|
+
end
|
59
|
+
|
60
|
+
def db_execute sql
|
61
|
+
dbh = Context.get :DBH
|
62
|
+
$log.info "DB=#{$globals[:DATABASE]}_HOST=#{$globals[:DB_HOST]}_SQL=#{sql}"
|
63
|
+
dbh.execute(sql)
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
if __FILE__ == $0
|
70
|
+
include MY_SQL
|
71
|
+
dbh = db_connect 'spow', '10.241.14.39', '3306', 'root', ''
|
72
|
+
row = dbh.select_one("DESC opbox")
|
73
|
+
puts row[0].to_s
|
74
|
+
puts "-------"
|
75
|
+
puts row
|
76
|
+
dbh.disconnect if dbh
|
77
|
+
end
|