Class: UIAutoMonkey::MonkeyRunner
- Inherits:
-
Object
- Object
- UIAutoMonkey::MonkeyRunner
- Includes:
- CommandHelper
- Defined in:
- lib/smart_monkey/monkey_runner.rb
Constant Summary collapse
- TRACE_TEMPLATE =
'/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate'- RESULT_BASE_PATH =
File.('smart_monkey_result')
- INSTRUMENTS_TRACE_PATH =
File.('*.trace')
- TIME_STAP =
Time.new.strftime("%Y%m%d%H%M%S")
Instance Method Summary collapse
- #all_tests_ok?(result_list) ⇒ Boolean
- #app_name ⇒ Object
- #app_path ⇒ Object
- #compress_image(path) ⇒ Object
- #config_custom_path ⇒ Object
- #console_log_path ⇒ Object
- #copy_html_resources ⇒ Object
- #crash_report_list(times) ⇒ Object
- #crash_save_dir(times) ⇒ Object
- #create_index_html(result_hash) ⇒ Object
- #create_result_html(log_list) ⇒ Object
- #device ⇒ Object
- #device_name(device) ⇒ Object
- #deviceconsole_original_path ⇒ Object
- #devices ⇒ Object
- #dsym_base_path ⇒ Object
- #find_app_path(opts) ⇒ Object
- #find_apps(app) ⇒ Object
- #find_device(device) ⇒ Object
- #finish_running ⇒ Object
- #generate_ui_auto_monkey ⇒ Object
- #grep_ios_syslog ⇒ Object
- #instruments_deviceinfo(device) ⇒ Object
- #is_simulator ⇒ Object
- #kill_all_need ⇒ Object
- #list_app ⇒ Object
- #list_devices ⇒ Object
- #log(msg) ⇒ Object
- #parse_results ⇒ Object
- #parse_uiautomation_plist ⇒ Object
- #product_type(device) ⇒ Object
- #product_version(device) ⇒ Object
- #pull_crash_files(times) ⇒ Object
- #replace_text(orig, replace_str, marker_begin_line, marker_end_line) ⇒ Object
- #reset_iphone_simulator ⇒ Object
- #result_base_dir ⇒ Object
- #result_dir ⇒ Object
- #result_history_dir(times) ⇒ Object
- #rm_instruments_trace(traces) ⇒ Object
- #rotate_imgs(path) ⇒ Object
- #run(opts) ⇒ Object
- #run_a_case ⇒ Object
- #setup_running ⇒ Object
- #show_config ⇒ Object
- #show_extend_javascript ⇒ Object
- #sim_crash_report_dir ⇒ Object
- #symbolicatecrash_base_path ⇒ Object
- #symbolicating_crash_report(crash_base_path) ⇒ Object
- #template_path(name) ⇒ Object
- #time_limit ⇒ Object
- #time_limit_sec ⇒ Object
- #total_test_count ⇒ Object
- #ui_auto_monkey_original_path ⇒ Object
- #ui_auto_monkey_path ⇒ Object
- #ui_custom_original_path ⇒ Object
- #ui_custom_path ⇒ Object
- #ui_hole_handler_original_path ⇒ Object
- #ui_tuneup_original_path ⇒ Object
- #uiautomation_xsl_path ⇒ Object
- #watch_syslog ⇒ Object
- #xcode_developer_path ⇒ Object
- #xcode_path ⇒ Object
Methods included from CommandHelper
#kill_all, #relaunch_app, #run_process, #shell
Instance Method Details
#all_tests_ok?(result_list) ⇒ Boolean
156 157 158 |
# File 'lib/smart_monkey/monkey_runner.rb', line 156 def all_tests_ok?(result_list) result_list.select {|r| !r[:ok]}.empty? end |
#app_name ⇒ Object
209 210 211 |
# File 'lib/smart_monkey/monkey_runner.rb', line 209 def app_name File.basename(app_path).gsub(/\.app$/, '') end |
#app_path ⇒ Object
205 206 207 |
# File 'lib/smart_monkey/monkey_runner.rb', line 205 def app_path @app_path ||= find_app_path() end |
#compress_image(path) ⇒ Object
313 314 315 316 317 318 |
# File 'lib/smart_monkey/monkey_runner.rb', line 313 def compress_image(path) puts 'Compress screenshot images...' compress_rate = [:compress_rate] # `find #{path} -name "*.png" -exec convert {} -resize 50% -sample 50% {} \\\;` `mogrify -resize #{compress_rate} "#{path}/*.png"` end |
#config_custom_path ⇒ Object
497 498 499 |
# File 'lib/smart_monkey/monkey_runner.rb', line 497 def config_custom_path [:custom_path] || ui_custom_original_path end |
#console_log_path ⇒ Object
463 464 465 |
# File 'lib/smart_monkey/monkey_runner.rb', line 463 def console_log_path "#{result_dir}/console.txt" end |
#copy_html_resources ⇒ Object
149 150 151 152 153 154 |
# File 'lib/smart_monkey/monkey_runner.rb', line 149 def copy_html_resources bootstrap_dir = File.('../../bootstrap', __FILE__) FileUtils.copy("#{bootstrap_dir}/css/bootstrap.css", result_base_dir) FileUtils.copy("#{bootstrap_dir}/js/bootstrap.js", result_base_dir) FileUtils.copy(template_path('jquery.min.js'), result_base_dir) end |
#crash_report_list(times) ⇒ Object
443 444 445 446 447 |
# File 'lib/smart_monkey/monkey_runner.rb', line 443 def crash_report_list(times) # ios version >7.0 => *.ips `ls -t #{crash_save_dir(times)}/*.crash 2>&1;ls -t #{crash_save_dir(times)}/*.ips 2>&1;`.strip.split(/\n/) # `ls -t #{crash_save_dir}/#{app_name}_*.crash`.strip.split(/\n/) end |
#crash_save_dir(times) ⇒ Object
419 420 421 |
# File 'lib/smart_monkey/monkey_runner.rb', line 419 def crash_save_dir(times) "#{result_base_dir}/crash_#{times}" end |
#create_index_html(result_hash) ⇒ Object
138 139 140 141 142 143 144 145 146 147 |
# File 'lib/smart_monkey/monkey_runner.rb', line 138 def create_index_html(result_hash) er = Erubis::Eruby.new(File.read(template_path('index.html.erb'))) result_hash[:test_count] = result_hash[:result_list].size result_hash[:ok_count] = result_hash[:result_list].select {|r| r[:ok]}.size result_hash[:cr_count] = result_hash[:result_list].select {|r| r[:crash]}.size result_hash[:nr_count] = result_hash[:test_count] - result_hash[:ok_count] - result_hash[:cr_count] open("#{result_base_dir}/index.html", 'w') {|f| f.write er.result(result_hash)} copy_html_resources puts "Monkey Test Report:#{result_base_dir}/index.html" end |
#create_result_html(log_list) ⇒ Object
533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 |
# File 'lib/smart_monkey/monkey_runner.rb', line 533 def create_result_html(log_list) latest_list = LogDecoder.new(log_list).decode_latest([:detail_event_count], [:drop_useless_img], result_dir) hash = {} hash[:log_list] = latest_list.reverse hash[:log_list_json] = JSON.dump(hash[:log_list]) crash_report = Dir.glob("#{result_dir}/*.crash")[0] hash[:crash_report] = crash_report ? File.basename(crash_report) : nil hash[:uia_trace] = @uia_trace hash[:crashed] = @crashed hash[:no_run] = @no_run er = Erubis::Eruby.new(File.read(template_path('result.html.erb'))) open("#{result_dir}/result.html", 'w') do |f| f.write(er.result(hash)) end FileUtils.copy(template_path('result_view.js'), "#{result_dir}/result_view.js") end |
#device ⇒ Object
197 198 199 200 201 202 203 |
# File 'lib/smart_monkey/monkey_runner.rb', line 197 def device if [:device] find_device([:device]) else (devices[0].strip.split("[")[1].delete "]") end end |
#device_name(device) ⇒ Object
307 308 309 310 311 |
# File 'lib/smart_monkey/monkey_runner.rb', line 307 def device_name(device) if !is_simulator `ideviceinfo -u #{device} -k DeviceName`.strip end end |
#deviceconsole_original_path ⇒ Object
367 368 369 |
# File 'lib/smart_monkey/monkey_runner.rb', line 367 def deviceconsole_original_path File.('../../ios_device_log/deviceconsole', __FILE__) end |
#devices ⇒ Object
217 218 219 |
# File 'lib/smart_monkey/monkey_runner.rb', line 217 def devices `"instruments" -s devices`.strip.split(/\n/).drop(2) end |
#dsym_base_path ⇒ Object
395 396 397 |
# File 'lib/smart_monkey/monkey_runner.rb', line 395 def dsym_base_path [:dsym_file_path] || "" end |
#find_app_path(opts) ⇒ Object
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 |
# File 'lib/smart_monkey/monkey_runner.rb', line 340 def find_app_path(opts) app_path = nil if opts[:app_path].include?('/') app_path = File.(opts[:app_path]) elsif opts[:app_path] =~ /\.app$/ apps = find_apps(opts[:app_path]) app_path = apps[0] log "#{apps.size} apps are found, USE NEWEST APP: #{app_path}" if apps.size > 1 else app_path = opts[:app_path] log "BundleID was found: #{app_path}" end unless app_path raise 'Invalid AppName' end app_path end |
#find_apps(app) ⇒ Object
213 214 215 |
# File 'lib/smart_monkey/monkey_runner.rb', line 213 def find_apps(app) `"ls" -dt #{ENV['HOME']}/Library/Developer/Xcode/DerivedData/*/Build/Products/*/#{app}`.strip.split(/\n/) end |
#find_device(device) ⇒ Object
221 222 223 224 225 226 227 228 229 |
# File 'lib/smart_monkey/monkey_runner.rb', line 221 def find_device(device) device_line = `"instruments" -s devices | grep "#{device}"`.strip.split(/\n/)[0] if device_line.nil? puts "Invalid device, Please given a vaild device!" puts `"instruments" -s devices` exit(1) end device_line.strip.split("[")[1].delete "]" end |
#finish_running ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/smart_monkey/monkey_runner.rb', line 124 def finish_running kill_all_need FileUtils.remove_dir(result_history_dir(@times), true) FileUtils.remove_dir(crash_save_dir(@times+1), true) FileUtils.move(result_dir, result_history_dir(@times)) if [:compress_rate] compress_image(result_history_dir(@times)) end rotate_imgs(result_history_dir(@times)) rm_instruments_trace(INSTRUMENTS_TRACE_PATH) kill_all('iPhone Simulator') sleep 3 end |
#generate_ui_auto_monkey ⇒ Object
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 |
# File 'lib/smart_monkey/monkey_runner.rb', line 479 def generate_ui_auto_monkey # extend_javascript_flag, extend_javascript_path = show_extend_javascript # orig = File.read(ui_custom_original_path) # config = JSON.parse(File.read(config_json_path)) # replace_str = " this.config = #{JSON.pretty_generate(config, :indent => ' '*6)}; \n" # js = replace_text(orig, replace_str, '__UIAutoMonkey Configuration Begin__', '__UIAutoMonkey Configuration End__') # if extend_javascript_flag # js = File.read(extend_javascript_path) + "\n" + js # end envs_str="UniqueDeviceID=\"#{device}\";\nResultBaseDir=\"#{result_base_dir}\";\n" File.open(File.join(result_base_dir,"Env.js"), 'w') {|f| f.write(envs_str)} FileUtils.copy(config_custom_path, result_base_dir) FileUtils.copy(ui_auto_monkey_original_path, result_base_dir) FileUtils.cp_r(ui_hole_handler_original_path, result_base_dir) FileUtils.cp_r(ui_tuneup_original_path, result_base_dir) # FileUtils.copy("#{bootstrap_dir}/js/bootstrap.js", result_base_dir) end |
#grep_ios_syslog ⇒ Object
453 454 455 456 457 458 459 460 461 |
# File 'lib/smart_monkey/monkey_runner.rb', line 453 def grep_ios_syslog if is_simulator puts "Attempting iOS Simulator system log capture via tail system.log." "tail -n 0 -f ~/Library/Logs/CoreSimulator/#{device}*/system.log" else puts "Attempting iOS device system log capture via deviceconsole." "#{deviceconsole_original_path} -u #{device}" end end |
#instruments_deviceinfo(device) ⇒ Object
231 232 233 |
# File 'lib/smart_monkey/monkey_runner.rb', line 231 def instruments_deviceinfo(device) `"instruments" -s devices | grep "#{device}"`.strip end |
#is_simulator ⇒ Object
235 236 237 238 239 240 241 242 |
# File 'lib/smart_monkey/monkey_runner.rb', line 235 def is_simulator deviceinfo = instruments_deviceinfo(device) if deviceinfo.include? "Simulator" true else false end end |
#kill_all_need ⇒ Object
334 335 336 337 338 |
# File 'lib/smart_monkey/monkey_runner.rb', line 334 def kill_all_need kill_all('instruments', '9') kill_all('Instruments', '9') kill_all('idevicedebug', '9') end |
#list_app ⇒ Object
171 172 173 174 175 176 177 178 |
# File 'lib/smart_monkey/monkey_runner.rb', line 171 def list_app puts "============For iPhone Simulator:" puts find_apps('*.app').map{|n| File.basename n}.uniq.sort.join("\n") if !is_simulator puts "============For iPhone Device:" puts `ideviceinstaller -u #{device} -l` end end |
#list_devices ⇒ Object
180 181 182 |
# File 'lib/smart_monkey/monkey_runner.rb', line 180 def list_devices puts devices.join("\n") end |
#log(msg) ⇒ Object
184 185 186 |
# File 'lib/smart_monkey/monkey_runner.rb', line 184 def log(msg) puts msg end |
#parse_results ⇒ Object
517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 |
# File 'lib/smart_monkey/monkey_runner.rb', line 517 def parse_results filename = "#{result_dir}/Automation Results.plist" log_list = [] if File.exists?(filename) doc = REXML::Document.new(open(filename)) doc.elements.each('plist/dict/array/dict') do |record| ary = record.elements.to_a.map{|a| a.text} log_list << Hash[*ary] end parse_uiautomation_plist @uia_trace = true end @no_run = true if log_list.empty? || log_list[-1][MESSAGE] =~ /target application is not frontmost/ log_list end |
#parse_uiautomation_plist ⇒ Object
475 476 477 |
# File 'lib/smart_monkey/monkey_runner.rb', line 475 def parse_uiautomation_plist `xsltproc --output "#{result_dir}/uiautomation.html" #{uiautomation_xsl_path} "#{result_dir}/Automation Results.plist"` end |
#product_type(device) ⇒ Object
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'lib/smart_monkey/monkey_runner.rb', line 244 def product_type(device) product_hash={ "iPhone1,1"=>"iPhone", "iPhone1,2"=>"iPhone 3G", "iPhone2,1"=>"iPhone 3GS", "iPhone3,1"=>"iPhone 4 - GSM", "iPhone3,2"=>"iPhone 4 - CDMA", "iPhone3,3"=>"iPhone 4 - CDMA", "iPhone4,1"=>"iPhone 4S", "iPhone5,1"=>"iPhone 5", "iPhone5,2"=>"iPhone 5", "iPhone5,3"=>"iPhone 5C (GSM)", "iPhone5,4"=>"iPhone 5C (CDMA)", "iPhone6,1"=>"iPhone 5S (GSM)", "iPhone6,2"=>"iPhone 5S (CDMA)", "iPhone7,1"=>"iPhone 6 Plus", "iPhone7,2"=>"iPhone 6", "iPad1,1"=>"iPad", "iPad2,1"=>"iPad 2 (Wi-Fi)", "iPad2,2"=>"iPad 2 (GSM)", "iPad2,3"=>"iPad 2 (CDMA)", "iPad2,4"=>"iPad 2 (Wi-Fi, revised)", "iPad2,5"=>"iPad mini (Wi-Fi)", "iPad2,6"=>"iPad mini (A1454)", "iPad2,7"=>"iPad mini (A1455)", "iPad3,1"=>"iPad (3rd gen, Wi-Fi)", "iPad3,2"=>"iPad (3rd gen, Wi-Fi+LTE Verizon)", "iPad3,3"=>"iPad (3rd gen, Wi-Fi+LTE AT&T)", "iPad3,4"=>"iPad (4th gen, Wi-Fi)", "iPad3,5"=>"iPad (4th gen, A1459)", "iPad3,6"=>"iPad (4th gen, A1460)", "iPad4,1"=>"iPad Air (Wi-Fi)", "iPad4,2"=>"iPad Air (Wi-Fi+LTE)", "iPad4,3"=>"iPad Air (Rev)", "iPad4,4"=>"iPad mini 2 (Wi-Fi)", "iPad4,5"=>"iPad mini 2 (Wi-Fi+LTE)", "iPad4,6"=>"iPad mini 2 (Rev)", "iPad4,7"=>"iPad mini 3 (Wi-Fi)", "iPad4,8"=>"iPad mini 3 (A1600)", "iPad4,9"=>"iPad mini 3 (A1601)", "iPad5,3"=>"iPad Air 2 (Wi-Fi)", "iPad5,4"=>"iPad Air 2 (Wi-Fi+LTE)", "iPod1,1"=>"iPod touch", "iPod2,1"=>"iPod touch (2nd gen)", "iPod3,1"=>"iPod touch (3rd gen)", "iPod4,1"=>"iPod touch (4th gen)", "iPod5,1"=>"iPod touch (5th gen)", } if is_simulator instruments_deviceinfo(device).split("[")[0] else type = `ideviceinfo -u #{device} -k ProductType`.strip product_hash[type] end end |
#product_version(device) ⇒ Object
301 302 303 304 305 |
# File 'lib/smart_monkey/monkey_runner.rb', line 301 def product_version(device) if !is_simulator `ideviceinfo -u #{device} -k ProductVersion`.strip end end |
#pull_crash_files(times) ⇒ Object
435 436 437 438 439 440 441 |
# File 'lib/smart_monkey/monkey_runner.rb', line 435 def pull_crash_files(times) if !is_simulator `idevicecrashreport -u #{device} -e -k #{crash_save_dir(times)}` else `cp #{sim_crash_report_dir}/* #{crash_save_dir(times)}` end end |
#replace_text(orig, replace_str, marker_begin_line, marker_end_line) ⇒ Object
501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 |
# File 'lib/smart_monkey/monkey_runner.rb', line 501 def replace_text(orig, replace_str, marker_begin_line, marker_end_line) results = [] status = 1 orig.each_line do |line| if status == 1 && line =~ /#{marker_begin_line}/ status = 2 results << line results << replace_str elsif status == 2 && line =~/#{marker_end_line}/ status = 3 end results << line unless status == 2 end results.join('') end |
#reset_iphone_simulator ⇒ Object
188 189 190 191 |
# File 'lib/smart_monkey/monkey_runner.rb', line 188 def reset_iphone_simulator FileUtils.rm_rf("#{Dir.home}/Library/Application\ Support/iPhone\ Simulator/") puts 'reset iPhone Simulator successful' end |
#result_base_dir ⇒ Object
415 416 417 |
# File 'lib/smart_monkey/monkey_runner.rb', line 415 def result_base_dir File.join([:result_base_dir] || RESULT_BASE_PATH, "report_#{TIME_STAP}") end |
#result_dir ⇒ Object
423 424 425 |
# File 'lib/smart_monkey/monkey_runner.rb', line 423 def result_dir "#{result_base_dir}/Run 1" end |
#result_history_dir(times) ⇒ Object
427 428 429 |
# File 'lib/smart_monkey/monkey_runner.rb', line 427 def result_history_dir(times) "#{result_base_dir}/result_#{sprintf('%03d', times)}" end |
#rm_instruments_trace(traces) ⇒ Object
449 450 451 |
# File 'lib/smart_monkey/monkey_runner.rb', line 449 def rm_instruments_trace(traces) `rm -rf #{traces}` end |
#rotate_imgs(path) ⇒ Object
320 321 322 323 324 325 326 327 328 329 330 331 332 |
# File 'lib/smart_monkey/monkey_runner.rb', line 320 def rotate_imgs(path) rotated_map={ "1"=>nil, "2"=>"180", "3"=>"270", "4"=>"90", } orientationNum = File.read(File.join(result_base_dir,"orientation")).strip value = rotated_map[orientationNum] unless value.nil? `mogrify -rotate #{value} "#{path}/*.png"` end end |
#run(opts) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/smart_monkey/monkey_runner.rb', line 18 def run(opts) = opts if [:show_config] show_config return true elsif [:list_app] list_app return true elsif [:list_devices] list_devices return true elsif [:reset_iphone_simulator] reset_iphone_simulator return true end res_dir = [:result_base_dir] || RESULT_BASE_PATH puts "INSTRUMENTS_TRACE_PATH : #{INSTRUMENTS_TRACE_PATH}" puts "RESULT_BASE_PATH : #{res_dir}" ########### log .inspect FileUtils.remove_dir(result_base_dir, true) FileUtils.makedirs(result_base_dir) generate_ui_auto_monkey ########### start_time = Time.new.strftime("%Y-%m-%d %H:%M:%S") result_list = [] total_test_count.times do |times| @times = times setup_running result = run_a_case finish_running result_list << result end create_index_html({ :start_time => start_time, :end_time => Time.new.strftime("%Y-%m-%d %H:%M:%S"), :result_list => result_list, :ProductType => product_type(device), :ProductVersion => product_version(device), :UniqueDeviceID => device, :DeviceName => device_name(device), :Application => app_path }) all_tests_ok?(result_list) end |
#run_a_case ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/smart_monkey/monkey_runner.rb', line 76 def run_a_case log "=================================== Start Test (#{@times+1}/#{total_test_count}) =======================================" FileUtils.makedirs(crash_save_dir(@times+1)) unless File.exists?(crash_save_dir(@times+1)) pull_crash_files(@times+1) cr_list = crash_report_list(@times+1) start_time = Time.now watch_syslog do begin unless time_limit_sec.nil? run_process(%W(instruments -w #{device} -l #{time_limit} -t #{TRACE_TEMPLATE} #{app_path} -e UIASCRIPT #{ui_custom_path} -e UIARESULTSPATH #{result_base_dir})) else run_process(%W(instruments -w #{device} -t #{TRACE_TEMPLATE} #{app_path} -e UIASCRIPT #{ui_custom_path} -e UIARESULTSPATH #{result_base_dir})) end rescue Timeout::Error kill_all('instruments', '9') end end pull_crash_files(@times+1) new_cr_list = crash_report_list(@times+1) # increase crash report? diff_cr_list = new_cr_list - cr_list if diff_cr_list.size > 0 @crashed = true new_cr_name = File.basename(diff_cr_list[0]).gsub(/\.ips$/, '.crash') new_cr_path = File.join(result_dir, new_cr_name) log "Find new crash report: #{new_cr_path}" if dsym_base_path != '' puts "Symbolicating crash report..." symbolicating_crash_report(diff_cr_list[0]) end FileUtils.cp diff_cr_list[0], new_cr_path end # output result create_result_html(parse_results) { :start_time => start_time, :end_time => Time.now, :times => @times, :ok => !@crashed && !@no_run, :crash => @crashed, :result_dir => File.basename(result_history_dir(@times)), :message => nil } end |
#setup_running ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/smart_monkey/monkey_runner.rb', line 66 def setup_running kill_all_need # kill_all('iPhone Simulator') FileUtils.remove_dir(result_dir, true) ENV['UIARESULTSPATH'] = result_dir @crashed = false @no_run = false @uia_trace = false end |
#show_config ⇒ Object
160 161 162 |
# File 'lib/smart_monkey/monkey_runner.rb', line 160 def show_config puts File.read(config_custom_path) end |
#show_extend_javascript ⇒ Object
164 165 166 167 168 169 |
# File 'lib/smart_monkey/monkey_runner.rb', line 164 def show_extend_javascript if [:extend_javascript_path] filename = [:extend_javascript_path] return File.exist?(filename), filename end end |
#sim_crash_report_dir ⇒ Object
431 432 433 |
# File 'lib/smart_monkey/monkey_runner.rb', line 431 def sim_crash_report_dir "#{ENV['HOME']}/Library/Logs/DiagnosticReports" end |
#symbolicatecrash_base_path ⇒ Object
407 408 409 |
# File 'lib/smart_monkey/monkey_runner.rb', line 407 def symbolicatecrash_base_path() `find #{xcode_path} -name symbolicatecrash`.strip end |
#symbolicating_crash_report(crash_base_path) ⇒ Object
411 412 413 |
# File 'lib/smart_monkey/monkey_runner.rb', line 411 def symbolicating_crash_report(crash_base_path) `DEVELOPER_DIR=#{xcode_developer_path} #{symbolicatecrash_base_path} -o #{crash_base_path} #{crash_base_path} #{dsym_base_path};wait;` end |
#template_path(name) ⇒ Object
471 472 473 |
# File 'lib/smart_monkey/monkey_runner.rb', line 471 def template_path(name) File.("../templates/#{name}", __FILE__) end |
#time_limit ⇒ Object
359 360 361 |
# File 'lib/smart_monkey/monkey_runner.rb', line 359 def time_limit time_limit_sec * 1000 end |
#time_limit_sec ⇒ Object
363 364 365 |
# File 'lib/smart_monkey/monkey_runner.rb', line 363 def time_limit_sec [:time_limit_sec] end |
#total_test_count ⇒ Object
193 194 195 |
# File 'lib/smart_monkey/monkey_runner.rb', line 193 def total_test_count ([:run_count] || 2) end |
#ui_auto_monkey_original_path ⇒ Object
371 372 373 |
# File 'lib/smart_monkey/monkey_runner.rb', line 371 def ui_auto_monkey_original_path File.('../../ui-auto-monkey/UIAutoMonkey.js', __FILE__) end |
#ui_auto_monkey_path ⇒ Object
387 388 389 |
# File 'lib/smart_monkey/monkey_runner.rb', line 387 def ui_auto_monkey_path "#{result_base_dir}/UIAutoMonkey.js" end |
#ui_custom_original_path ⇒ Object
375 376 377 |
# File 'lib/smart_monkey/monkey_runner.rb', line 375 def ui_custom_original_path File.('../../ui-auto-monkey/custom.js', __FILE__) end |
#ui_custom_path ⇒ Object
391 392 393 |
# File 'lib/smart_monkey/monkey_runner.rb', line 391 def ui_custom_path "#{result_base_dir}/custom.js" end |
#ui_hole_handler_original_path ⇒ Object
379 380 381 |
# File 'lib/smart_monkey/monkey_runner.rb', line 379 def ui_hole_handler_original_path File.('../../ui-auto-monkey/handler', __FILE__) end |
#ui_tuneup_original_path ⇒ Object
383 384 385 |
# File 'lib/smart_monkey/monkey_runner.rb', line 383 def ui_tuneup_original_path File.('../../ui-auto-monkey/tuneup', __FILE__) end |
#uiautomation_xsl_path ⇒ Object
467 468 469 |
# File 'lib/smart_monkey/monkey_runner.rb', line 467 def uiautomation_xsl_path File.("../templates/automation_result.xsl", __FILE__) end |
#watch_syslog ⇒ Object
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 |
# File 'lib/smart_monkey/monkey_runner.rb', line 551 def watch_syslog STDOUT.sync = true stdin, stdout, stderr = Open3.popen3(grep_ios_syslog) log_filename = "#{result_base_dir}/console.txt" thread = Thread.new do File.open(log_filename, 'a') do |output| begin while true line = stdout.readline output.write(line) # output.write(line) if line.include?(app_name) end rescue IOError log 'Stop iOS system log capture.' kill_all_need end end end yield sleep 3 stdout.close; stderr.close; stdin.close thread.join FileUtils.makedirs(result_dir) unless File.exists?(result_dir) if File.exists?(log_filename) FileUtils.move(log_filename, console_log_path) end end |
#xcode_developer_path ⇒ Object
399 400 401 |
# File 'lib/smart_monkey/monkey_runner.rb', line 399 def xcode_developer_path `xcode-select --print-path`.strip end |
#xcode_path ⇒ Object
403 404 405 |
# File 'lib/smart_monkey/monkey_runner.rb', line 403 def xcode_path `dirname #{xcode_developer_path}`.strip end |