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