From 9b0fb64ba11558939e2fc3fad034e703d265c81e Mon Sep 17 00:00:00 2001 From: Henrik Hodne Date: Wed, 9 Apr 2014 16:47:25 -0500 Subject: [PATCH] skylight: add service probe --- lib/travis/api/app/base.rb | 1 + lib/travis/api/app/skylight/service_probe.rb | 51 ++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 lib/travis/api/app/skylight/service_probe.rb diff --git a/lib/travis/api/app/base.rb b/lib/travis/api/app/base.rb index b9b81779..93ecab1a 100644 --- a/lib/travis/api/app/base.rb +++ b/lib/travis/api/app/base.rb @@ -11,6 +11,7 @@ class Travis::Api::App require 'skylight' require 'travis/api/app/skylight/dalli_probe' require 'travis/api/app/skylight/redis_probe' + require 'travis/api/app/skylight/service_probe' register ::Skylight::Sinatra end diff --git a/lib/travis/api/app/skylight/service_probe.rb b/lib/travis/api/app/skylight/service_probe.rb new file mode 100644 index 00000000..b71dc661 --- /dev/null +++ b/lib/travis/api/app/skylight/service_probe.rb @@ -0,0 +1,51 @@ +require 'skylight' +require 'travis/api/app' + +class Travis::Api::App + module Skylight + class ServiceProbe + class ServiceProxy < Delegator + def initialize(key, service) + super(service) + @key = key + @service = service + end + + def __getobj__ + @service + end + + def __setobj__(obj) + @service = obj + end + + def run(*args) + opts = { + category: "api.service.#{@key}", + title: "Service #{@key}", + annotations: { + service: @key.to_s + } + } + + ::Skylight.instrument(opts) do + @service.run(*args) + end + end + end + + def install + Travis::Services::Helpers.class_eval do + alias service_without_sk service + + def service(key, *args) + s = service_without_sk(key, *args) + ServiceProxy.new(key, s) + end + end + end + end + + ::Skylight::Probes.register("Travis::Services::Helpers", "travis/services/helpers", ServiceProbe.new) + end +end