hawkular-client 0.1.0 → 0.1.1

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.
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
-