librato-metrics 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- 6/w���WeLz��6<t�|)��Ň�b�I&m��o̫�fcXi��}����� � ����u~38 �#1bfH���X�1Ε|6b��0�
2
- �'������+��JdB��xfpٟ��5J��4�J�
1
+ �ԇ��d�I�T.���`<���3��e����U�Q����6��f�M;AC�@yCf���V��H�$.��B҄&܈��LʔSOS�����$ƒ5�Ak�]�g�M�����ru��D��ؖC1f>��z���ɠ�`�ɥ/U[�aYJ���������I�+~w��sn��*�ď��:Sb�ލ�9�u �>�z����0 V��ο.�Y:0͟�=ʍL��7c�/�N]=�9��^[]3z/���풏'B���[*
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Changelog
2
2
 
3
+ ### Version 1.2.0
4
+ * Give metric-facing methods more explicit names & deprecate priors
5
+ * Documentation improvements
6
+
3
7
  ### Version 1.1.1
4
8
  * Move gem sign code to rake task, fixes bug bundling in some environments
5
9
 
data/README.md CHANGED
@@ -186,52 +186,52 @@ Both options are driven by the addition of measurements. Specifically for time-b
186
186
 
187
187
  Get name and properties for all metrics you have in the system:
188
188
 
189
- metrics = Librato::Metrics.list
189
+ metrics = Librato::Metrics.metrics
190
190
 
191
191
  Get only metrics whose name includes `time`:
192
192
 
193
- metrics = Librato::Metrics.list :name => 'time'
193
+ metrics = Librato::Metrics.metrics :name => 'time'
194
194
 
195
195
  ## Querying Metric Data
196
196
 
197
197
  Get attributes for metric `temperature`:
198
198
 
199
- data = Librato::Metrics.fetch :temperature
199
+ data = Librato::Metrics.get_metric :temperature
200
200
 
201
201
  Get the 20 most recent data points for `temperature`:
202
202
 
203
- data = Librato::Metrics.fetch :temperature, :count => 20
203
+ data = Librato::Metrics.get_measurements :temperature, :count => 20
204
204
 
205
205
  Get the 20 most recent data points for `temperature` from a specific source:
206
206
 
207
- data = Librato::Metrics.fetch :temperature, :count => 20, :source => 'app1'
207
+ data = Librato::Metrics.get_measurements :temperature, :count => 20, :source => 'app1'
208
208
 
209
209
  Get the 20 most recent 15 minute data point rollups for `temperature`:
210
210
 
211
- data = Librato::Metrics.fetch :temperature, :count => 20, :resolution => 900
211
+ data = Librato::Metrics.get_measurements :temperature, :count => 20, :resolution => 900
212
212
 
213
- There are many more options supported for querying, take a look at the [REST API docs](http://dev.librato.com/v1/get/gauges/:name) or the [fetch documentation](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#fetch-instance_method) for more details.
213
+ There are many more options supported for querying, take a look at the [REST API docs](http://dev.librato.com/v1/get/gauges/:name) or the [`get_metric`](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#get_metric-instance_method)/[`get_measurements`](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#get_measurements-instance_method) documentation for more details.
214
214
 
215
215
  ## Setting Metric Properties
216
216
 
217
217
  Setting custom [properties](http://dev.librato.com/v1/metrics#metric_properties) on your metrics is easy:
218
218
 
219
219
  # assign a period and default color
220
- Librato::Metrics.update :temperature, :period => 15, :attributes => { :color => 'F00' }
220
+ Librato::Metrics.update_metric :temperature, :period => 15, :attributes => { :color => 'F00' }
221
221
 
222
- It is also possible to update properties for multiple metrics at once, see the [#update method documentation](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#update-instance_method) for more information.
222
+ It is also possible to update properties for multiple metrics at once, see the [`#update_metric` method documentation](http://rubydoc.info/github/librato/librato-metrics/master/Librato/Metrics/Client#update_metric-instance_method) for more information.
223
223
 
224
224
  ## Deleting Metrics
225
225
 
226
226
  If you ever need to remove a metric and all of its measurements, doing so is easy:
227
227
 
228
228
  # delete the metrics 'temperature' and 'humidity'
229
- Librato::Metrics.delete :temperature, :humidity
229
+ Librato::Metrics.delete_metrics :temperature, :humidity
230
230
 
231
231
  You can also delete using wildcards:
232
232
 
233
233
  # delete metrics that start with cpu. except for cpu.free
234
- Librato::Metrics.delete :names => 'cpu.*', :exclude => ['cpu.free']
234
+ Librato::Metrics.delete_metrics :names => 'cpu.*', :exclude => ['cpu.free']
235
235
 
236
236
  Note that deleted metrics and their measurements are unrecoverable, so use with care.
237
237
 
@@ -248,10 +248,10 @@ If you need to use metrics with multiple sets of authentication credentials simu
248
248
  All of the same operations you can call directly from `Librato::Metrics` are available per-client:
249
249
 
250
250
  # list Joe's metrics
251
- joe.list
251
+ joe.metrics
252
252
 
253
253
  # fetch the last 20 data points for Mike's metric, humidity
254
- mike.fetch :humidity, :count => 20
254
+ mike.get_measurements :humidity, :count => 20
255
255
 
256
256
  There are two ways to associate a new queue with a client:
257
257
 
@@ -32,7 +32,7 @@ module Librato
32
32
  # Librato::Metrics.submit :foo => 12712
33
33
  #
34
34
  # # fetch the last 10 values of foo
35
- # Librato::Metrics.fetch :foo, :count => 10
35
+ # Librato::Metrics.get_measurements :foo, :count => 10
36
36
  #
37
37
  # @example Queuing metrics for submission
38
38
  # queue = Librato::Metrics::Queue.new
@@ -73,10 +73,15 @@ module Librato
73
73
  # Client.
74
74
  #
75
75
  def_delegators :client, :agent_identifier, :annotate, :api_endpoint,
76
- :api_endpoint=, :authenticate, :connection, :delete,
77
- :faraday_adapter, :faraday_adapter=, :fetch, :list,
78
- :persistence, :persistence=, :persister, :submit,
79
- :update
76
+ :api_endpoint=, :authenticate, :connection,
77
+ :faraday_adapter, :faraday_adapter=,
78
+ :persistence, :persistence=, :persister,
79
+ :get_metric, :get_measurements, :metrics,
80
+ :delete_metrics, :update_metric, :update_metrics,
81
+ :submit,
82
+ # Deprecated metrics methods
83
+ :fetch, :list, :delete, :update
84
+
80
85
 
81
86
  # The Librato::Metrics::Client being used by module-level
82
87
  # access.
@@ -4,6 +4,24 @@ require 'metrics/processor'
4
4
  module Librato
5
5
  module Metrics
6
6
 
7
+ # If you are measuring something very frequently you can sample into
8
+ # an aggregator and it will track and submit a single aggregate
9
+ # measurement
10
+ #
11
+ # @example
12
+ # aggregator = Libato::Metrics::Aggregator.new
13
+ #
14
+ # 40.times do
15
+ # # do work...
16
+ # aggregator.add 'work.time' => work_time
17
+ # end
18
+ #
19
+ # # send directly
20
+ # aggregator.submit
21
+ #
22
+ # # or merge into a queue for submission
23
+ # queue.merge!(aggregator)
24
+ #
7
25
  class Aggregator
8
26
  SOURCE_SEPARATOR = '%%' # must not be in valid source name criteria
9
27
 
@@ -24,6 +42,12 @@ module Librato
24
42
 
25
43
  # Add a metric entry to the metric set:
26
44
  #
45
+ # @example Basic use
46
+ # annotator.add 'request.time' => 30.24
47
+ #
48
+ # @example With a custom source
49
+ # annotator.add 'request.time' => {value: 20.52, source: 'staging'}
50
+ #
27
51
  # @param [Hash] measurements measurements to add
28
52
  # @return [Aggregator] returns self
29
53
  def add(measurements)
@@ -86,15 +86,15 @@ module Librato
86
86
  # careful with this, this is instant and permanent.
87
87
  #
88
88
  # @example Delete metric 'temperature'
89
- # Librato::Metrics.delete :temperature
89
+ # Librato::Metrics.delete_metrics :temperature
90
90
  #
91
91
  # @example Delete metrics 'foo' and 'bar'
92
- # Librato::Metrics.delete :foo, :bar
92
+ # Librato::Metrics.delete_metrics :foo, :bar
93
93
  #
94
94
  # @example Delete metrics that start with 'foo' except 'foobar'
95
- # Librato::Metrics.delete :names => 'foo*', :exclude => ['foobar']
95
+ # Librato::Metrics.delete_metrics :names => 'foo*', :exclude => ['foobar']
96
96
  #
97
- def delete(*metric_names)
97
+ def delete_metrics(*metric_names)
98
98
  raise(NoMetricsProvided, 'Metric name missing.') if metric_names.empty?
99
99
  if metric_names[0].respond_to?(:keys) # hash form
100
100
  params = metric_names[0]
@@ -109,6 +109,12 @@ module Librato
109
109
  true
110
110
  end
111
111
 
112
+ # Completely delete metrics with the given names. Be
113
+ # careful with this, this is instant and permanent.
114
+ #
115
+ # @deprecated Use {#delete_metrics} instead
116
+ def delete(*metric_names); delete_metrics(*metric_names); end
117
+
112
118
  # Return current adapter this client will use.
113
119
  # Defaults to Metrics.faraday_adapter if set, otherwise
114
120
  # Faraday.default_adapter
@@ -123,6 +129,8 @@ module Librato
123
129
 
124
130
  # Query metric data
125
131
  #
132
+ # @deprecated Use {#get_metric} or {#get_measurements} instead.
133
+ #
126
134
  # @example Get attributes for a metric
127
135
  # attrs = Librato::Metrics.fetch :temperature
128
136
  #
@@ -146,11 +154,30 @@ module Librato
146
154
  # :resolution => 900
147
155
  #
148
156
  # A full list of query parameters can be found in the API
149
- # documentation: {http://dev.librato.com/v1/get/gauges/:name}
157
+ # documentation: {http://dev.librato.com/v1/get/metrics/:name}
150
158
  #
151
159
  # @param [Symbol|String] metric Metric name
152
160
  # @param [Hash] options Query options
153
161
  def fetch(metric, options={})
162
+ metric = get_metric(metric, options)
163
+ options.empty? ? metric : metric["measurements"]
164
+ end
165
+
166
+ # Retrieve a specific metric by name, optionally including data points
167
+ #
168
+ # @example Get attributes for a metric
169
+ # metric = Librato::Metrics.get_metric :temperature
170
+ #
171
+ # @example Get a metric and its 20 most recent data points
172
+ # metric = Librato::Metrics.fetch :temperature, :count => 20
173
+ # metric['measurements'] # => {...}
174
+ #
175
+ # A full list of query parameters can be found in the API
176
+ # documentation: {http://dev.librato.com/v1/get/metrics/:name}
177
+ #
178
+ # @param [Symbol|String] name Metric name
179
+ # @param [Hash] options Query options
180
+ def get_metric(name, options = {})
154
181
  query = options.dup
155
182
  if query[:start_time].respond_to?(:year)
156
183
  query[:start_time] = query[:start_time].to_i
@@ -162,11 +189,42 @@ module Librato
162
189
  query[:resolution] ||= 1
163
190
  end
164
191
  # expects 200
165
- url = connection.build_url("metrics/#{metric}", query)
192
+ url = connection.build_url("metrics/#{name}", query)
166
193
  response = connection.get(url)
167
194
  parsed = SmartJSON.read(response.body)
168
195
  # TODO: pagination support
169
- query.empty? ? parsed : parsed["measurements"]
196
+ parsed
197
+ end
198
+
199
+ # Retrieve data points for a specific metric
200
+ #
201
+ # @example Get 20 most recent data points for metric
202
+ # data = Librato::Metrics.get_measurements :temperature, :count => 20
203
+ #
204
+ # @example Get 20 most recent data points for a specific source
205
+ # data = Librato::Metrics.get_measurements :temperature, :count => 20,
206
+ # :source => 'app1'
207
+ #
208
+ # @example Get the 20 most recent 15 minute data point rollups
209
+ # data = Librato::Metrics.get_measurements :temperature, :count => 20,
210
+ # :resolution => 900
211
+ #
212
+ # @example Get data points for the last hour
213
+ # data = Librato::Metrics.get_measurements :start_time => Time.now-3600
214
+ #
215
+ # @example Get 15 min data points from two hours to an hour ago
216
+ # data = Librato::Metrics.get_measurements :start_time => Time.now-7200,
217
+ # :end_time => Time.now-3600,
218
+ # :resolution => 900
219
+ #
220
+ # A full list of query parameters can be found in the API
221
+ # documentation: {http://dev.librato.com/v1/get/metrics/:name}
222
+ #
223
+ # @param [Symbol|String] metric_name Metric name
224
+ # @param [Hash] options Query options
225
+ def get_measurements(metric_name, options = {})
226
+ raise ArgumentError, "you must provide at least a :start_time or :count" if options.empty?
227
+ get_metric(metric_name, options)["measurements"]
170
228
  end
171
229
 
172
230
  # Purge current credentials and connection.
@@ -186,7 +244,7 @@ module Librato
186
244
  # Librato::Metrics.list :name => 'foo'
187
245
  #
188
246
  # @param [Hash] options
189
- def list(options={})
247
+ def metrics(options={})
190
248
  query = {}
191
249
  query[:name] = options[:name] if options[:name]
192
250
  offset = 0
@@ -194,6 +252,11 @@ module Librato
194
252
  Collection.paginated_metrics(connection, path, query)
195
253
  end
196
254
 
255
+ # List currently existing metrics
256
+ #
257
+ # @deprecated Use {#metrics} instead
258
+ def list(options={}); metrics(options); end
259
+
197
260
  # Create a new queue which uses this client.
198
261
  #
199
262
  # @return [Queue]
@@ -232,32 +295,48 @@ module Librato
232
295
  @queue.submit
233
296
  end
234
297
 
235
- # Update one or more metrics. Note that attributes are specified in
236
- # their own hash for updating a single metric but are included inline
237
- # when updating multiple metrics.
298
+ # Update a single metric with new attributes.
238
299
  #
239
300
  # @example Update metric 'temperature'
240
- # Librato::Metrics.update :temperature, :period => 15, :attributes => { :color => 'F00' }
301
+ # Librato::Metrics.update_metric :temperature, :period => 15, :attributes => { :color => 'F00' }
241
302
  #
242
303
  # @example Update metric 'humidity', creating it if it doesn't exist
243
- # Librato::Metrics.update 'humidity', :type => :gauge, :period => 60, :display_name => 'Humidity'
304
+ # Librato::Metrics.update_metric 'humidity', :type => :gauge, :period => 60, :display_name => 'Humidity'
305
+ #
306
+ def update_metric(metric, options = {})
307
+ url = "metrics/#{metric}"
308
+ connection.put do |request|
309
+ request.url connection.build_url(url)
310
+ request.body = SmartJSON.write(options)
311
+ end
312
+ end
313
+
314
+ # Update multiple metrics.
244
315
  #
245
316
  # @example Update multiple metrics by name
246
- # Librato::Metrics.update :names => ["foo", "bar"], :period => 60
317
+ # Librato::Metrics.update_metrics :names => ["foo", "bar"], :period => 60
247
318
  #
248
319
  # @example Update all metrics that start with 'foo' that aren't 'foobar'
249
- # Librato::Metrics.update :names => 'foo*', :exclude => ['foobar'], :display_min => 0
320
+ # Librato::Metrics.update_metrics :names => 'foo*', :exclude => ['foobar'], :display_min => 0
250
321
  #
251
- def update(metric, options = {})
252
- if metric.respond_to?(:each)
253
- url = "metrics" # update multiple metrics
254
- options = metric
255
- else
256
- url = "metrics/#{metric}" # update single
257
- end
322
+ def update_metrics(metrics)
323
+ url = "metrics" # update multiple metrics
258
324
  connection.put do |request|
259
325
  request.url connection.build_url(url)
260
- request.body = SmartJSON.write(options)
326
+ request.body = SmartJSON.write(metrics)
327
+ end
328
+ end
329
+
330
+ # Update one or more metrics. Note that attributes are specified in
331
+ # their own hash for updating a single metric but are included inline
332
+ # when updating multiple metrics.
333
+ #
334
+ # @deprecated Use {#update_metric} or {#update_metrics} instead
335
+ def update(metric, options={})
336
+ if metric.respond_to?(:each)
337
+ update_metrics(metric)
338
+ else
339
+ update_metric(metric, options)
261
340
  end
262
341
  end
263
342
 
@@ -278,4 +357,4 @@ module Librato
278
357
  end
279
358
 
280
359
  end
281
- end
360
+ end
@@ -1,5 +1,9 @@
1
1
  module Librato
2
2
  module Metrics
3
+
4
+ # An internal class used for extracting pagination logic
5
+ #
6
+ # @api private
3
7
  class Collection
4
8
 
5
9
  MAX_RESULTS = 100
@@ -1,3 +1,2 @@
1
-
2
1
  require 'metrics/persistence/direct'
3
2
  require 'metrics/persistence/test'
@@ -1,6 +1,8 @@
1
1
  module Librato
2
2
  module Metrics
3
3
 
4
+ # Mixin which provides common logic between {Queue} and {Aggregator}
5
+ # objects.
4
6
  module Processor
5
7
  MEASUREMENTS_PER_REQUEST = 500
6
8
 
@@ -1,5 +1,5 @@
1
1
  module Librato
2
2
  module Metrics
3
- VERSION = "1.1.1"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ DEPRECATED_METHODS = %w[fetch list update delete]
4
+ describe Librato::Metrics do
5
+
6
+ DEPRECATED_METHODS.each do |deprecated_method|
7
+ it { should respond_to(deprecated_method) }
8
+ end
9
+
10
+ describe "Client" do
11
+ let(:client) { Librato::Metrics.client }
12
+ subject { client }
13
+
14
+ before(:all) { prep_integration_tests }
15
+
16
+ before do
17
+ client.submit :test_metric => 123.0
18
+ end
19
+
20
+ DEPRECATED_METHODS.each do |deprecated_method|
21
+ it { should respond_to(deprecated_method) }
22
+ end
23
+
24
+ describe "#fetch" do
25
+ context "with no measurements attributes" do
26
+ let(:metric) { client.fetch(:test_metric) }
27
+ subject { metric }
28
+
29
+ it { should_not be_nil }
30
+
31
+ it "should return a metric" do
32
+ metric["name"].should == "test_metric"
33
+ end
34
+ end
35
+
36
+ context "with measurements attributes" do
37
+ let(:measurements) { client.fetch(:test_metric, :count => 1) }
38
+ subject { measurements }
39
+
40
+ it { should_not be_nil }
41
+ it { should_not be_empty }
42
+
43
+ it "should return the measurements" do
44
+ measurements.should have_key("unassigned")
45
+ measurements["unassigned"].should be_an(Array)
46
+ measurements["unassigned"].first["value"].should == 123.0
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "#list" do
52
+ let(:metrics) { client.list }
53
+ subject { metrics }
54
+
55
+ it { should_not be_nil }
56
+ it { should_not be_empty }
57
+
58
+ it "should return the list of metrics" do
59
+ metric = metrics.find { |m| m["name"] == "test_metric" }
60
+ metric.should_not be_nil
61
+ end
62
+ end
63
+
64
+ describe "#update" do
65
+ before do
66
+ client.update("test_metric", :display_name => "Test Deprecated Update")
67
+ end
68
+
69
+ let(:updated_metric) { client.get_metric("test_metric") }
70
+
71
+ it "should update the metric" do
72
+ updated_metric["display_name"].should == "Test Deprecated Update"
73
+ end
74
+ end
75
+
76
+ describe "#delete" do
77
+ it "should delete the metric" do
78
+ client.metrics(:name => "test_metric").should_not be_empty
79
+ client.delete("test_metric")
80
+ client.metrics(:name => "test_metric").should be_empty
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -30,9 +30,9 @@ module Librato
30
30
 
31
31
  metrics = Metrics.list
32
32
  metrics.length.should == 8
33
- counter = Metrics.fetch :counter_3, :count => 1
33
+ counter = Metrics.get_measurements :counter_3, :count => 1
34
34
  counter['unassigned'][0]['value'].should == 3
35
- gauge = Metrics.fetch :gauge_5, :count => 1
35
+ gauge = Metrics.get_measurements :gauge_5, :count => 1
36
36
  gauge['unassigned'][0]['value'].should == 5
37
37
  end
38
38
  end
@@ -43,10 +43,10 @@ module Librato
43
43
  queue.add :bar => {:value => 456, :source => 'barsource'}
44
44
  queue.submit
45
45
 
46
- foo = Metrics.fetch :foo, :count => 2
46
+ foo = Metrics.get_measurements :foo, :count => 2
47
47
  foo['default'][0]['value'].should == 123
48
48
 
49
- bar = Metrics.fetch :bar, :count => 2
49
+ bar = Metrics.get_measurements :bar, :count => 2
50
50
  bar['barsource'][0]['value'].should == 456
51
51
  end
52
52
 
@@ -43,7 +43,7 @@ module Librato
43
43
  end
44
44
  end
45
45
 
46
- describe "#delete" do
46
+ describe "#delete_metrics" do
47
47
  before(:each) { delete_all_metrics }
48
48
 
49
49
  context 'by names' do
@@ -51,19 +51,19 @@ module Librato
51
51
  context "with a single argument" do
52
52
  it "should delete named metric" do
53
53
  Metrics.submit :foo => 123
54
- Metrics.list(:name => :foo).should_not be_empty
55
- Metrics.delete :foo
56
- Metrics.list(:name => :foo).should be_empty
54
+ Metrics.metrics(:name => :foo).should_not be_empty
55
+ Metrics.delete_metrics :foo
56
+ Metrics.metrics(:name => :foo).should be_empty
57
57
  end
58
58
  end
59
59
 
60
60
  context "with multiple arguments" do
61
61
  it "should delete named metrics" do
62
62
  Metrics.submit :foo => 123, :bar => 345, :baz => 567
63
- Metrics.delete :foo, :bar
64
- Metrics.list(:name => :foo).should be_empty
65
- Metrics.list(:name => :bar).should be_empty
66
- Metrics.list(:name => :baz).should_not be_empty
63
+ Metrics.delete_metrics :foo, :bar
64
+ Metrics.metrics(:name => :foo).should be_empty
65
+ Metrics.metrics(:name => :bar).should be_empty
66
+ Metrics.metrics(:name => :baz).should_not be_empty
67
67
  end
68
68
  end
69
69
 
@@ -71,14 +71,14 @@ module Librato
71
71
  it "should run cleanly" do
72
72
  # the API currently returns success even if
73
73
  # the metric has already been deleted or is absent.
74
- Metrics.delete :missing
74
+ Metrics.delete_metrics :missing
75
75
  end
76
76
  end
77
77
 
78
78
  context "with no arguments" do
79
79
  it "should not make request" do
80
80
  lambda {
81
- Metrics.delete
81
+ Metrics.delete_metrics
82
82
  }.should raise_error(Metrics::NoMetricsProvided)
83
83
  end
84
84
  end
@@ -88,22 +88,22 @@ module Librato
88
88
  context 'by pattern' do
89
89
  it "should filter properly" do
90
90
  Metrics.submit :foo => 1, :foobar => 2, :foobaz => 3, :bar => 4
91
- Metrics.delete :names => 'fo*', :exclude => ['foobar']
91
+ Metrics.delete_metrics :names => 'fo*', :exclude => ['foobar']
92
92
 
93
93
  %w{foo foobaz}.each do |name|
94
94
  lambda {
95
- Metrics.fetch name
95
+ Metrics.get_metric name
96
96
  }.should raise_error(Librato::Metrics::NotFound)
97
97
  end
98
98
 
99
99
  %w{foobar bar}.each do |name|
100
- Metrics.fetch name # stil exist
100
+ Metrics.get_metric name # stil exist
101
101
  end
102
102
  end
103
103
  end
104
104
  end
105
105
 
106
- describe "#fetch" do
106
+ describe "#get_metric" do
107
107
  before(:all) do
108
108
  delete_all_metrics
109
109
  Metrics.submit :my_counter => {:type => :counter, :value => 0, :measure_time => Time.now.to_i-60}
@@ -117,7 +117,7 @@ module Librato
117
117
 
118
118
  context "without arguments" do
119
119
  it "should get metric attributes" do
120
- metric = Metrics.fetch :my_counter
120
+ metric = Metrics.get_metric :my_counter
121
121
  metric['name'].should == 'my_counter'
122
122
  metric['type'].should == 'counter'
123
123
  end
@@ -126,7 +126,8 @@ module Librato
126
126
  context "with a start_time" do
127
127
  it "should return entries since that time" do
128
128
  # 1 hr ago
129
- data = Metrics.fetch :my_counter, :start_time => Time.now-3600
129
+ metric = Metrics.get_metric :my_counter, :start_time => Time.now-3600
130
+ data = metric['measurements']
130
131
  data['unassigned'].length.should == 3
131
132
  data['baz'].length.should == 2
132
133
  end
@@ -134,7 +135,8 @@ module Librato
134
135
 
135
136
  context "with a count limit" do
136
137
  it "should return that number of entries per source" do
137
- data = Metrics.fetch :my_counter, :count => 2
138
+ metric = Metrics.get_metric :my_counter, :count => 2
139
+ data = metric['measurements']
138
140
  data['unassigned'].length.should == 2
139
141
  data['baz'].length.should == 2
140
142
  end
@@ -142,7 +144,8 @@ module Librato
142
144
 
143
145
  context "with a source limit" do
144
146
  it "should only return that source" do
145
- data = Metrics.fetch :my_counter, :source => 'baz', :start_time => Time.now-3600
147
+ metric = Metrics.get_metric :my_counter, :source => 'baz', :start_time => Time.now-3600
148
+ data = metric['measurements']
146
149
  data['baz'].length.should == 2
147
150
  data['unassigned'].should be_nil
148
151
  end
@@ -150,7 +153,7 @@ module Librato
150
153
 
151
154
  end
152
155
 
153
- describe "#list" do
156
+ describe "#metrics" do
154
157
  before(:all) do
155
158
  delete_all_metrics
156
159
  Metrics.submit :foo => 123, :bar => 345, :baz => 678, :foo_2 => 901
@@ -158,14 +161,14 @@ module Librato
158
161
 
159
162
  context "without arguments" do
160
163
  it "should list all metrics" do
161
- metric_names = Metrics.list.map { |metric| metric['name'] }
164
+ metric_names = Metrics.metrics.map { |metric| metric['name'] }
162
165
  metric_names.sort.should == %w{foo bar baz foo_2}.sort
163
166
  end
164
167
  end
165
168
 
166
169
  context "with a name argument" do
167
170
  it "should list metrics that match" do
168
- metric_names = Metrics.list(:name => 'foo').map { |metric| metric['name'] }
171
+ metric_names = Metrics.metrics(:name => 'foo').map { |metric| metric['name'] }
169
172
  metric_names.sort.should == %w{foo foo_2}.sort
170
173
  end
171
174
  end
@@ -181,13 +184,13 @@ module Librato
181
184
  end
182
185
 
183
186
  it "should create the metrics" do
184
- metric = Metrics.list[0]
187
+ metric = Metrics.metrics[0]
185
188
  metric['name'].should == 'foo'
186
189
  metric['type'].should == 'gauge'
187
190
  end
188
191
 
189
192
  it "should store their data" do
190
- data = Metrics.fetch :foo, :count => 1
193
+ data = Metrics.get_measurements :foo, :count => 1
191
194
  data.should_not be_empty
192
195
  data['unassigned'][0]['value'] == 123.0
193
196
  end
@@ -200,13 +203,13 @@ module Librato
200
203
  end
201
204
 
202
205
  it "should create the metrics" do
203
- metric = Metrics.list[0]
206
+ metric = Metrics.metrics[0]
204
207
  metric['name'].should == 'bar'
205
208
  metric['type'].should == 'counter'
206
209
  end
207
210
 
208
211
  it "should store their data" do
209
- data = Metrics.fetch :bar, :count => 1
212
+ data = Metrics.get_measurements :bar, :count => 1
210
213
  data.should_not be_empty
211
214
  data['baz'][0]['value'] == 456.0
212
215
  end
@@ -225,7 +228,7 @@ module Librato
225
228
 
226
229
  end
227
230
 
228
- describe "#update" do
231
+ describe "#update_metric[s]" do
229
232
 
230
233
  context 'with a single metric' do
231
234
  context "with an existing metric" do
@@ -235,12 +238,12 @@ module Librato
235
238
  end
236
239
 
237
240
  it "should update the metric" do
238
- Metrics.update :foo, :display_name => "Foo Metric",
239
- :period => 15,
240
- :attributes => {
241
- :display_max => 1000
242
- }
243
- foo = Metrics.fetch :foo
241
+ Metrics.update_metric :foo, :display_name => "Foo Metric",
242
+ :period => 15,
243
+ :attributes => {
244
+ :display_max => 1000
245
+ }
246
+ foo = Metrics.get_metric :foo
244
247
  foo['display_name'].should == 'Foo Metric'
245
248
  foo['period'].should == 15
246
249
  foo['attributes']['display_max'].should == 1000
@@ -250,13 +253,13 @@ module Librato
250
253
  context "without an existing metric" do
251
254
  it "should create the metric if type specified" do
252
255
  delete_all_metrics
253
- Metrics.update :foo, :display_name => "Foo Metric",
254
- :type => 'gauge',
255
- :period => 15,
256
- :attributes => {
257
- :display_max => 1000
258
- }
259
- foo = Metrics.fetch :foo
256
+ Metrics.update_metric :foo, :display_name => "Foo Metric",
257
+ :type => 'gauge',
258
+ :period => 15,
259
+ :attributes => {
260
+ :display_max => 1000
261
+ }
262
+ foo = Metrics.get_metric :foo
260
263
  foo['display_name'].should == 'Foo Metric'
261
264
  foo['period'].should == 15
262
265
  foo['attributes']['display_max'].should == 1000
@@ -265,11 +268,11 @@ module Librato
265
268
  it "should raise error if no type specified" do
266
269
  delete_all_metrics
267
270
  lambda {
268
- Metrics.update :foo, :display_name => "Foo Metric",
269
- :period => 15,
270
- :attributes => {
271
- :display_max => 1000
272
- }
271
+ Metrics.update_metric :foo, :display_name => "Foo Metric",
272
+ :period => 15,
273
+ :attributes => {
274
+ :display_max => 1000
275
+ }
273
276
  }.should raise_error
274
277
  end
275
278
  end
@@ -284,28 +287,28 @@ module Librato
284
287
 
285
288
  it "should support named list" do
286
289
  names = ['my.1', 'my.3']
287
- Metrics.update :names => names, :period => 60
290
+ Metrics.update_metrics :names => names, :period => 60
288
291
 
289
292
  names.each do |name|
290
- metric = Metrics.fetch name
293
+ metric = Metrics.get_metric name
291
294
  metric['period'].should == 60
292
295
  end
293
296
  end
294
297
 
295
298
  it "should support patterns" do
296
- Metrics.update :names => 'my.*', :exclude => ['my.3'],
299
+ Metrics.update_metrics :names => 'my.*', :exclude => ['my.3'],
297
300
  :display_max => 100
298
301
 
299
302
  %w{my.1 my.2 my.4}.each do |name|
300
- metric = Metrics.fetch name
303
+ metric = Metrics.get_metric name
301
304
  metric['attributes']['display_max'].should == 100
302
305
  end
303
306
 
304
- excluded = Metrics.fetch 'my.3'
307
+ excluded = Metrics.get_metric 'my.3'
305
308
  excluded['attributes']['display_max'].should_not == 100
306
309
  end
307
310
  end
308
311
  end
309
312
 
310
313
  end
311
- end
314
+ end
data/spec/spec_helper.rb CHANGED
@@ -14,7 +14,7 @@ RSpec.configure do |config|
14
14
  # purge all metrics from test account
15
15
  def delete_all_metrics
16
16
  connection = Librato::Metrics.client.connection
17
- Librato::Metrics.list.each do |metric|
17
+ Librato::Metrics.metrics.each do |metric|
18
18
  #puts "deleting #{metric['name']}..."
19
19
  # expects 204
20
20
  connection.delete("metrics/#{metric['name']}")
@@ -89,4 +89,4 @@ RSpec::Matchers.define :equal_unordered do |result|
89
89
  end
90
90
  target == result
91
91
  end
92
- end
92
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librato-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -37,7 +37,7 @@ cert_chain:
37
37
  bktaNmhlblFBRjFDSDk2WmNxY0pIMTc5UzJ0SWlLRE04a2VlUklVT1BDM1dU
38
38
  MGZhb2svMgpnQTJvemRyODUxYy9uQT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
39
39
  LS0tLS0K
40
- date: 2013-08-26 00:00:00.000000000 Z
40
+ date: 2013-10-29 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: faraday
@@ -221,6 +221,7 @@ files:
221
221
  - lib/librato/metrics/smart_json.rb
222
222
  - lib/librato/metrics/version.rb
223
223
  - librato-metrics.gemspec
224
+ - spec/integration/deprecated_methods_spec.rb
224
225
  - spec/integration/metrics/annotator_spec.rb
225
226
  - spec/integration/metrics/connection_spec.rb
226
227
  - spec/integration/metrics/middleware/count_requests_spec.rb
@@ -249,7 +250,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
249
250
  version: '0'
250
251
  segments:
251
252
  - 0
252
- hash: 2087135859290358676
253
+ hash: -3545928183344149228
253
254
  required_rubygems_version: !ruby/object:Gem::Requirement
254
255
  none: false
255
256
  requirements:
@@ -263,6 +264,7 @@ signing_key:
263
264
  specification_version: 2
264
265
  summary: Ruby wrapper for Librato's Metrics API
265
266
  test_files:
267
+ - spec/integration/deprecated_methods_spec.rb
266
268
  - spec/integration/metrics/annotator_spec.rb
267
269
  - spec/integration/metrics/connection_spec.rb
268
270
  - spec/integration/metrics/middleware/count_requests_spec.rb
metadata.gz.sig CHANGED
@@ -1,2 +1 @@
1
- ��}�E)��{��#���Q�� u9���4��~��Nu(d��zd������������ǜf��"�7���,2{��Le"��\_�]Lg@�F���Lj|ˆyIfgh��
2
- �i��i4�(FF�_�t���q���~���op�F�͆1�r��|� ��“�Ṫy�C�R�H� �}���B��9�c t(�?m�+�� + �u2�. !r�˲R&�݃��Y�����Z�
1
+ ����bl�~��z:�dž���g��otd�����Q�����Lfz:�_%�m�,ht��lgR6�=܅E"�~�Z'6aSo��;�"Kg�Lq�r�_Nrb� 4������Puo�%���5����5a �����Dr��`dfVq6��3���Sů/�ņ,J���ڶm�0�[Q�`��|��%�]�N9S�!���bU%��QJ��e�I�Rޡ�H�����!?�4���>�~�6��H�*��b��Ǟin+�1