metriks 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/metriks.rb +1 -1
- data/lib/metriks/reporter/librato_metrics.rb +31 -24
- data/metriks.gemspec +1 -4
- data/test/librato_metrics_reporter_test.rb +2 -8
- metadata +6 -46
data/lib/metriks.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
|
-
require '
|
2
|
-
require 'faraday_middleware'
|
3
|
-
require 'yajl'
|
4
|
-
require 'yajl/json_gem'
|
1
|
+
require 'net/https'
|
5
2
|
|
6
3
|
module Metriks::Reporter
|
7
4
|
class LibratoMetrics
|
8
|
-
def self.connection
|
9
|
-
@connection ||= Faraday::Connection.new('https://metrics-api.librato.com') do |b|
|
10
|
-
b.use FaradayMiddleware::EncodeJson
|
11
|
-
b.adapter Faraday.default_adapter
|
12
|
-
b.use Faraday::Response::RaiseError
|
13
|
-
b.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
|
14
|
-
end.tap do |c|
|
15
|
-
c.headers[:content_type] = 'application/json'
|
16
|
-
c.headers[:user_agent] = "Metriks/#{Metriks::VERSION} Faraday/#{Faraday::VERSION}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
5
|
def initialize(email, token, options = {})
|
22
6
|
@email = email
|
23
7
|
@token = token
|
@@ -90,19 +74,42 @@ module Metriks::Reporter
|
|
90
74
|
end
|
91
75
|
end
|
92
76
|
|
93
|
-
submit(
|
77
|
+
submit(form_data(gauges.flatten))
|
94
78
|
end
|
95
79
|
|
96
|
-
def
|
97
|
-
|
98
|
-
|
80
|
+
def submit(data)
|
81
|
+
url = URI.parse('https://metrics-api.librato.com/v1/metrics')
|
82
|
+
req = Net::HTTP::Post.new(url.path)
|
83
|
+
req.basic_auth(@email, @token)
|
84
|
+
req.set_form_data(data)
|
85
|
+
|
86
|
+
http = Net::HTTP.new(url.host, url.port)
|
87
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
88
|
+
http.use_ssl = true
|
89
|
+
store = OpenSSL::X509::Store.new
|
90
|
+
store.set_default_paths
|
91
|
+
http.cert_store = store
|
92
|
+
|
93
|
+
case res = http.start { |http| http.request(req) }
|
94
|
+
when Net::HTTPSuccess, Net::HTTPRedirection
|
95
|
+
# OK
|
96
|
+
else
|
97
|
+
res.error!
|
99
98
|
end
|
100
99
|
end
|
101
100
|
|
102
|
-
def
|
103
|
-
|
104
|
-
|
101
|
+
def form_data(gauges)
|
102
|
+
data = {}
|
103
|
+
|
104
|
+
gauges.each_with_index do |gauge, idx|
|
105
|
+
gauge.each do |key, value|
|
106
|
+
if value
|
107
|
+
data["gauges[#{idx}][#{key}]"] = value.to_s
|
108
|
+
end
|
109
|
+
end
|
105
110
|
end
|
111
|
+
|
112
|
+
data
|
106
113
|
end
|
107
114
|
|
108
115
|
def prepare_metric(base_name, metric, keys, snapshot_keys = [])
|
data/metriks.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'metriks'
|
16
|
-
s.version = '0.9.
|
16
|
+
s.version = '0.9.2'
|
17
17
|
s.date = '2012-03-06'
|
18
18
|
|
19
19
|
## Make sure your summary is short. The description may be as long
|
@@ -42,9 +42,6 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.add_dependency('atomic', ["~> 1.0"])
|
43
43
|
s.add_dependency('hitimes', [ "~> 1.1"])
|
44
44
|
s.add_dependency('rbtree', [ "~> 0.3" ])
|
45
|
-
s.add_dependency('faraday', ['~> 0.7.0'])
|
46
|
-
s.add_dependency('faraday_middleware', ['~> 0.8.4'])
|
47
|
-
s.add_dependency('yajl-ruby')
|
48
45
|
|
49
46
|
## List your development dependencies here. Development dependencies are
|
50
47
|
## those that are only needed during development
|
@@ -6,14 +6,6 @@ class LibratoMetricsReporterTest < Test::Unit::TestCase
|
|
6
6
|
def setup
|
7
7
|
@registry = Metriks::Registry.new
|
8
8
|
@reporter = Metriks::Reporter::LibratoMetrics.new('user', 'password', :registry => @registry)
|
9
|
-
|
10
|
-
@reporter.connection.builder.tap do |c|
|
11
|
-
c.swap 1, Faraday::Adapter::Test do |stub|
|
12
|
-
stub.post '/v1/metrics' do |env|
|
13
|
-
[ 200, {}, '' ]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
9
|
end
|
18
10
|
|
19
11
|
def teardown
|
@@ -27,6 +19,8 @@ class LibratoMetricsReporterTest < Test::Unit::TestCase
|
|
27
19
|
@registry.timer('timer.testing').update(1.5)
|
28
20
|
@registry.utilization_timer('utilization_timer.testing').update(1.5)
|
29
21
|
|
22
|
+
@reporter.expects(:submit)
|
23
|
+
|
30
24
|
@reporter.write
|
31
25
|
end
|
32
26
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 9
|
8
|
-
-
|
9
|
-
version: 0.9.
|
8
|
+
- 2
|
9
|
+
version: 0.9.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Eric Lindvall
|
@@ -56,50 +56,10 @@ dependencies:
|
|
56
56
|
version: "0.3"
|
57
57
|
type: :runtime
|
58
58
|
version_requirements: *id003
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: faraday
|
61
|
-
prerelease: false
|
62
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - ~>
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
segments:
|
67
|
-
- 0
|
68
|
-
- 7
|
69
|
-
- 0
|
70
|
-
version: 0.7.0
|
71
|
-
type: :runtime
|
72
|
-
version_requirements: *id004
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: faraday_middleware
|
75
|
-
prerelease: false
|
76
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
78
|
-
- - ~>
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
segments:
|
81
|
-
- 0
|
82
|
-
- 8
|
83
|
-
- 4
|
84
|
-
version: 0.8.4
|
85
|
-
type: :runtime
|
86
|
-
version_requirements: *id005
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: yajl-ruby
|
89
|
-
prerelease: false
|
90
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
version: "0"
|
97
|
-
type: :runtime
|
98
|
-
version_requirements: *id006
|
99
59
|
- !ruby/object:Gem::Dependency
|
100
60
|
name: tomdoc
|
101
61
|
prerelease: false
|
102
|
-
requirement: &
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
103
63
|
requirements:
|
104
64
|
- - ~>
|
105
65
|
- !ruby/object:Gem::Version
|
@@ -108,11 +68,11 @@ dependencies:
|
|
108
68
|
- 2
|
109
69
|
version: "0.2"
|
110
70
|
type: :development
|
111
|
-
version_requirements: *
|
71
|
+
version_requirements: *id004
|
112
72
|
- !ruby/object:Gem::Dependency
|
113
73
|
name: mocha
|
114
74
|
prerelease: false
|
115
|
-
requirement: &
|
75
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
116
76
|
requirements:
|
117
77
|
- - ~>
|
118
78
|
- !ruby/object:Gem::Version
|
@@ -121,7 +81,7 @@ dependencies:
|
|
121
81
|
- 10
|
122
82
|
version: "0.10"
|
123
83
|
type: :development
|
124
|
-
version_requirements: *
|
84
|
+
version_requirements: *id005
|
125
85
|
description: An experimental metrics client.
|
126
86
|
email: eric@sevenscale.com
|
127
87
|
executables: []
|