wavefront-sdk 3.3.3 → 3.3.4

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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -17
  3. data/Gemfile +2 -0
  4. data/HISTORY.md +4 -0
  5. data/Rakefile +2 -0
  6. data/lib/wavefront-sdk/alert.rb +5 -2
  7. data/lib/wavefront-sdk/api_mixins/acl.rb +3 -0
  8. data/lib/wavefront-sdk/api_mixins/tag.rb +2 -0
  9. data/lib/wavefront-sdk/api_mixins/user.rb +4 -0
  10. data/lib/wavefront-sdk/apitoken.rb +2 -0
  11. data/lib/wavefront-sdk/cloudintegration.rb +4 -0
  12. data/lib/wavefront-sdk/core/api.rb +3 -0
  13. data/lib/wavefront-sdk/core/api_caller.rb +16 -10
  14. data/lib/wavefront-sdk/core/exception.rb +2 -0
  15. data/lib/wavefront-sdk/core/logger.rb +6 -3
  16. data/lib/wavefront-sdk/core/response.rb +6 -3
  17. data/lib/wavefront-sdk/credentials.rb +5 -2
  18. data/lib/wavefront-sdk/dashboard.rb +3 -0
  19. data/lib/wavefront-sdk/defs/constants.rb +3 -1
  20. data/lib/wavefront-sdk/defs/version.rb +3 -1
  21. data/lib/wavefront-sdk/derivedmetric.rb +3 -0
  22. data/lib/wavefront-sdk/distribution.rb +36 -16
  23. data/lib/wavefront-sdk/event.rb +16 -12
  24. data/lib/wavefront-sdk/externallink.rb +3 -0
  25. data/lib/wavefront-sdk/integration.rb +2 -0
  26. data/lib/wavefront-sdk/maintenancewindow.rb +4 -1
  27. data/lib/wavefront-sdk/message.rb +2 -0
  28. data/lib/wavefront-sdk/metric.rb +3 -0
  29. data/lib/wavefront-sdk/metric_helper.rb +6 -4
  30. data/lib/wavefront-sdk/notificant.rb +3 -0
  31. data/lib/wavefront-sdk/paginator/base.rb +5 -0
  32. data/lib/wavefront-sdk/paginator/delete.rb +2 -0
  33. data/lib/wavefront-sdk/paginator/get.rb +2 -0
  34. data/lib/wavefront-sdk/paginator/post.rb +2 -0
  35. data/lib/wavefront-sdk/paginator/put.rb +2 -0
  36. data/lib/wavefront-sdk/proxy.rb +2 -0
  37. data/lib/wavefront-sdk/query.rb +6 -3
  38. data/lib/wavefront-sdk/report.rb +2 -0
  39. data/lib/wavefront-sdk/savedsearch.rb +4 -0
  40. data/lib/wavefront-sdk/search.rb +4 -1
  41. data/lib/wavefront-sdk/settings.rb +2 -0
  42. data/lib/wavefront-sdk/source.rb +3 -0
  43. data/lib/wavefront-sdk/stdlib/array.rb +2 -0
  44. data/lib/wavefront-sdk/stdlib/hash.rb +5 -1
  45. data/lib/wavefront-sdk/stdlib/string.rb +2 -0
  46. data/lib/wavefront-sdk/support/mixins.rb +5 -1
  47. data/lib/wavefront-sdk/support/parse_time.rb +3 -0
  48. data/lib/wavefront-sdk/types/status.rb +4 -0
  49. data/lib/wavefront-sdk/user.rb +18 -8
  50. data/lib/wavefront-sdk/usergroup.rb +3 -0
  51. data/lib/wavefront-sdk/validators.rb +28 -0
  52. data/lib/wavefront-sdk/webhook.rb +3 -0
  53. data/lib/wavefront-sdk/write.rb +43 -28
  54. data/lib/wavefront-sdk/writers/api.rb +2 -0
  55. data/lib/wavefront-sdk/writers/core.rb +21 -4
  56. data/lib/wavefront-sdk/writers/http.rb +9 -2
  57. data/lib/wavefront-sdk/writers/socket.rb +11 -9
  58. data/lib/wavefront-sdk/writers/summary.rb +2 -0
  59. data/lib/wavefront-sdk/writers/unix.rb +10 -7
  60. data/lib/wavefront_sdk.rb +3 -1
  61. data/spec/.rubocop.yml +10 -14
  62. data/spec/constants.rb +10 -8
  63. data/spec/spec_helper.rb +2 -0
  64. data/spec/support/bad_mocket.rb +2 -0
  65. data/spec/support/hash.rb +2 -0
  66. data/spec/support/minitest_assertions.rb +2 -0
  67. data/spec/support/mocket.rb +2 -0
  68. data/spec/test_mixins/acl.rb +2 -0
  69. data/spec/test_mixins/general.rb +2 -0
  70. data/spec/test_mixins/tag.rb +2 -0
  71. data/spec/test_mixins/update_keys.rb +2 -0
  72. data/spec/wavefront-sdk/alert_spec.rb +10 -9
  73. data/spec/wavefront-sdk/api_mixins/user_mixins_spec.rb +1 -0
  74. data/spec/wavefront-sdk/apitoken_spec.rb +1 -0
  75. data/spec/wavefront-sdk/cloudintegration_spec.rb +2 -1
  76. data/spec/wavefront-sdk/core/api_caller_spec.rb +1 -0
  77. data/spec/wavefront-sdk/core/api_spec.rb +1 -0
  78. data/spec/wavefront-sdk/core/logger_spec.rb +1 -0
  79. data/spec/wavefront-sdk/core/response_spec.rb +4 -3
  80. data/spec/wavefront-sdk/credentials_spec.rb +1 -0
  81. data/spec/wavefront-sdk/dashboard_spec.rb +1 -0
  82. data/spec/wavefront-sdk/derivedmetric_spec.rb +1 -0
  83. data/spec/wavefront-sdk/distribution_spec.rb +6 -5
  84. data/spec/wavefront-sdk/event_spec.rb +8 -7
  85. data/spec/wavefront-sdk/externallink_spec.rb +5 -4
  86. data/spec/wavefront-sdk/integration_spec.rb +1 -0
  87. data/spec/wavefront-sdk/maintenancewindow_spec.rb +6 -5
  88. data/spec/wavefront-sdk/message_spec.rb +2 -1
  89. data/spec/wavefront-sdk/metric_helper_spec.rb +10 -9
  90. data/spec/wavefront-sdk/metric_spec.rb +1 -0
  91. data/spec/wavefront-sdk/notificant_spec.rb +1 -0
  92. data/spec/wavefront-sdk/paginator/base_spec.rb +1 -0
  93. data/spec/wavefront-sdk/paginator/post_spec.rb +1 -0
  94. data/spec/wavefront-sdk/proxy_spec.rb +1 -0
  95. data/spec/wavefront-sdk/query_spec.rb +1 -0
  96. data/spec/wavefront-sdk/report_spec.rb +1 -0
  97. data/spec/wavefront-sdk/resources/dummy_points.rb +10 -8
  98. data/spec/wavefront-sdk/savedsearch_spec.rb +1 -0
  99. data/spec/wavefront-sdk/search_spec.rb +5 -4
  100. data/spec/wavefront-sdk/settings_spec.rb +1 -0
  101. data/spec/wavefront-sdk/source_spec.rb +3 -2
  102. data/spec/wavefront-sdk/stdlib/array_spec.rb +1 -0
  103. data/spec/wavefront-sdk/stdlib/hash_spec.rb +1 -0
  104. data/spec/wavefront-sdk/stdlib/string_spec.rb +1 -0
  105. data/spec/wavefront-sdk/support/mixins_spec.rb +1 -0
  106. data/spec/wavefront-sdk/support/parse_time_spec.rb +1 -2
  107. data/spec/wavefront-sdk/user_spec.rb +1 -0
  108. data/spec/wavefront-sdk/usergroup_spec.rb +2 -1
  109. data/spec/wavefront-sdk/validators_spec.rb +1 -2
  110. data/spec/wavefront-sdk/webhook_spec.rb +7 -6
  111. data/spec/wavefront-sdk/write_spec.rb +50 -30
  112. data/spec/wavefront-sdk/writers/api_spec.rb +1 -0
  113. data/spec/wavefront-sdk/writers/core_spec.rb +1 -0
  114. data/spec/wavefront-sdk/writers/http_spec.rb +2 -1
  115. data/spec/wavefront-sdk/writers/socket_spec.rb +1 -0
  116. data/spec/wavefront-sdk/writers/summary_spec.rb +1 -0
  117. data/wavefront-sdk.gemspec +4 -2
  118. metadata +6 -6
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'core/api'
2
4
  require_relative 'api_mixins/user'
3
5
 
@@ -32,6 +34,7 @@ module Wavefront
32
34
  #
33
35
  def create(body)
34
36
  raise ArgumentError unless body.is_a?(Hash)
37
+
35
38
  api.post('', body, 'application/json')
36
39
  end
37
40
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'defs/constants'
2
4
  require_relative 'core/exception'
3
5
 
@@ -63,6 +65,7 @@ module Wavefront
63
65
  #
64
66
  def wf_name?(name)
65
67
  return true if name.is_a?(String) && name.size < 1024 && name =~ /^\w+$/
68
+
66
69
  raise Wavefront::Exception::InvalidName
67
70
  end
68
71
 
@@ -93,6 +96,7 @@ module Wavefront
93
96
  #
94
97
  def wf_ts?(timestamp)
95
98
  return true if timestamp.is_a?(Time) || timestamp.is_a?(Date)
99
+
96
100
  raise Wavefront::Exception::InvalidTimestamp
97
101
  end
98
102
 
@@ -107,6 +111,7 @@ module Wavefront
107
111
  #
108
112
  def wf_ms_ts?(timestamp)
109
113
  return true if timestamp.is_a?(Numeric)
114
+
110
115
  raise Wavefront::Exception::InvalidTimestamp
111
116
  end
112
117
 
@@ -119,6 +124,7 @@ module Wavefront
119
124
  #
120
125
  def wf_epoch?(timestamp)
121
126
  return true if timestamp.is_a?(Numeric)
127
+
122
128
  raise Wavefront::Exception::InvalidTimestamp
123
129
  end
124
130
 
@@ -150,6 +156,7 @@ module Wavefront
150
156
  #
151
157
  def wf_value?(value)
152
158
  return true if value.is_a?(Numeric)
159
+
153
160
  raise Wavefront::Exception::InvalidMetricValue
154
161
  end
155
162
 
@@ -163,6 +170,7 @@ module Wavefront
163
170
  def wf_version?(version)
164
171
  version = version.to_i if version.is_a?(String) && version =~ /^\d+$/
165
172
  return true if version.is_a?(Integer) && version.positive?
173
+
166
174
  raise Wavefront::Exception::InvalidVersion
167
175
  end
168
176
 
@@ -176,6 +184,7 @@ module Wavefront
176
184
  #
177
185
  def wf_point_tags?(tags)
178
186
  raise Wavefront::Exception::InvalidTag unless tags.is_a?(Hash)
187
+
179
188
  tags.each { |k, v| wf_point_tag?(k, v) }
180
189
  end
181
190
 
@@ -203,6 +212,7 @@ module Wavefront
203
212
  #
204
213
  def wf_proxy_id?(id)
205
214
  return true if uuid?(id)
215
+
206
216
  raise Wavefront::Exception::InvalidProxyId
207
217
  end
208
218
 
@@ -218,6 +228,7 @@ module Wavefront
218
228
  def wf_alert_id?(id)
219
229
  id = id.to_s if id.is_a?(Numeric)
220
230
  return true if id.is_a?(String) && id.match(/^\d{13}$/)
231
+
221
232
  raise Wavefront::Exception::InvalidAlertId
222
233
  end
223
234
 
@@ -231,6 +242,7 @@ module Wavefront
231
242
  #
232
243
  def wf_cloudintegration_id?(id)
233
244
  return true if uuid?(id)
245
+
234
246
  raise Wavefront::Exception::InvalidCloudIntegrationId
235
247
  end
236
248
 
@@ -245,6 +257,7 @@ module Wavefront
245
257
  #
246
258
  def wf_dashboard_id?(id)
247
259
  return true if id.is_a?(String) && id.size < 256 && id.match(/^[\w\-]+$/)
260
+
248
261
  raise Wavefront::Exception::InvalidDashboardId
249
262
  end
250
263
 
@@ -274,6 +287,7 @@ module Wavefront
274
287
  #
275
288
  def wf_event_id?(id)
276
289
  return true if id.is_a?(String) && id =~ /^\d{13}:.+/
290
+
277
291
  raise Wavefront::Exception::InvalidEventId
278
292
  end
279
293
 
@@ -286,6 +300,7 @@ module Wavefront
286
300
  #
287
301
  def wf_link_id?(id)
288
302
  return true if id.is_a?(String) && id =~ /^\w{16}$/
303
+
289
304
  raise Wavefront::Exception::InvalidExternalLinkId
290
305
  end
291
306
 
@@ -312,6 +327,7 @@ module Wavefront
312
327
  #
313
328
  def wf_alert_severity?(severity)
314
329
  return true if %w[INFO SMOKE WARN SEVERE].include?(severity)
330
+
315
331
  raise Wavefront::Exception::InvalidAlertSeverity
316
332
  end
317
333
 
@@ -323,6 +339,7 @@ module Wavefront
323
339
  #
324
340
  def wf_message_id?(id)
325
341
  return true if id.is_a?(String) && id =~ /^\w+::\w+$/
342
+
326
343
  raise Wavefront::Exception::InvalidMessageId
327
344
  end
328
345
 
@@ -335,6 +352,7 @@ module Wavefront
335
352
  #
336
353
  def wf_granularity?(granularity)
337
354
  return true if %w[d h m s].include?(granularity.to_s)
355
+
338
356
  raise Wavefront::Exception::InvalidGranularity
339
357
  end
340
358
 
@@ -346,6 +364,7 @@ module Wavefront
346
364
  #
347
365
  def wf_savedsearch_id?(id)
348
366
  return true if id.is_a?(String) && id =~ /^\w{8}$/
367
+
349
368
  raise Wavefront::Exception::InvalidSavedSearchId
350
369
  end
351
370
 
@@ -360,6 +379,7 @@ module Wavefront
360
379
  return true if %w[DASHBOARD ALERT MAINTENANCE_WINDOW
361
380
  NOTIFICANT EVENT SOURCE EXTERNAL_LINK AGENT
362
381
  CLOUD_INTEGRATION].include?(id)
382
+
363
383
  raise Wavefront::Exception::InvalidSavedSearchEntity
364
384
  end
365
385
 
@@ -387,6 +407,7 @@ module Wavefront
387
407
  #
388
408
  def wf_user_id?(user)
389
409
  return true if user.is_a?(String) && user.length < 256 && !user.empty?
410
+
390
411
  raise Wavefront::Exception::InvalidUserId
391
412
  end
392
413
 
@@ -398,6 +419,7 @@ module Wavefront
398
419
  #
399
420
  def wf_usergroup_id?(gid)
400
421
  return true if uuid?(gid)
422
+
401
423
  raise Wavefront::Exception::InvalidUserGroupId
402
424
  end
403
425
 
@@ -409,6 +431,7 @@ module Wavefront
409
431
  #
410
432
  def wf_webhook_id?(id)
411
433
  return true if id.is_a?(String) && id =~ /^[a-zA-Z0-9]{16}$/
434
+
412
435
  raise Wavefront::Exception::InvalidWebhookId
413
436
  end
414
437
 
@@ -467,6 +490,7 @@ module Wavefront
467
490
  #
468
491
  def wf_notificant_id?(id)
469
492
  return true if id.is_a?(String) && id =~ /^\w{16}$/
493
+
470
494
  raise Wavefront::Exception::InvalidNotificantId
471
495
  end
472
496
 
@@ -480,6 +504,7 @@ module Wavefront
480
504
  #
481
505
  def wf_integration_id?(id)
482
506
  return true if id.is_a?(String) && id =~ /^[a-z0-9]+$/
507
+
483
508
  raise Wavefront::Exception::InvalidIntegrationId
484
509
  end
485
510
 
@@ -490,6 +515,7 @@ module Wavefront
490
515
  #
491
516
  def wf_distribution_interval?(interval)
492
517
  return true if %i[m h d].include?(interval)
518
+
493
519
  raise Wavefront::Exception::InvalidDistributionInterval
494
520
  end
495
521
 
@@ -500,6 +526,7 @@ module Wavefront
500
526
  #
501
527
  def wf_distribution_count?(count)
502
528
  return true if count.is_a?(Integer) && count.positive?
529
+
503
530
  raise Wavefront::Exception::InvalidDistributionCount
504
531
  end
505
532
 
@@ -510,6 +537,7 @@ module Wavefront
510
537
  #
511
538
  def wf_apitoken_id?(id)
512
539
  return true if uuid?(id)
540
+
513
541
  raise Wavefront::Exception::InvalidApiTokenId
514
542
  end
515
543
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'core/api'
2
4
 
3
5
  module Wavefront
@@ -29,6 +31,7 @@ module Wavefront
29
31
  #
30
32
  def create(body)
31
33
  raise ArgumentError unless body.is_a?(Hash)
34
+
32
35
  api.post('', body, 'application/json')
33
36
  end
34
37
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'socket'
2
4
  require_relative 'core/exception'
3
5
  require_relative 'core/logger'
@@ -56,15 +58,16 @@ module Wavefront
56
58
  @writer = setup_writer
57
59
  end
58
60
 
61
+ # Chunk size gets overriden
62
+ #
59
63
  def defaults
60
- { tags: nil,
61
- writer: :socket,
62
- noop: false,
63
- novalidate: false,
64
- noauto: false,
65
- verbose: false,
66
- debug: false,
67
- chunk_size: 1000,
64
+ { tags: nil,
65
+ writer: :socket,
66
+ noop: false,
67
+ novalidate: false,
68
+ noauto: false,
69
+ verbose: false,
70
+ debug: false,
68
71
  chunk_pause: 0 }
69
72
  end
70
73
 
@@ -94,7 +97,7 @@ module Wavefront
94
97
  # through
95
98
  #
96
99
  def write(points = [], openclose = manage_conn, prefix = nil)
97
- resps = [points].flatten.each_slice(opts[:chunk_size]).map do |chunk|
100
+ resps = [points].flatten.each_slice(chunk_size).map do |chunk|
98
101
  resp = writer.write(chunk, openclose, prefix)
99
102
  sleep(opts[:chunk_pause])
100
103
  resp
@@ -105,6 +108,8 @@ module Wavefront
105
108
 
106
109
  # Compound the responses of all chunked writes into one. It will
107
110
  # be 'ok' only if *everything* passed.
111
+ # @param responses [Array[Wavefront::Response]]
112
+ # @return Wavefront::Response
108
113
  #
109
114
  def composite_response(responses)
110
115
  result = responses.all?(&:ok?) ? 'OK' : 'ERROR'
@@ -115,7 +120,7 @@ module Wavefront
115
120
  end
116
121
 
117
122
  Wavefront::Response.new(
118
- { status: { result: result, message: nil, code: nil },
123
+ { status: { result: result, message: nil, code: nil },
119
124
  response: summary.to_h }.to_json, nil
120
125
  )
121
126
  end
@@ -189,6 +194,10 @@ module Wavefront
189
194
  :wf_point?
190
195
  end
191
196
 
197
+ def chunk_size
198
+ opts[:chunk_size] || writer.chunk_size
199
+ end
200
+
192
201
  # Convert a validated point to a string conforming to
193
202
  # https://community.wavefront.com/docs/DOC-1031. No validation
194
203
  # is done here.
@@ -197,24 +206,30 @@ module Wavefront
197
206
  # the format.
198
207
  #
199
208
  def hash_to_wf(point)
200
- format('%s %s %s source=%s %s %s',
201
- *point_array(point)).squeeze(' ').strip
202
- rescue StandardError
203
- raise Wavefront::Exception::InvalidPoint
209
+ raise Wavefront::Exception::InvalidMetricName unless point[:path]
210
+ raise Wavefront::Exception::InvalidMetricValue unless point[:value]
211
+
212
+ format('%<path>s %<value>s %<ts>s source=%<source>s %<tags>s %<opttags>s',
213
+ point_hash(point)).squeeze(' ').strip
204
214
  end
205
215
 
206
- # Make an array which can be used by #hash_to_wf.
207
- # @param point [Hash] a hash describing a point. See #write() for
208
- # the format.
209
- # @raise
210
- #
211
- def point_array(point)
212
- [point[:path] || raise,
213
- point[:value] || raise,
214
- point.fetch(:ts, nil),
215
- point.fetch(:source, HOSTNAME),
216
- point[:tags]&.to_wf_tag,
217
- opts[:tags]&.to_wf_tag]
216
+ def point_hash(point)
217
+ point.dup.tap do |p|
218
+ p[:ts] ||= nil
219
+ p[:source] ||= HOSTNAME
220
+ p[:tags] = tags_or_nothing(p.fetch(:tags, nil))
221
+ p[:opttags] = tags_or_nothing(opts.fetch(:tags, nil))
222
+ end
223
+ end
224
+
225
+ def tags_or_nothing(tags)
226
+ return nil unless tags
227
+
228
+ tags.to_wf_tag
229
+ end
230
+
231
+ def data_format
232
+ :wavefront
218
233
  end
219
234
 
220
235
  private
@@ -226,8 +241,8 @@ module Wavefront
226
241
  def setup_writer
227
242
  writer = opts[:writer].to_s
228
243
  require_relative File.join('writers', writer)
229
- Object.const_get(format('Wavefront::Writer::%s',
230
- writer.capitalize)).new(self)
244
+ Object.const_get(format('Wavefront::Writer::%<writer_class>s',
245
+ writer_class: writer.capitalize)).new(self)
231
246
  rescue LoadError
232
247
  raise(Wavefront::Exception::UnsupportedWriter, writer)
233
248
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'core'
2
4
  require_relative '../core/api_caller'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require_relative 'summary'
3
5
  require_relative '../core/response'
@@ -68,7 +70,7 @@ module Wavefront
68
70
 
69
71
  def respond
70
72
  Wavefront::Response.new(
71
- { status: { result: summary.result, message: nil, code: nil },
73
+ { status: { result: summary.result, message: nil, code: nil },
72
74
  response: summary.to_h }.to_json, nil, opts
73
75
  )
74
76
  end
@@ -130,13 +132,28 @@ module Wavefront
130
132
  Wavefront::Exception::InvalidTimestamp,
131
133
  Wavefront::Exception::InvalidSourceId,
132
134
  Wavefront::Exception::InvalidTag => e
133
- logger.log('Invalid point, skipping.', :info)
134
- logger.log(e.class, :info)
135
- logger.log(format('Invalid point: %s (%s)', point, e.to_s), :debug)
135
+ log_invalid_point(point, e)
136
136
  summary.rejected += 1
137
137
  false
138
138
  end
139
139
 
140
+ def log_invalid_point(rawpoint, exception)
141
+ logger.log('Invalid point, skipping.', :info)
142
+ logger.log(exception.class, :info)
143
+ logger.log(format('Invalid point: %<rawpoint>s (%<message>s)',
144
+ rawpoint: rawpoint,
145
+ message: exception.to_s), :debug)
146
+ end
147
+
148
+ # We divide metrics up into manageable chunks and send them in
149
+ # batches. This dictates how large those bundles are. You can
150
+ # override the value with the chunk_size option
151
+ # @return [Integer]
152
+ #
153
+ def chunk_size
154
+ 1000
155
+ end
156
+
140
157
  private
141
158
 
142
159
  def write_loop(points)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'core'
2
4
  require_relative '../core/api_caller'
3
5
 
@@ -11,8 +13,9 @@ module Wavefront
11
13
  #
12
14
  class Http < Core
13
15
  def open
14
- creds[:endpoint] = format('%s:%s', creds[:proxy],
15
- creds[:port] || default_port)
16
+ creds[:endpoint] = format('%<proxy>s:%<port>s',
17
+ proxy: creds[:proxy],
18
+ port: creds[:port] || default_port)
16
19
  opts[:scheme] = 'http'
17
20
  @conn = Wavefront::ApiCaller.new(self, creds, opts)
18
21
  end
@@ -32,6 +35,10 @@ module Wavefront
32
35
  'credentials must contain proxy')
33
36
  end
34
37
 
38
+ def chunk_size
39
+ 100
40
+ end
41
+
35
42
  private
36
43
 
37
44
  def _send_point(point)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'core'
2
4
 
3
5
  module Wavefront
@@ -12,7 +14,6 @@ module Wavefront
12
14
  # in instance variable @conn.
13
15
  # @return [TCPSocket]
14
16
  #
15
- # rubocop:disable Metrics/AbcSize
16
17
  def open
17
18
  if opts[:noop]
18
19
  logger.log('No-op requested. Not opening connection to proxy.')
@@ -21,15 +22,8 @@ module Wavefront
21
22
 
22
23
  port = creds[:port] || default_port
23
24
  logger.log("Connecting to #{creds[:proxy]}:#{port}.", :debug)
24
-
25
- begin
26
- @conn = TCPSocket.new(creds[:proxy], port)
27
- rescue StandardError => e
28
- logger.log(e, :error)
29
- raise Wavefront::Exception::InvalidEndpoint
30
- end
25
+ open_socket(creds[:proxy], port)
31
26
  end
32
- # rubocop:enable Metrics/AbcSize
33
27
 
34
28
  # Close the connection described by the @conn instance variable.
35
29
  #
@@ -49,11 +43,19 @@ module Wavefront
49
43
 
50
44
  private
51
45
 
46
+ def open_socket(proxy, port)
47
+ @conn = TCPSocket.new(proxy, port)
48
+ rescue StandardError => e
49
+ logger.log(e, :error)
50
+ raise Wavefront::Exception::InvalidEndpoint
51
+ end
52
+
52
53
  # @param point [String] point or points in native Wavefront format.
53
54
  # @raise [SocketError] if point cannot be written
54
55
  #
55
56
  def _send_point(point)
56
57
  return if opts[:noop]
58
+
57
59
  conn.puts(point)
58
60
  rescue StandardError
59
61
  raise Wavefront::Exception::SocketError