class DeviceAPI::Android::Plugin::Memory

Class used to provide information about process memory usage and device memory usage

Attributes

mem_info[RW]
processes[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/device_api/android/plugins/memory.rb, line 33
def initialize(options = {})
  @qualifier = options[:qualifier]
  info = options[:data] || ADB.dumpsys(@qualifier, 'meminfo')
  process_data(info)
end

Public Instance Methods

process_data(memory_info) click to toggle source
# File lib/device_api/android/plugins/memory.rb, line 39
def process_data(memory_info)
  groups = memory_info.chunk { |a| a == '' }.reject { |a,_| a  }.map { |_,b| b }

  raise 'A different ADB result has been received' unless groups[1].first == 'Total PSS by process:'
  @processes = []
  process_total_pss_by_process(groups[1])
  process_ram_info(groups[4])
end
process_ram_info(data) click to toggle source

Processes memory used by the device

# File lib/device_api/android/plugins/memory.rb, line 63
def process_ram_info(data)
  ram_info = {}
  data.each do |l|
    if /Tuning:\s+(.*)/.match(l)
      ram_info['tuning'] = Regexp.last_match[1]
    elsif /(.*):\s(-?[0-9]*\s\S*)/.match(l)
      ram_info[Regexp.last_match[1].downcase] = Regexp.last_match[2]
    end
  end
  @mem_info = RAM.new(total: ram_info['total ram'], free: ram_info['free ram'], used: ram_info['used ram'], lost: ram_info['lost'], tuning: ram_info['tuning'])
end
process_total_pss_by_process(data) click to toggle source

Processes memory used by each running process

# File lib/device_api/android/plugins/memory.rb, line 54
def process_total_pss_by_process(data)
  data.each do |l|
    if /(.*):\s+(.*)\s+\(.*pid\s+(\S*).*\)/.match(l)
      @processes << MemInfo.new(process: Regexp.last_match[2], memory: Regexp.last_match[1], pid: Regexp.last_match[3] )
    end
  end
end
update() click to toggle source
# File lib/device_api/android/plugins/memory.rb, line 48
def update
  meminfo = ADB.dumpsys(@qualifier, 'meminfo')
  process_data(meminfo)
end