class Droid::Monitor::Adb

Attributes

api_level[RW]
device_serial[RW]
package[RW]

Public Class Methods

new(opts = {}) click to toggle source
# File lib/droid/monitor.rb, line 14
def initialize(opts = {})
  raise 'opts must be a hash' unless opts.is_a? Hash
  raise 'Package name is required.' unless opts[:package]

  @package = opts[:package]
  @device_serial = opts[:device_serial] || ''
  @api_level = device_sdk_version
  @debug = opts[:debug]
end

Public Instance Methods

device_sdk_version() click to toggle source

@return [Integer] message from adb command e.g: 17

# File lib/droid/monitor.rb, line 26
def device_sdk_version
  run_adb("#{adb_shell} getprop ro.build.version.sdk").to_i
end
dump_cpuinfo() click to toggle source

@return [String] message from adb command

# File lib/droid/monitor.rb, line 36
def dump_cpuinfo
  run_adb("#{adb_shell} dumpsys cpuinfo")
end
dump_cpuinfo_with_top() click to toggle source

@return [String] message from adb command “17742 1 15% S 55 2279532K 128100K fg u0_a124 your.cpackagern”

# File lib/droid/monitor.rb, line 42
def dump_cpuinfo_with_top
  run_adb("#{adb_shell} top -d 0.5 -n 1 | grep #{@package}")
end
dump_gfxinfo() click to toggle source
# File lib/droid/monitor.rb, line 67
def dump_gfxinfo
  run_adb("#{adb_shell} dumpsys gfxinfo #{@package}")
end
dump_meminfo() click to toggle source

@return [String] message from adb command

# File lib/droid/monitor.rb, line 47
def dump_meminfo
  run_adb("#{adb_shell} dumpsys meminfo #{@package}")
end
dump_package_info() click to toggle source

@return [String] message from adb command

# File lib/droid/monitor.rb, line 31
def dump_package_info
  run_adb("#{adb_shell} dumpsys package #{@package}")
end
dump_tcp_rec() click to toggle source
# File lib/droid/monitor.rb, line 51
def dump_tcp_rec
  pid = user_pid
  return 0 if pid == -1

  puts "pid is #{pid}" if @debug
  run_adb("#{adb_shell} cat proc/uid_stat/#{pid}/tcp_rcv").to_i
end
dump_tcp_snd() click to toggle source
# File lib/droid/monitor.rb, line 59
def dump_tcp_snd
  pid = user_pid
  return 0 if pid == -1

  puts "pid is #{pid}" if @debug
  run_adb("#{adb_shell} cat proc/uid_stat/#{pid}/tcp_snd").to_i
end

Private Instance Methods

adb() click to toggle source
# File lib/droid/monitor.rb, line 73
def adb
  raise 'ANDROID_HOME is not set' unless ENV['ANDROID_HOME']

  "#{ENV['ANDROID_HOME']}/platform-tools/adb"
end
adb_shell() click to toggle source
# File lib/droid/monitor.rb, line 85
def adb_shell
  "#{adb} #{device_serial_option} shell"
end
device_serial_option() click to toggle source
# File lib/droid/monitor.rb, line 79
def device_serial_option
  return '' unless @device_serial && @device_serial != ''

  "-s \"#{@device_serial}\""
end
run_adb(cmd) click to toggle source
# File lib/droid/monitor.rb, line 100
def run_adb(cmd)
  out_s, out_e, _status = Open3.capture3(cmd)
  puts "error: device not found which serial is #{@device_serial}" if out_e.include?('error: device not found')
  out_s.chomp unless out_s.nil? || out_s.empty?
end
user_pid() click to toggle source

@return [String] line of packages regarding pid and so on

# File lib/droid/monitor.rb, line 90
def user_pid
  dump = run_adb("#{adb_shell} dumpsys package #{@package}")
  return -1 if dump.nil?

  userid = dump.scan(/userId=[0-9]+/)
  return -1 if userid.empty?

  userid.uniq.first.delete('userId=')
end