Class: Webdrone::Logs

Inherits:
Object
  • Object
show all
Defined in:
lib/webdrone/logg.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(a0) ⇒ Logs

Returns a new instance of Logs.



49
50
51
52
53
54
# File 'lib/webdrone/logg.rb', line 49

def initialize(a0)
  @a0 = a0
  @group_trace_count = []
  setup_format
  setup_trace
end

Instance Attribute Details

#a0Object

Returns the value of attribute a0.



47
48
49
# File 'lib/webdrone/logg.rb', line 47

def a0
  @a0
end

Instance Method Details

#setup_formatObject



95
96
97
98
99
100
101
102
103
104
105
# File 'lib/webdrone/logg.rb', line 95

def setup_format
  cols, line = HighLine::SystemExtensions.terminal_size
  total = 6 + 15 + 11 + 5
  w = cols - total
  w /= 2
  w1 = w
  w2 = cols - total - w1
  w1 = 20 if w1 < 20
  w2 = 20 if w2 < 20
  @format = "%5.3f %14.14s %10s %#{w1}.#{w1}s => %#{w2}.#{w2}s\n"
end

#setup_traceObject



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/webdrone/logg.rb', line 107

def setup_trace
  @path = File.join(a0.conf.outdir, 'a0_webdrone_trace.csv')
  CSV.open(@path, "a+") do |csv|
    os = "Windows" if OS.windows?
    os = "Linux" if OS.linux?
    os = "OS X" if OS.osx?
    bits = OS.bits
    hostname = Socket.gethostname
    browser_name = a0.driver.capabilities[:browser_name]
    browser_version = a0.driver.capabilities[:version]
    browser_platform = a0.driver.capabilities[:platform]
    webdrone_version = Webdrone::VERSION
    webdrone_platform = "#{RUBY_ENGINE}-#{RUBY_VERSION} #{RUBY_PLATFORM}"

    csv << %w.OS ARCH HOSTNAME BROWSER\ NAME BROWSER\ VERSION BROWSER\ PLATFORM WEBDRONE\ VERSION WEBDRONE\ PLATFORM.
    csv << [os, bits, hostname, browser_name, browser_version, browser_platform, webdrone_version, webdrone_platform]
  end
  CSV.open(@path, "a+") do |csv|
    csv << %w.DATE DUR FROM LINENO MODULE CALL PARAMS RESULT EXCEPTION SCREENSHOT.
  end
end

#trace(ini, fin, from, lineno, base, method_name, args, result, exception, screenshot) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/webdrone/logg.rb', line 56

def trace(ini, fin, from, lineno, base, method_name, args, result, exception, screenshot)
  exception = "#{exception.class}: #{exception}" if exception
  printf @format, (fin-ini), base, method_name, args, (result || exception)
  CSV.open(@path, "a+") do |csv|
    csv << [ini.strftime('%Y-%m-%d %H:%M:%S.%L %z'), (fin-ini), from, lineno, base, method_name, args, result, exception, screenshot]
  end
  @group_trace_count = @group_trace_count.map { |x| x + 1 }
end

#with_group(name, abort_error: false) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/webdrone/logg.rb', line 65

def with_group(name, abort_error: false)
  ini = Time.new
  caller_location = Kernel.caller_locations[0]
  cl_path = caller_location.path
  cl_line = caller_location.lineno
  result = {}
  @group_trace_count << 0
  exception = nil
  begin
    yield
  rescue => e
    exception = e
    bindings = Kernel.binding.callers
    bindings[0..-1].each_with_index do |binding, index|
      location = { path: binding.eval('__FILE__'), lineno: binding.eval('__LINE__') }
      if Gem.path.none? { |path| location[:path].include? path }
        result[:exception] = {}
        result[:exception][:line] = location[:lineno]
        result[:exception][:path] = location[:path]
        break
      end
    end        
  end
  result[:trace_count] = @group_trace_count.pop
  fin = Time.new
  trace(ini, fin, cl_path, cl_line, Logs, :with_group, [name, abort_error: abort_error], result, exception, nil)
  puts "abort_error: #{abort_error} exception: #{exception}"
  exit if abort_error == true and exception
end