Sha256: 605ac67ab342a7037d35b76f5bfab250590c270f9d1096c0ecbd650c26667119

Contents?: true

Size: 1.88 KB

Versions: 3

Compression:

Stored size: 1.88 KB

Contents

require 'optparse'
require 'json'

module PerfMonger
module Command

class SummaryCommand < BaseCommand
  register_command 'summary', "Show a summary of a perfmonger log file"

  def initialize
    @parser = OptionParser.new
    @parser.banner = <<EOS
Usage: perfmonger summary [options] LOG_FILE

Options:
EOS

    @json = false
    @pager = nil
    @disk_only_regex = nil

    @parser.on('--json', "Output summary in JSON") do
      @json = true
    end

    @parser.on('-p', '--pager [PAGER]', "Use pager to see summary output.") do |pager|
      if pager.nil?
        if ENV['PAGER'].nil?
          puts("ERROR: No pager is available.")
          puts("ERROR: Please set PAGER or give pager name to --pager option.")
          puts(@parser.help)
          exit(false)
        else
          @pager = ENV['PAGER']
        end
      else
        @pager = pager
      end
    end

    @parser.on('--disk-only REGEX', "Select disk devices that matches REGEX") do |regex|
      @disk_only_regex = regex
    end
  end

  def parse_args(argv)
    @parser.parse!(argv)

    if argv.size == 0
      puts("ERROR: PerfMonger log file is required")
      puts(@parser.help)
      exit(false)
    end

    @logfile = argv.shift
    if ! File.exists?(@logfile)
      puts("ERROR: No such file: #{@logfile}")
      puts(@parser.help)
      exit(false)
    end
  end

  def run(argv, summary_title = nil)
    parse_args(argv)

    summary_title ||= @logfile

    @summarizer_bin = ::PerfMonger::Command::CoreFinder.summarizer()

    if ! @summarizer_bin
      puts("[ERROR] no executable binary found.")
      exit(false)
    end

    cmd = [@summarizer_bin]

    if @json
      cmd << "-json"
    end

    if @disk_only_regex
      cmd << "-disk-only"
      cmd << @disk_only_regex
    end

    cmd << "-title"
    cmd << summary_title

    cmd << @logfile

    Process.exec(*cmd)
  end
end

end # module Command
end # module PerfMonger

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
perfmonger-0.8.2 lib/perfmonger/command/summary.rb
perfmonger-0.8.1 lib/perfmonger/command/summary.rb
perfmonger-0.8.0 lib/perfmonger/command/summary.rb