travis-api/lib/travis/event/handler/metrics.rb
Aakriti Gupta 65f1a29d86 Move travis-core files from /vendor to /lib.
- Re-factor
- Remove code for notifications
- Remove addons
- Remove travis-core gem.
- Ignore logs directory only
- Move core tests to spec/lib
2016-07-20 11:22:25 +02:00

51 lines
1.3 KiB
Ruby

require 'travis/support/metrics'
module Travis
module Event
class Handler
# Stores metrics about domain events
class Metrics < Handler
EVENTS = /job:test:(started|finished)/
def initialize(*)
super
@payload = Api::Serialize.data(object, type: 'job', for: 'event', version: 'v0', params: data)
end
def handle?
true
end
def handle
case event
when 'job:test:started'
events = %W(job.queue.wait_time job.queue.wait_time.#{queue})
if job['created_at'] && job['started_at']
meter(events, job['created_at'], job['started_at'])
end
when 'job:test:finished'
events = %W(job.duration job.duration.#{queue})
if job['started_at'] && job['finished_at']
meter(events, job['started_at'], job['finished_at'])
end
end
end
private
def queue
job['queue'].gsub('.', '-')
end
def meter(events, started_at, finished_at)
events.each do |event|
Travis::Metrics.meter(event, started_at: started_at, finished_at: finished_at)
end
end
end
end
end
end