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

Sign up to get free protection for your applications and to get access to all the features.
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