class Droid::Monitor::Gfxinfo

Attributes

gfxinfo_usage[R]

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method Droid::Monitor::Adb::new
# File lib/droid/monitor/gfxinfo.rb, line 16
def initialize(opts = {})
  super(opts)
  @gfxinfo_usage = []
end

Public Instance Methods

clear_gfxinfo_usage() click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 21
def clear_gfxinfo_usage
  @gfxinfo_usage = []
end
create_graph(data_file_path, graph_opts = {}, output_file_path) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 160
def create_graph(data_file_path, graph_opts = {}, output_file_path) # rubocop:disable Style/OptionalArguments
  save(Droid::Monitor::GoogleApiTemplate.create_graph(data_file_path, graph_opts),
       output_file_path)
end
dump_gfxinfo_usage(dump_data) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 25
def dump_gfxinfo_usage(dump_data)
  view_dump = dump_data.scan(/^.*views,.*kB of display lists.*$/).map(&:strip).first
  view_memory_dump2 = dump_data.scan(/^.*bytes,.*MB.*$/).map(&:strip).first

  return [] if view_dump.nil? || view_memory_dump2.nil?

  v_dump = view_dump.split(/\s/).reject(&:empty?)
  v_mem_dump = view_memory_dump2.split(/\s/).reject(&:empty?)

  gfxs = v_mem_dump + v_dump

  if @api_level >= 23
    view_total_frames_rendered = dump_data.scan(/^.*Total frames rendered:.*$/).map(&:strip).first
    view_janky_frames = dump_data.scan(/^.*Janky frames:.*$/).map(&:strip).first

    v_frames_rendered_dump = view_total_frames_rendered.split(/\s/).reject(&:empty?)
    v_janky_frames = view_janky_frames.split(/\s/).reject(&:empty?)

    gfxs = v_mem_dump + v_dump + v_frames_rendered_dump + v_janky_frames
  end

  gfxs
rescue StandardError => e
  puts e
  []
end
export_as_google_api_format_frame(from_gfxinfo_usage) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 132
def export_as_google_api_format_frame(from_gfxinfo_usage)
  google_api_data_format = empty_google_api_format_frame

  if @api_level >= 23
    from_gfxinfo_usage.each do |hash|
      a_google_api_data_format = {
        c: [
          { v: hash[:time] },
          { v: hash[:frames_rendered] },
          { v: hash[:janky_frame] }
        ]
      }
      google_api_data_format[:rows].push(a_google_api_data_format)
    end
  else
    from_gfxinfo_usage.each do |hash|
      a_google_api_data_format = {
        c: [
          { v: hash[:time] },
          { v: hash[:frames_rendered] }
        ]
      }
      google_api_data_format[:rows].push(a_google_api_data_format)
    end
  end
  JSON.generate google_api_data_format
end
export_as_google_api_format_gfx(from_gfxinfo_usage) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 99
def export_as_google_api_format_gfx(from_gfxinfo_usage)
  google_api_data_format = empty_google_api_format_gfx

  from_gfxinfo_usage.each do |hash|
    a_google_api_data_format = {
      c: [
        { v: hash[:time] },
        { v: hash[:view] },
        { v: hash[:display_lists_kb] }
      ]
    }
    google_api_data_format[:rows].push(a_google_api_data_format)
  end

  JSON.generate google_api_data_format
end
export_as_google_api_format_mem(from_gfxinfo_usage) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 116
def export_as_google_api_format_mem(from_gfxinfo_usage)
  google_api_data_format = empty_google_api_format_mem

  from_gfxinfo_usage.each do |hash|
    a_google_api_data_format = {
      c: [
        { v: hash[:time] },
        { v: hash[:total_memory] }
      ]
    }
    google_api_data_format[:rows].push(a_google_api_data_format)
  end

  JSON.generate google_api_data_format
end
save_gfxinfo_usage_as_google_api(file_path_gfx, file_path_mem, file_path_frame) click to toggle source

@param [String] file_path_gfx A file path to save gfx data. @param [String] file_path_mem A file path to save memory usage regarding gfx data. @param [String] file_path_frame A file path to save frame data.

# File lib/droid/monitor/gfxinfo.rb, line 60
def save_gfxinfo_usage_as_google_api(file_path_gfx, file_path_mem, file_path_frame)
  save(export_as_google_api_format_gfx(@gfxinfo_usage), file_path_gfx)
  save(export_as_google_api_format_mem(@gfxinfo_usage), file_path_mem)
  save(export_as_google_api_format_frame(@gfxinfo_usage), file_path_frame)
end
store_dumped_gfxinfo_usage() click to toggle source

called directory

# File lib/droid/monitor/gfxinfo.rb, line 53
def store_dumped_gfxinfo_usage
  store_gfxinfo_usage(dump_gfxinfo_usage(dump_gfxinfo))
end
store_gfxinfo_usage(dumped_gfxinfo) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 66
def store_gfxinfo_usage(dumped_gfxinfo)
  @gfxinfo_usage.push merge_current_time(transfer_total_gfxinfo_to_hash(dumped_gfxinfo))
end
transfer_total_gfxinfo_to_hash(dump_gfxinfo_array) click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 70
def transfer_total_gfxinfo_to_hash(dump_gfxinfo_array)
  if dump_gfxinfo_array.length <= 1
    {
      view: 0,
      display_lists_kb: 0,
      frames_rendered: 0,
      total_memory: 0,
      time: dump_gfxinfo_array.last
    }
  elsif @api_level >= 23
    {
      view: dump_gfxinfo_array[4].to_i,
      display_lists_kb: dump_gfxinfo_array[6].to_f.round(2),
      frames_rendered: dump_gfxinfo_array[14].to_i || 0,
      janky_frame: dump_gfxinfo_array[17].to_i || 0,
      total_memory: (dump_gfxinfo_array[0].to_f / 1024).round(2),
      time: dump_gfxinfo_array.last
    }
  else
    {
      view: dump_gfxinfo_array[4].to_i,
      display_lists_kb: dump_gfxinfo_array[6].to_f.round(2),
      frames_rendered: dump_gfxinfo_array[11].to_i || 0,
      total_memory: (dump_gfxinfo_array[0].to_f / 1024).round(2),
      time: dump_gfxinfo_array.last
    }
  end
end

Private Instance Methods

empty_google_api_format_frame() click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 188
def empty_google_api_format_frame
  if @api_level >= 23
    {
      cols: [
        { label: 'time', type: 'string' },
        { label: 'frames_rendered', type: 'number' },
        { label: 'janky_frame', type: 'number' }
      ],
      rows: []
    }
  else
    {
      cols: [
        { label: 'time', type: 'string' },
        { label: 'frames_rendered', type: 'number' }
      ],
      rows: []
    }
  end
end
empty_google_api_format_gfx() click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 167
def empty_google_api_format_gfx
  {
    cols: [
      { label: 'time', type: 'string' },
      { label: 'view', type: 'number' },
      { label: 'display_lists_kb', type: 'number' }
    ],
    rows: []
  }
end
empty_google_api_format_mem() click to toggle source
# File lib/droid/monitor/gfxinfo.rb, line 178
def empty_google_api_format_mem
  {
    cols: [
      { label: 'time', type: 'string' },
      { label: 'total_memory', type: 'number' }
    ],
    rows: []
  }
end