hawkular-client 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +17 -0
  3. data/.rubocop.yml +14 -0
  4. data/.travis.yml +5 -0
  5. data/CHANGES.rdoc +6 -0
  6. data/Gemfile +1 -1
  7. data/README.rdoc +2 -1
  8. data/Rakefile +6 -3
  9. data/hawkularclient.gemspec +17 -11
  10. data/lib/hawkularclient.rb +91 -98
  11. data/lib/metrics/metric_api.rb +83 -66
  12. data/lib/metrics/tenant_api.rb +3 -4
  13. data/lib/metrics/types.rb +9 -11
  14. data/lib/metrics/version.rb +1 -1
  15. data/spec/{endpoint.yml.example → endpoint.yml} +0 -0
  16. data/spec/integration/metric_spec.rb +223 -131
  17. data/spec/spec_helper.rb +14 -10
  18. data/spec/unit/client_spec.rb +24 -19
  19. data/spec/vcr/vcr_setup.rb +16 -0
  20. data/spec/vcr_cassettes/Availability_metrics/Should_create_Availability_definition_using_MetricDefinition_parameter.yml +87 -0
  21. data/spec/vcr_cassettes/Availability_metrics/Should_create_and_return_Availability_using_Hash_parameter.yml +87 -0
  22. data/spec/vcr_cassettes/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml +126 -0
  23. data/spec/vcr_cassettes/Availability_metrics/Should_update_tags_for_Availability_definition.yml +210 -0
  24. data/spec/vcr_cassettes/Counter_metrics/Should_create_and_return_counter_using_Hash_parameter.yml +87 -0
  25. data/spec/vcr_cassettes/Counter_metrics/Should_create_counter_definition_using_MetricDefinition_parameter.yml +87 -0
  26. data/spec/vcr_cassettes/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +249 -0
  27. data/spec/vcr_cassettes/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml +126 -0
  28. data/spec/vcr_cassettes/Gauge_metrics/Should_create_gauge_definition_using_Hash.yml +87 -0
  29. data/spec/vcr_cassettes/Gauge_metrics/Should_create_gauge_definition_using_MetricDefinition.yml +87 -0
  30. data/spec/vcr_cassettes/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml +249 -0
  31. data/spec/vcr_cassettes/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml +126 -0
  32. data/spec/vcr_cassettes/Gauge_metrics/Should_return_periods.yml +85 -0
  33. data/spec/vcr_cassettes/Gauge_metrics/Should_update_tags_for_gauge_definition.yml +210 -0
  34. data/spec/vcr_cassettes/Mixed_metrics/Should_send_mixed_metric_request.yml +284 -0
  35. data/spec/vcr_cassettes/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml +249 -0
  36. data/spec/vcr_cassettes/Simple/Should_be_Cool.yml +208 -0
  37. data/spec/vcr_cassettes/Tenants/Should_create_and_return_tenant.yml +79 -0
  38. metadata +111 -25
@@ -2,24 +2,23 @@ module Hawkular::Metrics
2
2
  class Client
3
3
  # Provides access to tenants API
4
4
  class Tenants
5
-
6
5
  # @param client [Client]
7
6
  def initialize(client)
8
7
  @client = client
9
- @resource = "tenants"
8
+ @resource = 'tenants'
10
9
  end
11
10
 
12
11
  # Create new tenant
13
12
  # @param id [String] tenant ID/Name
14
13
  def create(id)
15
- @client.http_post("/#{@resource}", {:id => id})
14
+ @client.http_post("/#{@resource}", id: id)
16
15
  end
17
16
 
18
17
  # Query existing tenants
19
18
  # @return [Array[Tenant]]
20
19
  def query
21
20
  @client.http_get("/#{@resource}").map do |t|
22
- Hawkular::Metrics::Tenant::new(t)
21
+ Hawkular::Metrics::Tenant.new(t)
23
22
  end
24
23
  end
25
24
  end
data/lib/metrics/types.rb CHANGED
@@ -6,9 +6,7 @@ module Hawkular
6
6
 
7
7
  def initialize(json)
8
8
  @json = json
9
- if !json.nil?
10
- @id = @json['id']
11
- end
9
+ @id = @json['id'] unless json.nil?
12
10
  end
13
11
  end
14
12
 
@@ -16,23 +14,23 @@ module Hawkular
16
14
  end
17
15
 
18
16
  class MetricDefinition < BaseObject
19
- attr_accessor :tenantId, :dataRetention, :tags
17
+ attr_accessor :tenant_id, :data_retention, :tags
20
18
 
21
- def initialize(json=nil)
19
+ def initialize(json = nil)
22
20
  super(json)
23
- if !json.nil?
24
- @tenantId = @json['tenantId']
25
- @dataRetention = @json['dataRetention']
21
+ unless json.nil? # rubocop:disable Style/GuardClause
22
+ @tenant_id = @json['tenantId']
23
+ @data_retention = @json['dataRetention']
26
24
  @tags = @json['tags']
27
25
  end
28
26
  end
29
27
 
30
28
  def hash
31
- h = {:id => @id, :tenantId => @tenantId, :dataRetention => @dataRetention, :tags => @tags}
32
- h.delete_if { |k, v| v.nil? }
29
+ h = { id: @id, tenantId: @tenant_id,
30
+ dataRetention: @data_retention, tags: @tags }
31
+ h.delete_if { |_k, v| v.nil? }
33
32
  h
34
33
  end
35
-
36
34
  end
37
35
  end
38
36
  end
@@ -1,5 +1,5 @@
1
1
  module Hawkular
2
2
  module Metrics
3
- VERSION = "0.1.0"
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
File without changes
@@ -1,243 +1,335 @@
1
+ require "#{File.dirname(__FILE__)}/../vcr/vcr_setup"
1
2
  require "#{File.dirname(__FILE__)}/../spec_helper"
2
- require "securerandom"
3
+ require 'securerandom'
3
4
 
4
5
  # examples related to Hawkular Metrics
5
6
 
6
-
7
7
  # time constants
8
8
  t4h = 4 * 60 * 60 * 1000
9
9
 
10
- # more or less generic methodc common for all metric types (counters, gauges, availabilities)
11
- def create_metric_using_hash(endpoint)
12
- id = SecureRandom.uuid
13
- endpoint.create({:id => id, :dataRetention => 123, :tags => {:some => "value"}, :tenantId => @tenant})
10
+ # more or less generic method common for all metric types (counters, gauges, availabilities)
11
+ def create_metric_using_hash(endpoint, id)
12
+ endpoint.create(id: id, dataRetention: 123, tags: { some: 'value' }, tenantId: @tenant)
14
13
  metric = endpoint.get(id)
15
14
 
16
15
  expect(metric).to be_a(Hawkular::Metrics::MetricDefinition)
17
16
  expect(metric.id).to eql(id)
18
- expect(metric.dataRetention).to eql(123)
19
- expect(metric.tenantId).to eql(@tenant)
17
+ expect(metric.data_retention).to eql(123)
18
+ expect(metric.tenant_id).to eql(@tenant)
20
19
  end
21
20
 
22
- def create_metric_using_md(endpoint)
23
- metric = Hawkular::Metrics::MetricDefinition::new
24
- metric.id = SecureRandom.uuid
25
- metric.dataRetention = 90
26
- metric.tags = {:tag => "value"}
21
+ def create_metric_using_md(endpoint, id)
22
+ metric = Hawkular::Metrics::MetricDefinition.new
23
+ metric.id = id
24
+ metric.data_retention = 90
25
+ metric.tags = { tag: 'value' }
27
26
  endpoint.create(metric)
28
27
 
29
28
  created = endpoint.get(metric.id)
30
29
  expect(created).to be_a(Hawkular::Metrics::MetricDefinition)
31
30
  expect(created.id).to eql(metric.id)
32
- expect(created.dataRetention).to eql(metric.dataRetention)
31
+ expect(created.data_retention).to eql(metric.data_retention)
33
32
  end
34
33
 
35
- def push_data_to_non_existing_metric(endpoint, data)
36
- id = SecureRandom.uuid
34
+ def push_data_to_non_existing_metric(endpoint, data, id)
37
35
  # push one value without timestamp (which means now)
38
36
  endpoint.push_data(id, data)
39
37
 
40
38
  data = endpoint.get_data(id)
41
39
  expect(data.size).to be 1
42
40
 
43
- #verify metric was auto-created
41
+ # verify metric was auto-created
44
42
  counter = endpoint.get(id)
45
43
  expect(counter).to be_a(Hawkular::Metrics::MetricDefinition)
46
44
  expect(counter.id).to eql(id)
47
45
  end
48
46
 
49
- def update_metric_by_tags(endpoint)
50
- id = SecureRandom.uuid
51
- endpoint.create({:id => id, :tags => {:myTag => id}})
47
+ def update_metric_by_tags(endpoint, id)
48
+ endpoint.create(id: id, tags: { myTag: id })
52
49
  metric = endpoint.get(id)
53
- metric.tags = {:newTag => "newValue"}
50
+ metric.tags = { newTag: 'newValue' }
54
51
  endpoint.update_tags(metric)
55
52
 
56
53
  metric = endpoint.get(id)
57
- expect(metric.tags).to include({"newTag" => "newValue","myTag" => id})
54
+ expect(metric.tags).to include('newTag' => 'newValue', 'myTag' => id)
58
55
 
59
56
  # query API for a metric with given tag
60
- data = endpoint.query({:myTag => id})
57
+ data = endpoint.query(myTag: id)
61
58
  expect(data.size).to be 1
62
59
  end
63
60
 
64
- describe "Tenants" do
61
+ describe 'Simple', :vcr do
62
+ it 'Should be Cool' do
63
+ Net::HTTP.get_response(URI('http://localhost:8080/'))
64
+ end
65
+ end
65
66
 
67
+ describe 'Tenants', vcr: { match_requests_on: [:uri, :method], record: :none } do
66
68
  before(:all) do
67
69
  setup_client
68
70
  end
69
71
 
70
- it "Should create and return tenant" do
72
+ it 'Should create and return tenant' do
71
73
  tenant = SecureRandom.uuid
72
74
  @client.tenants.create(tenant)
73
- created = @client.tenants.query.select { |t|
74
- t.id == tenant
75
- }
75
+ created = @client.tenants.query.select { |t| t.id == tenant }
76
76
  expect(created).not_to be nil
77
77
  end
78
78
  end
79
79
 
80
- describe "Mixed metrics" do
81
-
80
+ describe 'Mixed metrics' do
82
81
  before(:all) do
83
82
  setup_client_new_tenant
84
83
  end
85
84
 
86
- it "Should send mixed metric request of a single type" do
85
+ it 'Should send mixed metric request of a single type' do
87
86
  id = SecureRandom.uuid
88
- @client.push_data(counters:[{:id => id, :data => [{:value => 1}]} ] )
89
- data = @client.counters.get_data(id)
90
- expect(data.size).to be 1
91
-
92
- @client.push_data(availabilities:[{:id => id, :data => [{:value => "down"}]} ] )
93
- data = @client.avail.get_data(id)
94
- expect(data.size).to be 1
95
87
 
96
- @client.push_data(gauges:[{:id => id, :data => [{:value => 1.1}]} ] )
97
- data = @client.gauges.get_data(id)
98
- expect(data.size).to be 1
88
+ VCR.use_cassette('Mixed_metrics/Should send mixed metric request of a single type',
89
+ erb: { id: id }, record: :none
90
+ ) do
91
+ @client.push_data(counters: [{ id: id, data: [{ value: 1 }] }])
92
+ data = @client.counters.get_data(id)
93
+ expect(data.size).to be 1
94
+
95
+ @client.push_data(availabilities: [{ id: id, data: [{ value: 'down' }] }])
96
+ data = @client.avail.get_data(id)
97
+ expect(data.size).to be 1
98
+
99
+ @client.push_data(gauges: [{ id: id, data: [{ value: 1.1 }] }])
100
+ data = @client.gauges.get_data(id)
101
+ expect(data.size).to be 1
102
+ end
99
103
  end
104
+ # end
100
105
 
101
- it "Should send mixed metric request" do
106
+ it 'Should send mixed metric request' do
102
107
  id = SecureRandom.uuid
103
-
104
- expect(@client.counters.get_data(id).size).to be 0
105
- expect(@client.gauges.get_data(id).size).to be 0
106
- expect(@client.avail.get_data(id).size).to be 0
107
-
108
- @client.push_data(
109
- counters:[{:id => id, :data => [{:value => 1}]}],
110
- availabilities:[{:id => id, :data => [{:value => "down"}]}],
111
- gauges:[{:id => id, :data => [{:value => 1.1}]}]
112
- )
113
-
114
- expect(@client.counters.get_data(id).size).to be 1
115
- expect(@client.gauges.get_data(id).size).to be 1
116
- expect(@client.avail.get_data(id).size).to be 1
108
+ VCR.use_cassette('Mixed_metrics/Should send mixed metric request',
109
+ erb: { id: id }, record: :none
110
+ ) do
111
+ expect(@client.counters.get_data(id).size).to be 0
112
+ expect(@client.gauges.get_data(id).size).to be 0
113
+ expect(@client.avail.get_data(id).size).to be 0
114
+
115
+ @client.push_data(
116
+ counters: [{ id: id, data: [{ value: 1 }] }],
117
+ availabilities: [{ id: id, data: [{ value: 'down' }] }],
118
+ gauges: [{ id: id, data: [{ value: 1.1 }] }]
119
+ )
120
+
121
+ expect(@client.counters.get_data(id).size).to be 1
122
+ expect(@client.gauges.get_data(id).size).to be 1
123
+ expect(@client.avail.get_data(id).size).to be 1
124
+ end
117
125
  end
118
126
  end
119
127
 
120
- describe "Counter metrics" do
121
-
128
+ describe 'Counter metrics' do
122
129
  before(:all) do
123
130
  setup_client_new_tenant
124
131
  end
125
132
 
126
- it "Should create and return counter using Hash parameter" do
127
- create_metric_using_hash @client.counters
133
+ it 'Should create and return counter using Hash parameter' do
134
+ id = SecureRandom.uuid
135
+ VCR.use_cassette('Counter_metrics/Should create and return counter using Hash parameter',
136
+ erb: { id: id }, record: :none
137
+ ) do
138
+ create_metric_using_hash @client.counters, id
139
+ end
128
140
  end
129
141
 
130
- it "Should create counter definition using MetricDefinition parameter" do
131
- create_metric_using_md @client.counters
142
+ it 'Should create counter definition using MetricDefinition parameter' do
143
+ id = SecureRandom.uuid
144
+ VCR.use_cassette(
145
+ 'Counter_metrics/Should create counter definition using MetricDefinition parameter',
146
+ erb: { id: id }, record: :none
147
+ ) do
148
+ create_metric_using_md @client.counters, id
149
+ end
132
150
  end
133
151
 
134
- it "Should push metric data to existing counter" do
152
+ it 'Should push metric data to existing counter' do
135
153
  id = SecureRandom.uuid
136
- #create counter
137
- @client.counters.create({:id => id})
138
154
  now = @client.now
139
155
 
140
- # push 3 values with timestamps
141
- @client.counters.push_data(id, [{:value => 1, :timestamp => now - 30}, {:value => 2, :timestamp => now - 20}, {:value => 3, :timestamp => now -10 }])
142
-
143
- data = @client.counters.get_data(id)
144
- expect(data.size).to be 3
145
-
146
- # push one value without timestamp (which means now)
147
- @client.counters.push_data(id, {:value => 4})
148
- data = @client.counters.get_data(id)
149
- expect(data.size).to be 4
150
-
151
- # retrieve values from past
152
- data = @client.counters.get_data(id, starts: @client.now - (2 * t4h), ends: @client.now - t4h)
153
- expect(data.empty?).to be true
156
+ VCR.use_cassette('Counter_metrics/Should push metric data to existing counter',
157
+ erb: { id: id, ends: now - t4h, starts: now - (2 * t4h),
158
+ minus20: now - 20, minus30: now - 30, minus10: now - 10,
159
+ now: now }, record: :none
160
+ ) do
161
+ # create counter
162
+ @client.counters.create(id: id)
163
+
164
+ # push 3 values with timestamps
165
+ @client.counters.push_data(id, [{ value: 1, timestamp: now - 30 },
166
+ { value: 2, timestamp: now - 20 },
167
+ { value: 3, timestamp: now - 10 }])
168
+
169
+ data = @client.counters.get_data(id)
170
+ expect(data.size).to be 3
171
+
172
+ # push one value without timestamp (which means now)
173
+ @client.counters.push_data(id, value: 4)
174
+ data = @client.counters.get_data(id)
175
+ expect(data.size).to be 4
176
+
177
+ # retrieve values from past
178
+ data = @client.counters.get_data(id, starts: now - (2 * t4h), ends: now - t4h)
179
+ expect(data.empty?).to be true
180
+ end
154
181
  end
155
182
 
156
- it "Should push metric data to non-existing counter" do
157
- push_data_to_non_existing_metric @client.counters, {:value => 4}
158
- end
183
+ it 'Should push metric data to non-existing counter' do
184
+ id = SecureRandom.uuid
159
185
 
186
+ VCR.use_cassette('Counter_metrics/Should push metric data to non-existing counter',
187
+ erb: { id: id }, record: :none
188
+ ) do
189
+ push_data_to_non_existing_metric @client.counters, { value: 4 }, id
190
+ end
191
+ end
160
192
  end
161
193
 
162
- describe "Availability metrics" do
163
-
194
+ describe 'Availability metrics' do
164
195
  before(:all) do
165
196
  setup_client_new_tenant
166
197
  end
167
198
 
168
- it "Should create and return Availability using Hash parameter" do
169
- create_metric_using_hash @client.avail
199
+ it 'Should create and return Availability using Hash parameter' do
200
+ id = SecureRandom.uuid
201
+ VCR.use_cassette(
202
+ 'Availability_metrics/Should create and return Availability using Hash parameter',
203
+ erb: { id: id }, record: :none
204
+ ) do
205
+ create_metric_using_hash @client.avail, id
206
+ end
170
207
  end
171
208
 
172
- it "Should create Availability definition using MetricDefinition parameter" do
173
- create_metric_using_md @client.avail
209
+ it 'Should create Availability definition using MetricDefinition parameter' do
210
+ id = SecureRandom.uuid
211
+ VCR.use_cassette(
212
+ 'Availability_metrics/Should create Availability definition using MetricDefinition parameter',
213
+ erb: { id: id }, record: :none
214
+ ) do
215
+ create_metric_using_md @client.avail, id
216
+ end
174
217
  end
175
218
 
176
- it "Should push metric data to non-existing Availability" do
177
- push_data_to_non_existing_metric @client.avail, {:value =>"UP"}
219
+ it 'Should push metric data to non-existing Availability' do
220
+ id = SecureRandom.uuid
221
+
222
+ VCR.use_cassette('Availability_metrics/Should push metric data to non-existing Availability',
223
+ erb: { id: id }, record: :none
224
+ ) do
225
+ push_data_to_non_existing_metric @client.avail, { value: 'UP' }, id
226
+ end
178
227
  end
179
- it "Should update tags for Availability definition" do
180
- update_metric_by_tags @client.avail
228
+
229
+ it 'Should update tags for Availability definition' do
230
+ id = SecureRandom.uuid
231
+
232
+ VCR.use_cassette('Availability_metrics/Should update tags for Availability definition',
233
+ erb: { id: id }, record: :none
234
+ ) do
235
+ update_metric_by_tags @client.avail, id
236
+ end
181
237
  end
182
238
  end
183
239
 
184
- describe "Gauge metrics" do
185
-
240
+ describe 'Gauge metrics' do
186
241
  before(:all) do
187
242
  setup_client_new_tenant
188
243
  end
189
244
 
190
- it "Should create gauge definition using MetricDefinition" do
191
- create_metric_using_md @client.gauges
192
- end
245
+ it 'Should create gauge definition using MetricDefinition' do
246
+ id = SecureRandom.uuid
193
247
 
194
- it "Should create gauge definition using Hash" do
195
- create_metric_using_hash @client.gauges
248
+ VCR.use_cassette('Gauge_metrics/Should create gauge definition using MetricDefinition',
249
+ erb: { id: id }, record: :none
250
+ ) do
251
+ create_metric_using_md @client.gauges, id
252
+ end
196
253
  end
197
254
 
198
- it "Should push metric data to non-existing gauge" do
199
- push_data_to_non_existing_metric @client.gauges, {:value =>3.1415926}
255
+ it 'Should create gauge definition using Hash' do
256
+ id = SecureRandom.uuid
257
+
258
+ VCR.use_cassette('Gauge_metrics/Should create gauge definition using Hash',
259
+ erb: { id: id }, record: :none
260
+ ) do
261
+ create_metric_using_hash @client.gauges, id
262
+ end
200
263
  end
201
264
 
202
- it "Should push metric data to existing gauge" do
265
+ it 'Should push metric data to non-existing gauge' do
203
266
  id = SecureRandom.uuid
204
- #create gauge
205
- @client.gauges.create({:id => id})
206
- now = @client.now
207
267
 
208
- # push 3 values with timestamps
209
- @client.gauges.push_data(id, [{:value => 1, :timestamp => now - 30}, {:value => 2, :timestamp => now - 20}, {:value => 3, :timestamp => now -10 }])
210
-
211
- data = @client.gauges.get_data(id)
212
- expect(data.size).to be 3
268
+ VCR.use_cassette('Gauge_metrics/Should push metric data to non-existing gauge',
269
+ erb: { id: id }, record: :none
270
+ ) do
271
+ push_data_to_non_existing_metric @client.gauges, { value: 3.1415926 }, id
272
+ end
273
+ end
213
274
 
214
- # push one value without timestamp (which means now)
215
- @client.gauges.push_data(id, {:value => 4})
216
- data = @client.gauges.get_data(id)
217
- expect(data.size).to be 4
275
+ it 'Should push metric data to existing gauge' do
276
+ id = SecureRandom.uuid
277
+ now = @client.now
218
278
 
219
- # retrieve values from past
220
- data = @client.counters.get_data(id, starts: @client.now - (2 * t4h), ends: @client.now - t4h)
221
- expect(data.empty?).to be true
279
+ VCR.use_cassette('Gauge_metrics/Should push metric data to existing gauge',
280
+ erb: { id: id, ends: now - t4h, starts: now - (2 * t4h) }, record: :none
281
+ ) do
282
+ # create gauge
283
+ @client.gauges.create(id: id)
284
+
285
+ # push 3 values with timestamps
286
+ @client.gauges.push_data(id,
287
+ [{ value: 1, timestamp: now - 30 },
288
+ { value: 2, timestamp: now - 20 },
289
+ { value: 3, timestamp: now - 10 }])
290
+
291
+ data = @client.gauges.get_data(id)
292
+ expect(data.size).to be 3
293
+
294
+ # push one value without timestamp (which means now)
295
+ @client.gauges.push_data(id, value: 4)
296
+ data = @client.gauges.get_data(id)
297
+ expect(data.size).to be 4
298
+
299
+ # retrieve values from past
300
+ data = @client.counters.get_data(id, starts: now - (2 * t4h), ends: now - t4h)
301
+ expect(data.empty?).to be true
302
+ end
222
303
  end
223
304
 
224
- it "Should update tags for gauge definition" do
225
- update_metric_by_tags @client.gauges
305
+ it 'Should update tags for gauge definition' do
306
+ id = SecureRandom.uuid
307
+
308
+ VCR.use_cassette('Gauge_metrics/Should update tags for gauge definition',
309
+ erb: { id: id }, record: :none
310
+ ) do
311
+ update_metric_by_tags @client.gauges, id
312
+ end
226
313
  end
227
314
 
228
- it "Should return periods" do
315
+ it 'Should return periods' do
229
316
  id = SecureRandom.uuid
230
317
  now = @client.now
231
- # push 3 values with timestamps
232
- @client.gauges.push_data(id, [{:value => 1, :timestamp => now - 30}, {:value => 2, :timestamp => now - 20}, {:value => 3, :timestamp => now}])
233
-
234
- before4h = @client.now - t4h
235
- data = @client.gauges.get_periods(id, operation: "lte", threshold: 4, starts: before4h)
236
- expect(data.size).to be 1
237
- expect(data[0][0]).to eql(now - 30)
238
- expect(data[0][1]).to eql(now)
318
+ before4h = now - t4h
319
+
320
+ VCR.use_cassette('Gauge_metrics/Should return periods',
321
+ erb: { id: id, start: now, before4h: before4h,
322
+ minus20: now - 20, minus30: now - 30 },
323
+ record: :none) do
324
+ # push 3 values with timestamps
325
+ @client.gauges.push_data(id, [{ value: 1, timestamp: now - 30 },
326
+ { value: 2, timestamp: now - 20 },
327
+ { value: 3, timestamp: now }])
328
+
329
+ data = @client.gauges.get_periods(id, operation: 'lte', threshold: 4, starts: before4h)
330
+ expect(data.size).to be 1
331
+ expect(data[0][0]).to eql(now - 30)
332
+ expect(data[0][1]).to eql(now)
333
+ end
239
334
  end
240
-
241
335
  end
242
-
243
-