wavefront-sdk 1.6.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/HISTORY.md +39 -13
  4. data/README.md +75 -28
  5. data/Rakefile +1 -1
  6. data/lib/wavefront-sdk/alert.rb +113 -17
  7. data/lib/wavefront-sdk/cloudintegration.rb +8 -8
  8. data/lib/wavefront-sdk/core/api.rb +99 -0
  9. data/lib/wavefront-sdk/core/api_caller.rb +211 -0
  10. data/lib/wavefront-sdk/{exception.rb → core/exception.rb} +11 -6
  11. data/lib/wavefront-sdk/{logger.rb → core/logger.rb} +2 -3
  12. data/lib/wavefront-sdk/{response.rb → core/response.rb} +69 -52
  13. data/lib/wavefront-sdk/credentials.rb +6 -3
  14. data/lib/wavefront-sdk/dashboard.rb +14 -14
  15. data/lib/wavefront-sdk/{constants.rb → defs/constants.rb} +1 -0
  16. data/lib/wavefront-sdk/defs/version.rb +1 -0
  17. data/lib/wavefront-sdk/derivedmetric.rb +14 -14
  18. data/lib/wavefront-sdk/distribution.rb +75 -0
  19. data/lib/wavefront-sdk/event.rb +13 -13
  20. data/lib/wavefront-sdk/externallink.rb +8 -8
  21. data/lib/wavefront-sdk/integration.rb +9 -9
  22. data/lib/wavefront-sdk/maintenancewindow.rb +54 -8
  23. data/lib/wavefront-sdk/message.rb +4 -4
  24. data/lib/wavefront-sdk/metric.rb +3 -3
  25. data/lib/wavefront-sdk/notificant.rb +9 -9
  26. data/lib/wavefront-sdk/paginator/base.rb +148 -0
  27. data/lib/wavefront-sdk/paginator/delete.rb +11 -0
  28. data/lib/wavefront-sdk/paginator/get.rb +11 -0
  29. data/lib/wavefront-sdk/paginator/post.rb +64 -0
  30. data/lib/wavefront-sdk/paginator/put.rb +11 -0
  31. data/lib/wavefront-sdk/proxy.rb +7 -7
  32. data/lib/wavefront-sdk/query.rb +4 -4
  33. data/lib/wavefront-sdk/report.rb +9 -25
  34. data/lib/wavefront-sdk/savedsearch.rb +8 -8
  35. data/lib/wavefront-sdk/search.rb +16 -13
  36. data/lib/wavefront-sdk/source.rb +14 -14
  37. data/lib/wavefront-sdk/{mixins.rb → support/mixins.rb} +8 -2
  38. data/lib/wavefront-sdk/{parse_time.rb → support/parse_time.rb} +2 -0
  39. data/lib/wavefront-sdk/types/status.rb +52 -0
  40. data/lib/wavefront-sdk/user.rb +8 -8
  41. data/lib/wavefront-sdk/validators.rb +52 -3
  42. data/lib/wavefront-sdk/webhook.rb +8 -8
  43. data/lib/wavefront-sdk/write.rb +153 -52
  44. data/lib/wavefront-sdk/writers/api.rb +38 -0
  45. data/lib/wavefront-sdk/writers/core.rb +146 -0
  46. data/lib/wavefront-sdk/writers/http.rb +42 -0
  47. data/lib/wavefront-sdk/writers/socket.rb +66 -0
  48. data/lib/wavefront-sdk/writers/summary.rb +39 -0
  49. data/lib/wavefront_sdk.rb +9 -0
  50. data/spec/spec_helper.rb +3 -0
  51. data/spec/wavefront-sdk/alert_spec.rb +6 -0
  52. data/spec/wavefront-sdk/{base_spec.rb → core/api_caller_spec.rb} +28 -41
  53. data/spec/wavefront-sdk/core/api_spec.rb +31 -0
  54. data/spec/wavefront-sdk/{logger_spec.rb → core/logger_spec.rb} +3 -3
  55. data/spec/wavefront-sdk/core/response_spec.rb +77 -0
  56. data/spec/wavefront-sdk/credentials_spec.rb +15 -10
  57. data/spec/wavefront-sdk/distribution_spec.rb +78 -0
  58. data/spec/wavefront-sdk/paginator/base_spec.rb +67 -0
  59. data/spec/wavefront-sdk/paginator/post_spec.rb +53 -0
  60. data/spec/wavefront-sdk/report_spec.rb +3 -1
  61. data/spec/wavefront-sdk/search_spec.rb +25 -0
  62. data/spec/wavefront-sdk/stdlib/array_spec.rb +2 -1
  63. data/spec/wavefront-sdk/stdlib/hash_spec.rb +6 -1
  64. data/spec/wavefront-sdk/stdlib/string_spec.rb +2 -0
  65. data/spec/wavefront-sdk/{mixins_spec.rb → support/mixins_spec.rb} +2 -2
  66. data/spec/wavefront-sdk/{parse_time_spec.rb → support/parse_time_spec.rb} +2 -2
  67. data/spec/wavefront-sdk/validators_spec.rb +64 -1
  68. data/spec/wavefront-sdk/write_spec.rb +55 -77
  69. data/spec/wavefront-sdk/writers/api_spec.rb +45 -0
  70. data/spec/wavefront-sdk/writers/core_spec.rb +49 -0
  71. data/spec/wavefront-sdk/writers/http_spec.rb +69 -0
  72. data/spec/wavefront-sdk/writers/socket_spec.rb +104 -0
  73. data/spec/wavefront-sdk/writers/summary_spec.rb +38 -0
  74. data/wavefront-sdk.gemspec +1 -1
  75. metadata +52 -24
  76. data/lib/wavefront-sdk/base.rb +0 -264
  77. data/lib/wavefront-sdk/base_write.rb +0 -185
  78. data/lib/wavefront-sdk/stdlib.rb +0 -5
  79. data/lib/wavefront-sdk/version.rb +0 -1
  80. data/spec/wavefront-sdk/base_write_spec.rb +0 -82
  81. data/spec/wavefront-sdk/response_spec.rb +0 -39
@@ -2,8 +2,9 @@
2
2
 
3
3
  require_relative '../../spec_helper'
4
4
  require_relative '../../../lib/wavefront-sdk/stdlib/array'
5
- require 'spy/integration'
6
5
 
6
+ # Test extensions to stdlib's Array class
7
+ #
7
8
  class ArrayTest < MiniTest::Test
8
9
  def test_uri_concat
9
10
  assert_equal %w[a b].uri_concat, 'a/b'
@@ -2,7 +2,6 @@
2
2
 
3
3
  require_relative '../../spec_helper'
4
4
  require_relative '../../../lib/wavefront-sdk/stdlib/hash'
5
- require 'spy/integration'
6
5
 
7
6
  # Test extensions to stdlib hash class
8
7
  #
@@ -17,4 +16,10 @@ class HashTest < MiniTest::Test
17
16
  assert_equal('tag1="say \"hi\"" tag2="some stuff!"',
18
17
  { tag1: 'say "hi"', tag2: 'some stuff!' }.to_wf_tag)
19
18
  end
19
+
20
+ def test_cleanse
21
+ assert_equal({ k1: 1, k3: 3 }, { k1: 1, k2: nil, k3: 3 }.cleanse)
22
+ assert_equal({ k1: 1, k2: 2, k3: 3 }, { k1: 1, k2: 2, k3: 3 }.cleanse)
23
+ assert_equal({}, { k1: nil, k2: false, k3: false }.cleanse)
24
+ end
20
25
  end
@@ -3,6 +3,8 @@
3
3
  require_relative '../../spec_helper'
4
4
  require_relative '../../../lib/wavefront-sdk/stdlib/string'
5
5
 
6
+ # Test extensions to stdlib's String class
7
+ #
6
8
  class StringTest < MiniTest::Test
7
9
  def test_tagescape
8
10
  assert_equal('value', 'value'.tagescape)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative '../spec_helper'
4
- require_relative '../../lib/wavefront-sdk/mixins'
3
+ require_relative '../../spec_helper'
4
+ require_relative '../../../lib/wavefront-sdk/support/mixins'
5
5
  require 'spy/integration'
6
6
 
7
7
  # Test SDK mixins
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative '../spec_helper'
4
- require_relative '../../lib/wavefront-sdk/parse_time'
3
+ require_relative '../../spec_helper'
4
+ require_relative '../../../lib/wavefront-sdk/support/parse_time'
5
5
 
6
6
  # rubocop:disable Style/NumericLiterals
7
7
  TSS = 1517151869
@@ -3,7 +3,7 @@
3
3
  require 'date'
4
4
  require 'minitest/autorun'
5
5
  require_relative '../spec_helper'
6
- require_relative '../../lib/wavefront-sdk/constants'
6
+ require_relative '../../lib/wavefront-sdk/defs/constants'
7
7
  require_relative '../../lib/wavefront-sdk/validators'
8
8
 
9
9
  # Validator tests, obviously. Happy now Rubocop?
@@ -261,6 +261,62 @@ class WavefrontValidatorsTest < MiniTest::Test
261
261
  end
262
262
  end
263
263
 
264
+ def test_wf_disitribution?
265
+ value = [[4, 10], [6, 11], [15, 1e5]]
266
+ good = { path: 'test.metric', value: value, ts: Time.now.to_i,
267
+ source: 'testhost', tags: { t1: 'v 1', t2: 'v2' } }
268
+
269
+ assert(wf_distribution?(good))
270
+
271
+ %w[tags source ts].each do |t|
272
+ p = good.dup
273
+ p.delete(t)
274
+ assert(wf_distribution?(p))
275
+ end
276
+
277
+ bad = good.dup
278
+ bad[:path] = '!n\/@1!d_metric'
279
+
280
+ assert_raises(Wavefront::Exception::InvalidMetricName) do
281
+ wf_distribution?(bad)
282
+ end
283
+
284
+ bad = good.dup
285
+ bad[:value] = [[1.2, 5]]
286
+
287
+ assert_raises(Wavefront::Exception::InvalidDistributionCount) do
288
+ wf_distribution?(bad)
289
+ end
290
+
291
+ bad = good.dup
292
+ bad[:value] = [[2, 'abc']]
293
+
294
+ assert_raises(Wavefront::Exception::InvalidMetricValue) do
295
+ wf_distribution?(bad)
296
+ end
297
+
298
+ bad = good.dup
299
+ bad[:ts] = 'abc'
300
+
301
+ assert_raises(Wavefront::Exception::InvalidTimestamp) do
302
+ wf_distribution?(bad)
303
+ end
304
+
305
+ bad = good.dup
306
+ bad[:source] = '<------>'
307
+
308
+ assert_raises(Wavefront::Exception::InvalidSourceId) do
309
+ wf_distribution?(bad)
310
+ end
311
+
312
+ bad = good.dup
313
+ bad[:tags] = { '<------>': 45 }
314
+
315
+ assert_raises(Wavefront::Exception::InvalidTag) do
316
+ wf_distribution?(bad)
317
+ end
318
+ end
319
+
264
320
  def test_notificant_id
265
321
  good = %w[CHTo47HvsPzSaGhh]
266
322
  bad = ['CTo47HvsPzSaGhh', [], {}, nil, 'bad id']
@@ -272,4 +328,11 @@ class WavefrontValidatorsTest < MiniTest::Test
272
328
  bad = ['CTo47HvsPzSaGhh', [], {}, nil, 'bad id']
273
329
  good_and_bad('wf_integration_id?', 'InvalidIntegrationId', good, bad)
274
330
  end
331
+
332
+ def test_distribution_interval
333
+ good = %i[m h d]
334
+ bad = ['m', [], {}, nil, 'bad id', :x, 'p']
335
+ good_and_bad('wf_distribution_interval?',
336
+ 'InvalidDistributionInterval', good, bad)
337
+ end
275
338
  end
@@ -1,12 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require_relative '../spec_helper'
4
+ require 'minitest/autorun'
3
5
  require_relative '../../lib/wavefront-sdk/write.rb'
4
6
  require_relative 'resources/dummy_points'
5
- require 'minitest/autorun'
6
- require 'webmock/minitest'
7
- require 'spy'
8
- require 'spy/integration'
9
- require 'socket'
10
7
 
11
8
  W_CREDS = { proxy: 'wavefront', port: 2878 }.freeze
12
9
 
@@ -29,88 +26,69 @@ class WavefrontWriteTest < MiniTest::Test
29
26
  refute(wf.opts[:noop])
30
27
  assert(wf_noop.opts[:noop])
31
28
  assert_equal(wf_tags.opts[:tags], TAGS)
32
- assert_equal(wf.summary, sent: 0, rejected: 0, unsent: 0)
29
+ assert_instance_of(Wavefront::Writer::Socket, wf.writer)
33
30
  end
34
31
 
35
- def test_write_openclose
36
- mocket = Mocket.new
37
- Spy.on(TCPSocket, :new).and_return(mocket)
38
- mocket_spy = Spy.on(mocket, :puts)
39
- wf.write(POINT)
40
- assert mocket_spy.has_been_called?
41
- end
32
+ def test_paths_to_deltas
33
+ x = wf.paths_to_deltas(POINTS.dup)
34
+ assert_equal(x.size, 2)
42
35
 
43
- def test_write_noop
44
- mocket = Mocket.new
45
- Spy.on(TCPSocket, :new).and_return(mocket)
46
- mocket_spy = Spy.on(mocket, :puts)
47
- wf_noop.open
48
- wf_noop.write(POINT, false)
49
- refute mocket_spy.has_been_called?
36
+ x.each do |p|
37
+ assert_instance_of(Hash, p)
38
+ assert(p[:path].start_with?(DELTA))
39
+ end
50
40
  end
51
41
 
52
- def test_write_noop_openclose
53
- mocket = Mocket.new
54
- Spy.on(TCPSocket, :new).and_return(mocket)
55
- mocket_spy = Spy.on(mocket, :puts)
56
- wf_noop.write(POINT)
57
- refute mocket_spy.has_been_called?
58
- end
42
+ def test_point_array
43
+ p1 = POINT.dup
44
+ assert_equal(['test.metric', 123_456, 1_469_987_572, 'testhost',
45
+ 't1="v1" t2="v2"', nil], wf.point_array(p1))
59
46
 
60
- def test_write
61
- mocket = Mocket.new
62
- Spy.on(TCPSocket, :new).and_return(mocket)
63
- mocket_spy = Spy.on(mocket, :puts)
64
- wf.open
65
- wf.write(POINT, false)
66
- assert mocket_spy.has_been_called?
67
- end
47
+ p2 = POINT.dup.tap { |p| p.delete(:point) }
48
+ assert_raises(StandardError) { wf.point_arrayt(p2) }
68
49
 
69
- def test_write_array
70
- mocket = Mocket.new
71
- Spy.on(TCPSocket, :new).and_return(mocket)
72
- mocket_spy = Spy.on(mocket, :puts)
73
- wf.open
74
- wf.write(POINT_A, false)
75
- assert mocket_spy.has_been_called?
76
- end
50
+ p3 = POINT.dup.tap { |p| p.delete(:value) }
51
+ assert_raises(StandardError) { wf.point_arrayt(p3) }
77
52
 
78
- def test_really_send_point
79
- mocket = Mocket.new
80
- Spy.on(TCPSocket, :new).and_return(mocket)
81
- mocket_spy = Spy.on(mocket, :puts)
82
- wf.open
83
- wf.really_send_point(POINT_L)
84
- assert mocket_spy.has_been_called_with?(POINT_L)
85
- end
53
+ p4 = POINT.dup.tap { |p| p.delete(:ts) }
54
+ assert_equal(['test.metric', 123_456, nil, 'testhost',
55
+ 't1="v1" t2="v2"', nil], wf.point_array(p4))
86
56
 
87
- def test_noop_send_point
88
- mocket = Mocket.new
89
- Spy.on(TCPSocket, :new).and_return(mocket)
90
- mocket_spy = Spy.on(mocket, :puts)
91
- wf_noop.open
92
- wf_noop.send_point(POINT_L)
93
- refute mocket_spy.has_been_called?
57
+ p5 = POINT.dup.tap { |p| p.delete(:tags) }
58
+ assert_equal(['test.metric', 123_456, 1_469_987_572, 'testhost',
59
+ nil, nil], wf.point_array(p5))
94
60
  end
95
61
 
96
- def test_open
97
- tcp_spy = Spy.on(TCPSocket, :new)
98
- wf.open
99
- assert tcp_spy.has_been_called?
100
- assert_equal(tcp_spy.calls.first.args, ['wavefront', 2878])
62
+ def test_hash_to_wf
63
+ assert_equal(wf.hash_to_wf(POINT),
64
+ 'test.metric 123456 1469987572 ' \
65
+ 'source=testhost t1="v1" t2="v2"')
66
+ assert_equal(wf_tags.hash_to_wf(POINT),
67
+ 'test.metric 123456 1469987572 ' \
68
+ 'source=testhost t1="v1" t2="v2" ' \
69
+ 'gt1="gv1" gt2="gv2"')
70
+
71
+ p1 = POINT.dup
72
+ p1.delete(:ts)
73
+ assert_equal(wf.hash_to_wf(p1),
74
+ 'test.metric 123456 source=testhost t1="v1" t2="v2"')
75
+
76
+ p2 = POINT.dup
77
+ p2.delete(:tags)
78
+ assert_equal(wf.hash_to_wf(p2),
79
+ 'test.metric 123456 1469987572 source=testhost')
80
+
81
+ %i[value path].each do |k|
82
+ p3 = POINT.dup
83
+ p3.delete(k)
84
+
85
+ assert_raises(Wavefront::Exception::InvalidPoint) do
86
+ wf.hash_to_wf(p3)
87
+ end
88
+
89
+ assert_raises(Wavefront::Exception::InvalidPoint) do
90
+ wf_tags.hash_to_wf(p3)
91
+ end
92
+ end
101
93
  end
102
-
103
- def test_noop_open
104
- tcp_spy = Spy.on(TCPSocket, :new)
105
- wf_noop.open
106
- refute tcp_spy.has_been_called?
107
- end
108
- end
109
-
110
- # A mock socket
111
- #
112
- class Mocket
113
- def puts(socket); end
114
-
115
- def close; end
116
94
  end
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../../spec_helper'
4
+ require_relative '../resources/dummy_points'
5
+ require_relative '../../../lib/wavefront-sdk/write'
6
+
7
+ HEADERS = POST_HEADERS.merge('Content-Type': 'application/octet-stream')
8
+
9
+ # The report class test will test that an API call is made. Here all
10
+ # that's left to test is the #validate_credentials method.
11
+ #
12
+ class WavefrontWriterApiTest < MiniTest::Test
13
+ attr_reader :wf
14
+
15
+ def setup
16
+ @wf = Wavefront::Write.new(CREDS, writer: :api)
17
+ end
18
+
19
+ def test_writer_class
20
+ assert_instance_of(Wavefront::Writer::Api, wf.writer)
21
+ end
22
+
23
+ def test_validate_credentials
24
+ assert(Wavefront::Write.new(CREDS, writer: :api))
25
+
26
+ assert_instance_of(Wavefront::Write,
27
+ Wavefront::Write.new(CREDS, writer: :api))
28
+
29
+ assert_raises(Wavefront::Exception::CredentialError) do
30
+ Wavefront::Write.new({}, writer: :api)
31
+ end
32
+
33
+ assert_raises(Wavefront::Exception::CredentialError) do
34
+ Wavefront::Write.new({ proxy: 'wavefront' }, writer: :api)
35
+ end
36
+
37
+ assert_raises(Wavefront::Exception::CredentialError) do
38
+ Wavefront::Write.new({ endpoint: 'wavefront.com' }, writer: :api)
39
+ end
40
+
41
+ assert_raises(Wavefront::Exception::CredentialError) do
42
+ Wavefront::Write.new({ token: 'abcdef' }, writer: :api)
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'logger'
4
+ require_relative '../../spec_helper'
5
+ require_relative '../../../lib/wavefront-sdk/writers/core'
6
+ require_relative '../resources/dummy_points'
7
+
8
+ # rubocop:disable Style/MutableConstant
9
+ WBWT_CREDS = { endpoint: 'stub.wavefront.com', token: 'tkn' }
10
+ # rubocop:enable Style/MutableConstant
11
+
12
+ class TestClassNoTags
13
+ def creds
14
+ WBWT_CREDS
15
+ end
16
+
17
+ def opts
18
+ {}
19
+ end
20
+
21
+ def logger
22
+ Logger.new(STDOUT)
23
+ end
24
+ end
25
+
26
+ # Test methods common to 'write' and 'report'
27
+ #
28
+ class WavefrontCoreWriteTest < MiniTest::Test
29
+ attr_reader :wf, :wf_tags
30
+
31
+ def setup
32
+ @wf = Wavefront::Writer::Core.new(TestClassNoTags.new)
33
+ end
34
+
35
+ def test_prefix_points
36
+ assert_equal(wf.prefix_points(%w[p1 p2 p3 p4]), %w[p1 p2 p3 p4])
37
+ assert_equal(wf.prefix_points([%w[p1 p2 p3 p4]]), %w[p1 p2 p3 p4])
38
+ assert_equal(wf.prefix_points('p1'), %w[p1])
39
+ assert_equal(wf.prefix_points([{ path: 'p1' },
40
+ { path: 'p2' },
41
+ { path: 'p3' }], 'prefix'),
42
+ [{ path: 'prefix.p1' },
43
+ { path: 'prefix.p2' },
44
+ { path: 'prefix.p3' }])
45
+
46
+ assert_equal(wf.prefix_points({ path: 'p1' }, 'prefix'),
47
+ [path: 'prefix.p1'])
48
+ end
49
+ end
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../../spec_helper'
4
+ require_relative '../resources/dummy_points'
5
+ require_relative '../../../lib/wavefront-sdk/write'
6
+
7
+ BODY = 'test.metric 123456 1469987572 source=testhost t1="v1" t2="v2"'.freeze
8
+
9
+ # Test HTTP transport
10
+ #
11
+ class WavefrontWriterSocketTest < MiniTest::Test
12
+ attr_reader :wf
13
+
14
+ def setup
15
+ @wf = Wavefront::Write.new({ proxy: 'wavefront' }, writer: :http)
16
+ end
17
+
18
+ def test_writer_class
19
+ assert_instance_of(Wavefront::Writer::Http, wf.writer)
20
+ end
21
+
22
+ def test_validate_credentials
23
+ assert Wavefront::Write.new({ proxy: 'wavefront' }, writer: :http)
24
+ assert_instance_of(Wavefront::Write, wf)
25
+
26
+ assert_raises(Wavefront::Exception::CredentialError) do
27
+ Wavefront::Write.new(CREDS, writer: :http)
28
+ end
29
+
30
+ assert_raises(Wavefront::Exception::CredentialError) do
31
+ Wavefront::Write.new({}, writer: :http)
32
+ end
33
+
34
+ assert_raises(Wavefront::Exception::CredentialError) do
35
+ Wavefront::Write.new({ endpoint: 'wavefront.com' }, writer: :http)
36
+ end
37
+
38
+ assert_raises(Wavefront::Exception::CredentialError) do
39
+ Wavefront::Write.new({ token: 'abcdef' }, writer: :http)
40
+ end
41
+ end
42
+
43
+ def test_write_2878
44
+ wf1 = Wavefront::Write.new({ proxy: 'wavefront' }, writer: :http)
45
+
46
+ stub_request(:post, 'http://wavefront:2878')
47
+ .with(body: BODY, headers: POST_HEADERS)
48
+ .to_return(body: DUMMY_RESPONSE, status: 200)
49
+
50
+ wf1.write(POINT)
51
+
52
+ assert_requested(:post, 'http://wavefront:2878', headers: POST_HEADERS)
53
+ WebMock.reset!
54
+ end
55
+
56
+ def test_write_1234
57
+ wf1 = Wavefront::Write.new({ proxy: 'wavefront', port: 1234 },
58
+ writer: :http)
59
+
60
+ stub_request(:post, 'http://wavefront:1234')
61
+ .with(body: BODY, headers: POST_HEADERS)
62
+ .to_return(body: DUMMY_RESPONSE, status: 200)
63
+
64
+ wf1.write(POINT)
65
+
66
+ assert_requested(:post, 'http://wavefront:1234', headers: POST_HEADERS)
67
+ WebMock.reset!
68
+ end
69
+ end