class GroongaQueryLog::CommandVersionCompatibilityChecker

Public Class Methods

new(options) click to toggle source
# File lib/groonga-query-log/command-version-compatibility-checker.rb, line 21
def initialize(options)
  @options = options
  @incompatibility_detector = @options.create_incompatibility_detector
  @output = $stdout
  @nth_item = 1
end

Public Instance Methods

check(input) click to toggle source
# File lib/groonga-query-log/command-version-compatibility-checker.rb, line 40
def check(input)
  compatible = true
  parser = Parser.new
  parser.parse(input) do |statistic|
    incompatibles = @incompatibility_detector.detect(statistic)
    next if incompatibles.empty?
    compatible = false
    incompatibles.each do |incompatible|
      report_incompatible(statistic, incompatible)
    end
  end
  compatible
end
start() { || ... } click to toggle source
# File lib/groonga-query-log/command-version-compatibility-checker.rb, line 28
def start
  original_output = @output
  result = nil
  @options.create_output do |output|
    @output = output
    result = yield
  end
  result
ensure
  @output = original_output
end

Private Instance Methods

report_incompatible(statistic, incompatible) click to toggle source
# File lib/groonga-query-log/command-version-compatibility-checker.rb, line 55
def report_incompatible(statistic, incompatible)
  nth_item = @nth_item
  @nth_item += 1
  version = @incompatibility_detector.version
  start_time = statistic.start_time.strftime("%Y-%m-%d %H:%M:%S.%6N")
  @output.puts("#{nth_item}: version#{version}: #{incompatible}")
  @output.puts("  %s" % start_time)
  @output.puts("  #{statistic.raw_command}")
  @output.puts("  Parameters:")
  statistic.command.arguments.each do |key, value|
    @output.puts("    <#{key}>: <#{value}>")
  end
end