wavefront-sdk 5.4.1 → 6.0.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.github/workflows/release.yml +37 -0
  4. data/.github/workflows/test.yml +23 -0
  5. data/.rubocop.yml +8 -6
  6. data/HISTORY.md +26 -0
  7. data/README.md +5 -5
  8. data/lib/wavefront-sdk/api_mixins/acl.rb +1 -1
  9. data/lib/wavefront-sdk/core/api.rb +1 -1
  10. data/lib/wavefront-sdk/core/api_caller.rb +2 -2
  11. data/lib/wavefront-sdk/core/exception.rb +58 -0
  12. data/lib/wavefront-sdk/credentials.rb +8 -8
  13. data/lib/wavefront-sdk/defs/version.rb +1 -1
  14. data/lib/wavefront-sdk/event.rb +70 -3
  15. data/lib/wavefront-sdk/metricspolicy.rb +57 -0
  16. data/lib/wavefront-sdk/query.rb +2 -0
  17. data/lib/wavefront-sdk/search.rb +2 -0
  18. data/lib/wavefront-sdk/spy.rb +22 -0
  19. data/lib/wavefront-sdk/support/parse_time.rb +1 -1
  20. data/lib/wavefront-sdk/user.rb +1 -1
  21. data/lib/wavefront-sdk/validators.rb +17 -2
  22. data/lib/wavefront-sdk/write.rb +3 -3
  23. data/lib/wavefront-sdk/writers/api.rb +2 -2
  24. data/lib/wavefront-sdk/writers/core.rb +1 -1
  25. data/lib/wavefront-sdk/writers/http.rb +2 -2
  26. data/lib/wavefront-sdk/writers/proxy.rb +71 -0
  27. data/lib/wavefront-sdk/writers/socket.rb +15 -27
  28. data/spec/.rubocop.yml +3 -15
  29. data/spec/constants.rb +2 -2
  30. data/spec/support/mocket.rb +3 -1
  31. data/spec/test_mixins/general.rb +1 -1
  32. data/spec/wavefront-sdk/core/response_spec.rb +2 -2
  33. data/spec/wavefront-sdk/event_spec.rb +46 -0
  34. data/spec/wavefront-sdk/metric_helper_spec.rb +6 -4
  35. data/spec/wavefront-sdk/metricspolicy_spec.rb +94 -0
  36. data/spec/wavefront-sdk/spy_spec.rb +27 -0
  37. data/spec/wavefront-sdk/validators_spec.rb +11 -1
  38. data/spec/wavefront-sdk/write_spec.rb +1 -1
  39. data/spec/wavefront-sdk/writers/api_spec.rb +4 -0
  40. data/spec/wavefront-sdk/writers/core_spec.rb +1 -3
  41. data/spec/wavefront-sdk/writers/http_spec.rb +24 -21
  42. data/spec/wavefront-sdk/writers/proxy_spec.rb +129 -0
  43. data/spec/wavefront-sdk/writers/socket_spec.rb +49 -27
  44. data/wavefront-sdk.gemspec +5 -3
  45. metadata +58 -11
  46. data/.github/workflows/ruby.yml +0 -32
  47. data/.travis.yml +0 -21
  48. data/lib/wavefront-sdk/writers/unix.rb +0 -59
@@ -6,24 +6,23 @@ require 'spy'
6
6
  require 'spy/integration'
7
7
  require 'socket'
8
8
  require 'logger'
9
+ require_relative '../resources/dummy_points'
9
10
  require_relative '../../spec_helper'
10
11
  require_relative '../../../lib/wavefront-sdk/write'
11
- require_relative '../resources/dummy_points'
12
+ require_relative '../../../spec/support/mocket'
13
+
14
+ UNIX_SOCK = '/tmp/testsock'
12
15
 
13
- # rubocop:disable Style/MutableConstant
14
- WS_CREDS = { proxy: 'wavefront-proxy' }
15
- # rubocop:enable Style/MutableConstant
16
+ WU_CREDS = { socket: UNIX_SOCK }.freeze
16
17
 
17
- # It's not straightforward to test the Writer::Socket class on its
18
- # own. It makes far more sense to test the Write interface which
19
- # calls it.
18
+ # Test UNIX Datagram socket writing
20
19
  #
21
- class WavefrontWriterSocketTest < MiniTest::Test
20
+ class WavefrontWriterUnixTest < MiniTest::Test
22
21
  attr_reader :wf, :wf_noop
23
22
 
24
23
  def setup
25
- @wf = Wavefront::Write.new(WS_CREDS, writer: :socket)
26
- @wf_noop = Wavefront::Write.new(WS_CREDS, writer: :socket, noop: true)
24
+ @wf = Wavefront::Write.new(WU_CREDS, writer: :socket)
25
+ @wf_noop = Wavefront::Write.new(WU_CREDS, writer: :socket, noop: true)
27
26
  end
28
27
 
29
28
  def test_writer_class
@@ -32,16 +31,16 @@ class WavefrontWriterSocketTest < MiniTest::Test
32
31
 
33
32
  def test_write_openclose
34
33
  mocket = Mocket.new
35
- Spy.on(TCPSocket, :new).and_return(mocket)
36
- mocket_spy = Spy.on(mocket, :puts)
34
+ Spy.on(UNIXSocket, :new).and_return(mocket)
35
+ mocket_spy = Spy.on(mocket, :write)
37
36
  wf.write(POINT)
38
37
  assert mocket_spy.has_been_called?
39
38
  end
40
39
 
41
40
  def test_write_noop
42
41
  mocket = Mocket.new
43
- Spy.on(TCPSocket, :new).and_return(mocket)
44
- mocket_spy = Spy.on(mocket, :puts)
42
+ Spy.on(UNIXSocket, :new).and_return(mocket)
43
+ mocket_spy = Spy.on(mocket, :write)
45
44
  wf_noop.open
46
45
  wf_noop.write(POINT, false)
47
46
  refute mocket_spy.has_been_called?
@@ -49,16 +48,16 @@ class WavefrontWriterSocketTest < MiniTest::Test
49
48
 
50
49
  def test_write_noop_openclose
51
50
  mocket = Mocket.new
52
- Spy.on(TCPSocket, :new).and_return(mocket)
53
- mocket_spy = Spy.on(mocket, :puts)
51
+ Spy.on(UNIXSocket, :new).and_return(mocket)
52
+ mocket_spy = Spy.on(mocket, :write)
54
53
  wf_noop.write(POINT)
55
54
  refute mocket_spy.has_been_called?
56
55
  end
57
56
 
58
57
  def test_write
59
58
  mocket = Mocket.new
60
- Spy.on(TCPSocket, :new).and_return(mocket)
61
- mocket_spy = Spy.on(mocket, :puts)
59
+ Spy.on(UNIXSocket, :new).and_return(mocket)
60
+ mocket_spy = Spy.on(mocket, :write)
62
61
  wf.open
63
62
  wf.write(POINT, false)
64
63
  assert mocket_spy.has_been_called?
@@ -66,8 +65,8 @@ class WavefrontWriterSocketTest < MiniTest::Test
66
65
 
67
66
  def test_write_array
68
67
  mocket = Mocket.new
69
- Spy.on(TCPSocket, :new).and_return(mocket)
70
- mocket_spy = Spy.on(mocket, :puts)
68
+ Spy.on(UNIXSocket, :new).and_return(mocket)
69
+ mocket_spy = Spy.on(mocket, :write)
71
70
  wf.open
72
71
  wf.write(POINT_A, false)
73
72
  assert mocket_spy.has_been_called?
@@ -75,35 +74,58 @@ class WavefrontWriterSocketTest < MiniTest::Test
75
74
 
76
75
  def test_noop_send_point
77
76
  mocket = Mocket.new
78
- Spy.on(TCPSocket, :new).and_return(mocket)
79
- mocket_spy = Spy.on(mocket, :puts)
77
+ Spy.on(UNIXSocket, :new).and_return(mocket)
78
+ mocket_spy = Spy.on(mocket, :write)
80
79
  wf_noop.open
81
80
  wf_noop.send_point(POINT_L)
82
81
  refute mocket_spy.has_been_called?
83
82
  end
84
83
 
85
84
  def test_open
86
- tcp_spy = Spy.on(TCPSocket, :new)
85
+ tcp_spy = Spy.on(UNIXSocket, :new)
87
86
  wf.open
88
87
  assert tcp_spy.has_been_called?
89
- assert_equal(['wavefront-proxy', 2878], tcp_spy.calls.first.args)
88
+ assert_equal([UNIX_SOCK], tcp_spy.calls.first.args)
90
89
  end
91
90
 
92
91
  def test_noop_open
93
- tcp_spy = Spy.on(TCPSocket, :new)
92
+ tcp_spy = Spy.on(UNIXSocket, :new)
94
93
  log_spy = Spy.on(wf_noop.logger, :log)
95
94
  wf_noop.open
96
95
  refute tcp_spy.has_been_called?
97
- assert_equal(['No-op requested. Not opening connection to proxy.'],
96
+ assert_equal(['No-op requested. Not opening socket connection.'],
98
97
  log_spy.calls.last.args)
99
98
  assert_equal(1, log_spy.calls.size)
100
99
  end
101
100
 
102
101
  def test_noop_close
103
- tcp_spy = Spy.on(TCPSocket, :new)
102
+ tcp_spy = Spy.on(UNIXSocket, :new)
104
103
  log_spy = Spy.on(wf_noop.logger, :log)
105
104
  wf_noop.close
106
105
  refute tcp_spy.has_been_called?
107
106
  refute log_spy.has_been_called?
108
107
  end
108
+
109
+ def test_validate_credentials
110
+ assert(Wavefront::Write.new(WU_CREDS, writer: :socket))
111
+
112
+ assert_instance_of(Wavefront::Write,
113
+ Wavefront::Write.new(WU_CREDS, writer: :socket))
114
+
115
+ assert_raises(Wavefront::Exception::CredentialError) do
116
+ Wavefront::Write.new({}, writer: :socket)
117
+ end
118
+
119
+ assert_raises(Wavefront::Exception::CredentialError) do
120
+ Wavefront::Write.new({ endpoint: 'wavefront.com' }, writer: :socket)
121
+ end
122
+
123
+ assert_raises(Wavefront::Exception::CredentialError) do
124
+ Wavefront::Write.new({ token: 'abcdef' }, writer: :socket)
125
+ end
126
+
127
+ assert_raises(Wavefront::Exception::CredentialError) do
128
+ Wavefront::Write.new({ proxy: nil }, writer: :socket)
129
+ end
130
+ end
109
131
  end
@@ -7,7 +7,6 @@ require_relative 'lib/wavefront-sdk/defs/version'
7
7
  Gem::Specification.new do |gem|
8
8
  gem.name = 'wavefront-sdk'
9
9
  gem.version = WF_SDK_VERSION
10
- gem.date = Date.today.to_s
11
10
 
12
11
  gem.summary = 'SDK for Wavefront API v2'
13
12
  gem.description = 'SDK for Wavefront (wavefront.com) API v2 '
@@ -29,11 +28,14 @@ Gem::Specification.new do |gem|
29
28
 
30
29
  gem.add_development_dependency 'minitest', '~> 5.14'
31
30
  gem.add_development_dependency 'rake', '~> 13.0'
32
- gem.add_development_dependency 'rubocop', '1.0'
31
+ gem.add_development_dependency 'rubocop', '~> 1.17'
32
+ gem.add_development_dependency 'rubocop-minitest', '~> 0.10'
33
+ gem.add_development_dependency 'rubocop-performance', '~> 1.3'
34
+ gem.add_development_dependency 'rubocop-rake', '~> 0.5'
33
35
  gem.add_development_dependency 'simplecov', '~> 0.18'
34
36
  gem.add_development_dependency 'spy', '1.0.0'
35
37
  gem.add_development_dependency 'webmock', '~> 3.9'
36
38
  gem.add_development_dependency 'yard', '~> 0.9'
37
39
 
38
- gem.required_ruby_version = Gem::Requirement.new('>= 2.4.0')
40
+ gem.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
39
41
  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: 5.4.1
4
+ version: 6.0.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: 2020-12-18 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -98,16 +98,58 @@ dependencies:
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '='
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.0'
103
+ version: '1.17'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '='
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.17'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.10'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.10'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-performance
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.3'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.5'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
109
151
  - !ruby/object:Gem::Version
110
- version: '1.0'
152
+ version: '0.5'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: simplecov
113
155
  requirement: !ruby/object:Gem::Requirement
@@ -171,10 +213,10 @@ extensions: []
171
213
  extra_rdoc_files: []
172
214
  files:
173
215
  - ".codeclimate.yml"
174
- - ".github/workflows/ruby.yml"
216
+ - ".github/workflows/release.yml"
217
+ - ".github/workflows/test.yml"
175
218
  - ".gitignore"
176
219
  - ".rubocop.yml"
177
- - ".travis.yml"
178
220
  - Gemfile
179
221
  - HISTORY.md
180
222
  - LICENSE.txt
@@ -206,6 +248,7 @@ files:
206
248
  - lib/wavefront-sdk/message.rb
207
249
  - lib/wavefront-sdk/metric.rb
208
250
  - lib/wavefront-sdk/metric_helper.rb
251
+ - lib/wavefront-sdk/metricspolicy.rb
209
252
  - lib/wavefront-sdk/notificant.rb
210
253
  - lib/wavefront-sdk/paginator/base.rb
211
254
  - lib/wavefront-sdk/paginator/delete.rb
@@ -241,9 +284,9 @@ files:
241
284
  - lib/wavefront-sdk/writers/api.rb
242
285
  - lib/wavefront-sdk/writers/core.rb
243
286
  - lib/wavefront-sdk/writers/http.rb
287
+ - lib/wavefront-sdk/writers/proxy.rb
244
288
  - lib/wavefront-sdk/writers/socket.rb
245
289
  - lib/wavefront-sdk/writers/summary.rb
246
- - lib/wavefront-sdk/writers/unix.rb
247
290
  - lib/wavefront_sdk.rb
248
291
  - spec/.rubocop.yml
249
292
  - spec/constants.rb
@@ -276,6 +319,7 @@ files:
276
319
  - spec/wavefront-sdk/message_spec.rb
277
320
  - spec/wavefront-sdk/metric_helper_spec.rb
278
321
  - spec/wavefront-sdk/metric_spec.rb
322
+ - spec/wavefront-sdk/metricspolicy_spec.rb
279
323
  - spec/wavefront-sdk/misc_spec.rb
280
324
  - spec/wavefront-sdk/notificant_spec.rb
281
325
  - spec/wavefront-sdk/paginator/base_spec.rb
@@ -315,6 +359,7 @@ files:
315
359
  - spec/wavefront-sdk/writers/api_spec.rb
316
360
  - spec/wavefront-sdk/writers/core_spec.rb
317
361
  - spec/wavefront-sdk/writers/http_spec.rb
362
+ - spec/wavefront-sdk/writers/proxy_spec.rb
318
363
  - spec/wavefront-sdk/writers/socket_spec.rb
319
364
  - spec/wavefront-sdk/writers/summary_spec.rb
320
365
  - wavefront-sdk.gemspec
@@ -330,14 +375,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
330
375
  requirements:
331
376
  - - ">="
332
377
  - !ruby/object:Gem::Version
333
- version: 2.4.0
378
+ version: 2.5.0
334
379
  required_rubygems_version: !ruby/object:Gem::Requirement
335
380
  requirements:
336
381
  - - ">="
337
382
  - !ruby/object:Gem::Version
338
383
  version: '0'
339
384
  requirements: []
340
- rubygems_version: 3.0.8
385
+ rubygems_version: 3.1.6
341
386
  signing_key:
342
387
  specification_version: 4
343
388
  summary: SDK for Wavefront API v2
@@ -373,6 +418,7 @@ test_files:
373
418
  - spec/wavefront-sdk/message_spec.rb
374
419
  - spec/wavefront-sdk/metric_helper_spec.rb
375
420
  - spec/wavefront-sdk/metric_spec.rb
421
+ - spec/wavefront-sdk/metricspolicy_spec.rb
376
422
  - spec/wavefront-sdk/misc_spec.rb
377
423
  - spec/wavefront-sdk/notificant_spec.rb
378
424
  - spec/wavefront-sdk/paginator/base_spec.rb
@@ -412,5 +458,6 @@ test_files:
412
458
  - spec/wavefront-sdk/writers/api_spec.rb
413
459
  - spec/wavefront-sdk/writers/core_spec.rb
414
460
  - spec/wavefront-sdk/writers/http_spec.rb
461
+ - spec/wavefront-sdk/writers/proxy_spec.rb
415
462
  - spec/wavefront-sdk/writers/socket_spec.rb
416
463
  - spec/wavefront-sdk/writers/summary_spec.rb
@@ -1,32 +0,0 @@
1
- # This workflow uses actions that are not certified by GitHub.
2
- # They are provided by a third-party and are governed by
3
- # separate terms of service, privacy policy, and support
4
- # documentation.
5
- # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
- # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
-
8
- name: Ruby
9
-
10
- on:
11
- push:
12
- branches: [ master ]
13
- pull_request:
14
- branches: [ master ]
15
-
16
- jobs:
17
- test:
18
- runs-on: ubuntu-latest
19
- strategy:
20
- matrix:
21
- ruby-version: [2.4.10, 2.5.8, 2.6.6, 2.7.2]
22
- steps:
23
- - uses: actions/checkout@v2
24
- - name: Set up Ruby
25
- uses: ruby/setup-ruby@v1
26
- with:
27
- ruby-version: ${{ matrix.ruby-version }}
28
- bundler-cache: true
29
- - name: Install dependencies
30
- run: bundle install
31
- - name: Run tests
32
- run: bundle exec rake
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - 2.4.9
5
- - 2.5.8
6
- - 2.6.6
7
- - 2.7.2
8
- before_install: gem install bundler --no-document
9
- deploy:
10
- provider: rubygems
11
- api_key:
12
- secure: dfmL5JwBn+u3cUmyAaDsApDa7ljGajGNz3GDcKd2J8FOt7+a758/lmL8EQ34sDT1ZFotrxn/y1RbgXlaDxAE1XDfrZbjckmx7a6wa2sqR3kBraJ2tx7CiXodbw3Z8XZf9WLb0kYGmlLtI73GNcuunMt/9f1cobqWISRLHw6b7amlO7GW2ZBZgzRS+N8TSS2dicIvKMo5HoMYU+uWLM4zDFBPnGNcMiWxh8ysLzJoKqA9kbBUyCVEZ03MlV7G71ObvWCLasKnZ3W5U+K1NbgU7mgMYfl9KIcA4y9hQ9hUCijk40SmT7ffy3P2gq8zblC/4x5Eefpau9X/bdLwXoRCIzqk05t4f45wstj2auHGK0HJwOYRtx8apdaLSgyJ5lQpGcbCRu40WR9mDkaM8m9n3u2o6GJmftCg3AN1QtsourmQB84x67LEbHzValMaokrbCol4XeWqlC+dCNLPixemQRBvcNfI3V9C6RqVGfjpoGlSTI+RkQqwm01PcxpeqIVfdMd1wnfUuAOywUO6UpvtK9TZaxg0NnVElXpPseQbtzulLwZ7R5Y3A4Ss8Z7w43c1KHxTkg54FWUOp065ItjAc4lmyORXq/2+F7sMvRN6dtCLaXTUlkYuU3cjFLIPlLGFYgqq4T4xQa+e5NEK1XW7nghv+IRfKfyVeZsB0WpY+uc=
13
- gem: wavefront-sdk
14
- on:
15
- tags: true
16
- repo: snltd/wavefront-sdk
17
- ruby: 2.6.6
18
- notifications:
19
- email: false
20
- slack:
21
- secure: cTG5e5NsnfZCNF6mUbnz8rdxmiPvrihJJN/7vEltO6rSCR4ew+9dfga9n7N5wCu7nae3lEysbRw7vPw605VVkZrfA4gn+HUsoHbKzaKNOB6AV9a8kkbjC4y6MH7EWSD2qsUWeeINP7dNs80cqvEwU2tgtIiBWNAP+e/eCjTEQCq4UIXnEB0f0UIP4bvl3w7/fSd0iFykBiVTiXvGBWKkqbetSAcAvsV5wxbPGqrhBp5AQQ9izm0Uh/P/hv8gaqMariFYA6rIpunWmwxPCHf3B87CTdl6T8uC5bi4bfgb3mFbQUiP9TTblz2XTI3Q9tRDbcFcr4BGpjB1Lyfdy1puRi3QzP5VME5AXvDTr9GVgi9TS6EWqy7P4HC//qZziWllTLlst6R9r/NlagTsiDB/mcnxkJBvOBYAvmzXS5ID6DfNxx/xCfCZuQzp5ISoWawGCvuGHBSOlzZZXKD4AAT8/69SIVybM23Hj/YBPKVvR9brpCmIlK4YXi14SA5sInjD4zn20u/p22vlEybjlnM8td7ryuhmCYm1ptk8y0tZ4oRoK2fBNo2VTD73aXq6P2q3AKuT6A9hRbypEJgawNgOAKJEWDHdu29LfeJIUnm25MzaFzx145it2hDU2/hOUlpFq9QKsmR2pAiI17sAMgHJ15cgaeOv1soWaYJsMOZil74=
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'socket'
4
- require_relative 'core'
5
-
6
- module Wavefront
7
- module Writer
8
- #
9
- # Everything specific to writing points to a Unix datagram
10
- # socket.
11
- #
12
- class Unix < Core
13
- # Make a connection to a Unix datagram socket, putting the
14
- # descriptor in instance variable @conn.
15
- # This requires the name of the socket file in creds[:socket]
16
- # @return [UnixSocket]
17
- #
18
- def open
19
- if opts[:noop]
20
- logger.log('No-op requested. Not opening socket connection.')
21
- return true
22
- end
23
-
24
- logger.log("Connecting to #{creds[:socket]}.", :debug)
25
- open_socket(creds[:socket])
26
- end
27
-
28
- def close
29
- return if opts[:noop]
30
-
31
- logger.log('Closing socket connection.', :debug)
32
- conn.close
33
- end
34
-
35
- def validate_credentials(creds)
36
- return true if creds.key?(:socket)
37
-
38
- raise(Wavefront::Exception::CredentialError,
39
- 'creds must contain socket file path')
40
- end
41
-
42
- private
43
-
44
- def open_socket(socket)
45
- @conn = UNIXSocket.new(socket)
46
- rescue StandardError => e
47
- logger.log(e, :error)
48
- raise Wavefront::Exception::InvalidEndpoint
49
- end
50
-
51
- # @param point [String] point or points in native Wavefront
52
- # format.
53
- #
54
- def _send_point(point)
55
- conn.write(point)
56
- end
57
- end
58
- end
59
- end