influxdb-client 1.5.0.pre.902 → 1.6.0.pre.991

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fb881dfbea813cd8a4c63dbf778de162fc4f1ba37be58a0555f64794a9fa25e
4
- data.tar.gz: 3266cfa6a527ef97310db6b31aa8777341d76280a481cc15f44dac5fdd1fba5a
3
+ metadata.gz: 0156a96fd72e6c6399a477be62f2dede9f0e304877ccf8ccf000f0cc4036e30d
4
+ data.tar.gz: a1e090188d81d22b7005805a6600c939c0da47d84952faf2b8ae74fbe18794e8
5
5
  SHA512:
6
- metadata.gz: 9ddf825b908fa9806cb1edf1215d185478ad38369e36e513f21c3a0cb97ffafdb48a7f779faced596aab77c7ea469626b6c3d3544847dfae7a992744ac8215b4
7
- data.tar.gz: 48d55a91cbf597ee0b8a3afa12019ab157c0f24c3a237b7c245bbd1246f459a66b691b5fdec9d6584f2158214d24cbf53433def87b61e68f11b918523d4d2b9b
6
+ metadata.gz: cc8a078ca5f9130aaafa9ed1654a0ac1923d02cde7bdaa797d96968ced146698834bb3633769f4dd603b05fc4171dc98d98cc492ca6da8fc48787c4445bb20da
7
+ data.tar.gz: b42eee4713e33c84ee40fe9c608adfa226925cb2748038c6ce1f4f207a9d69ae6bed4bdd312c19c03bddd5e4ba83c01880022a1f2aac1e011662b2bd012c7619
@@ -1,4 +1,10 @@
1
- ## 1.5.0 [unreleased]
1
+ ## 1.6.0 [unreleased]
2
+
3
+ ### Bug Fixes
4
+ 1. [#42](https://github.com/influxdata/influxdb-client-ruby/pull/42): Fixed serialization of `\n`, `\r` and `\t` to Line Protocol, `=` is valid sign for measurement name
5
+ 1. [#44](https://github.com/influxdata/influxdb-client-ruby/pull/44): Fixed supporting of Ruby 2.2
6
+
7
+ ## 1.5.0 [2020-06-19]
2
8
 
3
9
  ### API
4
10
  1. [#41](https://github.com/influxdata/influxdb-client-ruby/pull/41): Updated swagger to latest version
data/README.md CHANGED
@@ -23,7 +23,7 @@ The client can be installed manually or with bundler.
23
23
  To install the client gem manually:
24
24
 
25
25
  ```
26
- gem install influxdb-client -v 1.4.0
26
+ gem install influxdb-client -v 1.5.0
27
27
  ```
28
28
 
29
29
  ## Usage
@@ -122,7 +122,7 @@ The writes are processed in batches which are configurable by `WriteOptions`:
122
122
  | Property | Description | Default Value |
123
123
  | --- | --- | --- |
124
124
  | batchSize | the number of data point to collect in batch | 1000 |
125
- | flushInterval | the number of milliseconds before the batch is written | 1000 |
125
+ | flush_interval | the number of milliseconds before the batch is written | 1000 |
126
126
  | retry_interval | the number of milliseconds to retry unsuccessful write. The retry interval is used when the InfluxDB server does not specify "Retry-After" header. | 1000 |
127
127
  | jitter_interval | the number of milliseconds to increase the batch flush interval by a random amount | 0 |
128
128
 
@@ -21,6 +21,8 @@
21
21
  module InfluxDB2
22
22
  DEFAULT_WRITE_PRECISION = WritePrecision::NANOSECOND
23
23
  ESCAPE_KEY_LIST = ['\\'.freeze, ','.freeze, ' '.freeze, '='.freeze].freeze
24
+ ESCAPE_MEASUREMENT_LIST = ['\\'.freeze, ','.freeze, ' '.freeze].freeze
25
+ REPLACE_KEY_LIST = { "\n".freeze => '\n'.freeze, "\r".freeze => '\r'.freeze, "\t".freeze => '\t'.freeze }.freeze
24
26
  ESCAPE_VALUE_LIST = ['\\'.freeze, '"'.freeze].freeze
25
27
 
26
28
  # Point defines the values that will be written to the database.
@@ -113,7 +115,7 @@ module InfluxDB2
113
115
  # @return a string representation of the point
114
116
  def to_line_protocol
115
117
  line_protocol = ''
116
- measurement = _escape_key(@name || '')
118
+ measurement = _escape_key(@name || '', ESCAPE_MEASUREMENT_LIST)
117
119
 
118
120
  line_protocol << measurement
119
121
 
@@ -161,11 +163,14 @@ module InfluxDB2
161
163
  end.reject(&:nil?).join(','.freeze)
162
164
  end
163
165
 
164
- def _escape_key(value)
166
+ def _escape_key(value, escape_list = ESCAPE_KEY_LIST)
165
167
  result = value.dup
166
- ESCAPE_KEY_LIST.each do |ch|
168
+ escape_list.each do |ch|
167
169
  result = result.gsub(ch) { "\\#{ch}" }
168
170
  end
171
+ REPLACE_KEY_LIST.keys.each do |ch|
172
+ result = result.gsub(ch) { REPLACE_KEY_LIST[ch] }
173
+ end
169
174
  result
170
175
  end
171
176
 
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module InfluxDB2
22
- VERSION = '1.5.0'.freeze
22
+ VERSION = '1.6.0'.freeze
23
23
  end
@@ -99,7 +99,7 @@ module InfluxDB2
99
99
  end
100
100
 
101
101
  def _write_raw(key, points)
102
- if @write_options.jitter_interval.positive?
102
+ if @write_options.jitter_interval > 0
103
103
  jitter_delay = (@write_options.jitter_interval.to_f / 1_000) * rand
104
104
  sleep jitter_delay
105
105
  end
@@ -218,4 +218,25 @@ class PointTest < MiniTest::Test
218
218
 
219
219
  assert_equal 'h2o level=2i 123', point.to_line_protocol
220
220
  end
221
+
222
+ def test_tag_escaping
223
+ point = InfluxDB2::Point.new(name: "h\n2\ro\t_data")
224
+ .add_tag("new\nline", "new\nline")
225
+ .add_tag("carriage\rreturn", "carriage\nreturn")
226
+ .add_tag("t\tab", "t\tab")
227
+ .add_field('level', 2)
228
+
229
+ puts point.to_line_protocol
230
+
231
+ assert_equal 'h\\n2\\ro\\t_data,carriage\\rreturn=carriage\\nreturn,new\\nline=new\\nline,t\\tab=t\\tab level=2i',
232
+ point.to_line_protocol
233
+ end
234
+
235
+ def test_equal_sign_escaping
236
+ point = InfluxDB2::Point.new(name: 'h=2o')
237
+ .add_tag('l=ocation', 'e=urope')
238
+ .add_field('l=evel', 2)
239
+
240
+ assert_equal 'h=2o,l\\=ocation=e\\=urope l\\=evel=2i', point.to_line_protocol
241
+ end
221
242
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: influxdb-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0.pre.902
4
+ version: 1.6.0.pre.991
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Bednar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2020-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler