class Threatinator::Actions::Run::CoverageObserver

Attributes

filename[R]

Public Class Methods

new(filename) click to toggle source
# File lib/threatinator/actions/run/coverage_observer.rb, line 8
def initialize(filename)
  @filename = filename
  @csv = nil
end

Public Instance Methods

close() click to toggle source
# File lib/threatinator/actions/run/coverage_observer.rb, line 53
def close
  @csv.close unless closed?
end
closed?() click to toggle source
# File lib/threatinator/actions/run/coverage_observer.rb, line 13
def closed?
  return false if @csv.nil?
  @csv.closed?
end
log_record(status, record, event_count, message = '') click to toggle source

@param [Symbol] status :parsed, :missed, :filtered @param [Threatinator::Record] record @param [Array<Threatinator::Event>] events

# File lib/threatinator/actions/run/coverage_observer.rb, line 46
def log_record(status, record, event_count, message = '')
  return if closed?
  @csv.add_row(  [
    status, event_count, record.line_number, 
    record.pos_start, record.pos_end, record.data.inspect, message])
end
open() click to toggle source
# File lib/threatinator/actions/run/coverage_observer.rb, line 18
def open
  @csv = ::CSV.open(@filename, "wb", :headers => [:status, :event_count, :line_number, :pos_start, :pos_end, :data, :message], :write_headers => true)
end
update(message, *args) click to toggle source

Handles FeedRunner observations

# File lib/threatinator/actions/run/coverage_observer.rb, line 23
def update(message, *args)
  case message
  when :record_missed
    log_record(:missed, args.shift, 0)
  when :record_filtered
    log_record(:filtered, args.shift, 0)
  when :record_parsed
    log_record(:parsed, args.shift, args.shift.count)
  when :record_error
    record = args.shift
    errors = args.shift
    message = errors.map { |e| e.message }.join(', ')
    log_record(:error, record, 0, message)
  when :end
    close
  when :start
    open
  end
end