wavefront-sdk 3.0.2 → 3.2.0
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.
- checksums.yaml +4 -4
- data/HISTORY.md +12 -1
- data/README.md +4 -0
- data/Rakefile +1 -0
- data/lib/wavefront-sdk/alert.rb +36 -49
- data/lib/wavefront-sdk/api_mixins/acl.rb +76 -0
- data/lib/wavefront-sdk/api_mixins/tag.rb +62 -0
- data/lib/wavefront-sdk/api_mixins/user.rb +26 -0
- data/lib/wavefront-sdk/apitoken.rb +49 -0
- data/lib/wavefront-sdk/core/exception.rb +1 -0
- data/lib/wavefront-sdk/dashboard.rb +6 -106
- data/lib/wavefront-sdk/defs/version.rb +1 -1
- data/lib/wavefront-sdk/derivedmetric.rb +6 -56
- data/lib/wavefront-sdk/event.rb +4 -50
- data/lib/wavefront-sdk/paginator/base.rb +8 -7
- data/lib/wavefront-sdk/paginator/post.rb +7 -5
- data/lib/wavefront-sdk/source.rb +4 -48
- data/lib/wavefront-sdk/user.rb +2 -2
- data/lib/wavefront-sdk/usergroup.rb +2 -2
- data/lib/wavefront-sdk/validators.rb +10 -0
- data/lib/wavefront-sdk/write.rb +43 -12
- data/lib/wavefront-sdk/writers/socket.rb +2 -2
- data/spec/.rubocop.yml +1 -1
- data/spec/spec_helper.rb +66 -0
- data/spec/wavefront-sdk/alert_spec.rb +14 -0
- data/spec/wavefront-sdk/{support → api_mixins}/user_mixins_spec.rb +2 -2
- data/spec/wavefront-sdk/apitoken_spec.rb +31 -0
- data/spec/wavefront-sdk/core/api_spec.rb +3 -5
- data/spec/wavefront-sdk/credentials_spec.rb +41 -37
- data/spec/wavefront-sdk/dashboard_spec.rb +4 -52
- data/spec/wavefront-sdk/distribution_spec.rb +1 -3
- data/spec/wavefront-sdk/metric_helper_spec.rb +6 -8
- data/spec/wavefront-sdk/report_spec.rb +2 -2
- data/spec/wavefront-sdk/stdlib/array_spec.rb +6 -6
- data/spec/wavefront-sdk/stdlib/hash_spec.rb +5 -5
- data/spec/wavefront-sdk/support/mixins_spec.rb +34 -36
- data/spec/wavefront-sdk/support/parse_time_spec.rb +25 -29
- data/spec/wavefront-sdk/usergroup_spec.rb +34 -34
- data/spec/wavefront-sdk/validators_spec.rb +10 -1
- data/spec/wavefront-sdk/write_spec.rb +71 -4
- data/spec/wavefront-sdk/writers/core_spec.rb +10 -10
- data/spec/wavefront-sdk/writers/socket_spec.rb +13 -1
- metadata +10 -5
- data/lib/wavefront-sdk/support/user_mixins.rb +0 -24
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'date'
|
4
|
-
require 'minitest/autorun'
|
5
4
|
require_relative '../spec_helper'
|
6
5
|
require_relative '../../lib/wavefront-sdk/defs/constants'
|
7
6
|
require_relative '../../lib/wavefront-sdk/validators'
|
@@ -337,6 +336,16 @@ class WavefrontValidatorsTest < MiniTest::Test
|
|
337
336
|
good_and_bad('wf_integration_id?', 'InvalidIntegrationId', good, bad)
|
338
337
|
end
|
339
338
|
|
339
|
+
def test_apitoken_id
|
340
|
+
good = %w[2bfdcac7-1c9c-4c4b-9b56-c41c22c586dc
|
341
|
+
17db4cc1-65f6-40a8-a1fa-6fcae460c4bd
|
342
|
+
fca312fb-5ff4-420d-862d-5d6d99ed6bcf
|
343
|
+
3a1957e0-459e-49e5-9209-3888a4e8ac5b]
|
344
|
+
|
345
|
+
bad = %w[fa312fb-5ff4-420d-862d-5d6d99ed6bcf thing 123]
|
346
|
+
good_and_bad('wf_apitoken_id?', 'InvalidApiTokenId', good, bad)
|
347
|
+
end
|
348
|
+
|
340
349
|
def test_distribution_interval
|
341
350
|
good = %i[m h d]
|
342
351
|
bad = ['m', [], {}, nil, 'bad id', :x, 'p']
|
@@ -1,12 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require_relative '../spec_helper'
|
4
|
-
|
5
|
-
require_relative '../../lib/wavefront-sdk/
|
4
|
+
require_relative '../../lib/wavefront-sdk/write'
|
5
|
+
require_relative '../../lib/wavefront-sdk/core/response'
|
6
6
|
require_relative 'resources/dummy_points'
|
7
7
|
|
8
|
-
W_CREDS = { proxy: 'wavefront', port: 2878 }.freeze
|
9
|
-
|
10
8
|
# This class is sufficiently different to the API calling classes
|
11
9
|
# that it doesn't use spec helper or inherit anything.
|
12
10
|
#
|
@@ -29,6 +27,75 @@ class WavefrontWriteTest < MiniTest::Test
|
|
29
27
|
assert_instance_of(Wavefront::Writer::Socket, wf.writer)
|
30
28
|
end
|
31
29
|
|
30
|
+
def test_composite_response
|
31
|
+
bad_status = { result: 'ERROR', message: nil, code: nil }
|
32
|
+
bad_response = { sent: 0, rejected: 1, unsent: 0 }
|
33
|
+
good_status = { result: 'OK', message: nil, code: nil }
|
34
|
+
good_response = { sent: 1, rejected: 0, unsent: 0 }
|
35
|
+
|
36
|
+
bad_resp = Wavefront::Response.new(
|
37
|
+
{ status: bad_status, response: bad_response }.to_json, nil
|
38
|
+
)
|
39
|
+
|
40
|
+
good_resp = Wavefront::Response.new(
|
41
|
+
{ status: good_status, response: good_response }.to_json, nil
|
42
|
+
)
|
43
|
+
|
44
|
+
x = wf.composite_response(Array.new(5).map { good_resp })
|
45
|
+
assert x.ok?
|
46
|
+
assert_equal('OK', x.status.result)
|
47
|
+
assert_equal(5, x.response.sent)
|
48
|
+
assert_equal(0, x.response.rejected)
|
49
|
+
assert_equal(0, x.response.unsent)
|
50
|
+
|
51
|
+
y = wf.composite_response(Array.new(4).map { good_resp } + [bad_resp])
|
52
|
+
refute y.ok?
|
53
|
+
assert_equal('ERROR', y.status.result)
|
54
|
+
assert_equal(4, y.response.sent)
|
55
|
+
assert_equal(1, y.response.rejected)
|
56
|
+
assert_equal(0, y.response.unsent)
|
57
|
+
|
58
|
+
z = wf.composite_response(Array.new(5).map { bad_resp })
|
59
|
+
refute z.ok?
|
60
|
+
assert_equal('ERROR', z.status.result)
|
61
|
+
assert_equal(0, z.response.sent)
|
62
|
+
assert_equal(5, z.response.rejected)
|
63
|
+
assert_equal(0, z.response.unsent)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_write_empty
|
67
|
+
assert wf.write([])
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_bad_write
|
71
|
+
write_method = Spy.on(wf.writer, :write).and_return(BadMocket.new)
|
72
|
+
refute wf.write(point_array(19)).ok?
|
73
|
+
assert write_method.has_been_called?
|
74
|
+
assert_equal(1, write_method.calls.size)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_write_single_chunk
|
78
|
+
write_method = Spy.on(wf.writer, :write).and_return(Mocket.new)
|
79
|
+
assert wf.write(point_array(19)).ok?
|
80
|
+
assert write_method.has_been_called?
|
81
|
+
assert_equal(1, write_method.calls.size)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_write_multi_chunk
|
85
|
+
write_method = Spy.on(wf.writer, :write).and_return(Mocket.new)
|
86
|
+
assert wf.write(point_array(4321))
|
87
|
+
assert write_method.has_been_called?
|
88
|
+
assert_equal(5, write_method.calls.size)
|
89
|
+
end
|
90
|
+
|
91
|
+
# helper to test write chunking
|
92
|
+
#
|
93
|
+
def point_array(count)
|
94
|
+
1.upto(count).map do |i|
|
95
|
+
{ path: 'dummy.path', value: i, ts: Time.now.to_i - i }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
32
99
|
def test_paths_to_deltas
|
33
100
|
x = wf.paths_to_deltas(POINTS.dup)
|
34
101
|
assert_equal(x.size, 2)
|
@@ -37,17 +37,17 @@ class WavefrontCoreWriteTest < MiniTest::Test
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_prefix_points
|
40
|
-
assert_equal(
|
41
|
-
assert_equal(
|
42
|
-
assert_equal(wf.prefix_points('p1')
|
43
|
-
assert_equal(
|
44
|
-
{ path: 'p2' },
|
45
|
-
{ path: 'p3' }], 'prefix'),
|
46
|
-
[{ path: 'prefix.p1' },
|
40
|
+
assert_equal(%w[p1 p2 p3 p4], wf.prefix_points(%w[p1 p2 p3 p4]))
|
41
|
+
assert_equal(%w[p1 p2 p3 p4], wf.prefix_points([%w[p1 p2 p3 p4]]))
|
42
|
+
assert_equal(%w[p1], wf.prefix_points('p1'))
|
43
|
+
assert_equal([{ path: 'prefix.p1' },
|
47
44
|
{ path: 'prefix.p2' },
|
48
|
-
{ path: 'prefix.p3' }]
|
45
|
+
{ path: 'prefix.p3' }],
|
46
|
+
wf.prefix_points([{ path: 'p1' },
|
47
|
+
{ path: 'p2' },
|
48
|
+
{ path: 'p3' }], 'prefix'))
|
49
49
|
|
50
|
-
assert_equal(
|
51
|
-
|
50
|
+
assert_equal([path: 'prefix.p1'],
|
51
|
+
wf.prefix_points({ path: 'p1' }, 'prefix'))
|
52
52
|
end
|
53
53
|
end
|
@@ -85,12 +85,24 @@ class WavefrontWriterSocketTest < MiniTest::Test
|
|
85
85
|
tcp_spy = Spy.on(TCPSocket, :new)
|
86
86
|
wf.open
|
87
87
|
assert tcp_spy.has_been_called?
|
88
|
-
assert_equal(
|
88
|
+
assert_equal(['wavefront-proxy', 2878], tcp_spy.calls.first.args)
|
89
89
|
end
|
90
90
|
|
91
91
|
def test_noop_open
|
92
92
|
tcp_spy = Spy.on(TCPSocket, :new)
|
93
|
+
log_spy = Spy.on(wf_noop.logger, :log)
|
93
94
|
wf_noop.open
|
94
95
|
refute tcp_spy.has_been_called?
|
96
|
+
assert_equal(['No-op requested. Not opening connection to proxy.'],
|
97
|
+
log_spy.calls.last.args)
|
98
|
+
assert_equal(1, log_spy.calls.size)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_noop_close
|
102
|
+
tcp_spy = Spy.on(TCPSocket, :new)
|
103
|
+
log_spy = Spy.on(wf_noop.logger, :log)
|
104
|
+
wf_noop.close
|
105
|
+
refute tcp_spy.has_been_called?
|
106
|
+
refute log_spy.has_been_called?
|
95
107
|
end
|
96
108
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wavefront-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Fisher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -180,6 +180,10 @@ files:
|
|
180
180
|
- README.md
|
181
181
|
- Rakefile
|
182
182
|
- lib/wavefront-sdk/alert.rb
|
183
|
+
- lib/wavefront-sdk/api_mixins/acl.rb
|
184
|
+
- lib/wavefront-sdk/api_mixins/tag.rb
|
185
|
+
- lib/wavefront-sdk/api_mixins/user.rb
|
186
|
+
- lib/wavefront-sdk/apitoken.rb
|
183
187
|
- lib/wavefront-sdk/cloudintegration.rb
|
184
188
|
- lib/wavefront-sdk/core/api.rb
|
185
189
|
- lib/wavefront-sdk/core/api_caller.rb
|
@@ -217,7 +221,6 @@ files:
|
|
217
221
|
- lib/wavefront-sdk/stdlib/string.rb
|
218
222
|
- lib/wavefront-sdk/support/mixins.rb
|
219
223
|
- lib/wavefront-sdk/support/parse_time.rb
|
220
|
-
- lib/wavefront-sdk/support/user_mixins.rb
|
221
224
|
- lib/wavefront-sdk/types/status.rb
|
222
225
|
- lib/wavefront-sdk/user.rb
|
223
226
|
- lib/wavefront-sdk/usergroup.rb
|
@@ -234,6 +237,8 @@ files:
|
|
234
237
|
- spec/.rubocop.yml
|
235
238
|
- spec/spec_helper.rb
|
236
239
|
- spec/wavefront-sdk/alert_spec.rb
|
240
|
+
- spec/wavefront-sdk/api_mixins/user_mixins_spec.rb
|
241
|
+
- spec/wavefront-sdk/apitoken_spec.rb
|
237
242
|
- spec/wavefront-sdk/cloudintegration_spec.rb
|
238
243
|
- spec/wavefront-sdk/core/api_caller_spec.rb
|
239
244
|
- spec/wavefront-sdk/core/api_spec.rb
|
@@ -269,7 +274,6 @@ files:
|
|
269
274
|
- spec/wavefront-sdk/stdlib/string_spec.rb
|
270
275
|
- spec/wavefront-sdk/support/mixins_spec.rb
|
271
276
|
- spec/wavefront-sdk/support/parse_time_spec.rb
|
272
|
-
- spec/wavefront-sdk/support/user_mixins_spec.rb
|
273
277
|
- spec/wavefront-sdk/user_spec.rb
|
274
278
|
- spec/wavefront-sdk/usergroup_spec.rb
|
275
279
|
- spec/wavefront-sdk/validators_spec.rb
|
@@ -308,6 +312,8 @@ test_files:
|
|
308
312
|
- spec/.rubocop.yml
|
309
313
|
- spec/spec_helper.rb
|
310
314
|
- spec/wavefront-sdk/alert_spec.rb
|
315
|
+
- spec/wavefront-sdk/api_mixins/user_mixins_spec.rb
|
316
|
+
- spec/wavefront-sdk/apitoken_spec.rb
|
311
317
|
- spec/wavefront-sdk/cloudintegration_spec.rb
|
312
318
|
- spec/wavefront-sdk/core/api_caller_spec.rb
|
313
319
|
- spec/wavefront-sdk/core/api_spec.rb
|
@@ -343,7 +349,6 @@ test_files:
|
|
343
349
|
- spec/wavefront-sdk/stdlib/string_spec.rb
|
344
350
|
- spec/wavefront-sdk/support/mixins_spec.rb
|
345
351
|
- spec/wavefront-sdk/support/parse_time_spec.rb
|
346
|
-
- spec/wavefront-sdk/support/user_mixins_spec.rb
|
347
352
|
- spec/wavefront-sdk/user_spec.rb
|
348
353
|
- spec/wavefront-sdk/usergroup_spec.rb
|
349
354
|
- spec/wavefront-sdk/validators_spec.rb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Wavefront
|
2
|
-
#
|
3
|
-
# Things needed by User and UserGroup classes
|
4
|
-
#
|
5
|
-
module UserMixins
|
6
|
-
# Validate a list of users.
|
7
|
-
# @param list [Array[String]] list of user IDs
|
8
|
-
# @raise Wavefront::Exception::InvalidUser
|
9
|
-
#
|
10
|
-
def validate_user_list(list)
|
11
|
-
raise ArgumentError unless list.is_a?(Array)
|
12
|
-
list.each { |id| wf_user_id?(id) }
|
13
|
-
end
|
14
|
-
|
15
|
-
# Validate a list of user groups
|
16
|
-
# @param list [Array[String]] list of user group IDs
|
17
|
-
# @raise Wavefront::Exception::InvalidUserGroup
|
18
|
-
#
|
19
|
-
def validate_usergroup_list(list)
|
20
|
-
raise ArgumentError unless list.is_a?(Array)
|
21
|
-
list.each { |id| wf_usergroup_id?(id) }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|