influxdb 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c027fe626b731c0fe89678ae44f7f87a24db7c68
4
+ data.tar.gz: 929dc5eda07eabfba284891ede0a293a6b0fc49a
5
+ SHA512:
6
+ metadata.gz: 64db490708b15350c4e2ab2cc76b5f934db510a86eec7be024f9a6c652e26d09fa2570b729ab6987887382769b5b9a1f5bbfdb0a3c8fc96775ce2db7b0a563fb
7
+ data.tar.gz: b4fc2890772ec74612dac94633e5607904b4aadeef0a3760d698b24cbf16d4a23e6c004edece2b15d8926fa21e028f7479a26d168a03ab59ae4cbaedccc782f5
@@ -2,6 +2,7 @@ sudo: required
2
2
  dist: trusty
3
3
  language: ruby
4
4
  before_install:
5
+ - gem install bundler
5
6
  - gem update bundler
6
7
  rvm:
7
8
  - 1.9.3
@@ -21,12 +22,13 @@ matrix:
21
22
  - rvm: 2.3.1
22
23
  env: TEST_TASK=rubocop
23
24
  - rvm: jruby-9.0.5.0
24
- env: JRUBY_OPTS='-J-Xmx256M'
25
+ env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -J-Xmx256M'
25
26
  - rvm: jruby-head
26
- env: JRUBY_OPTS='-J-Xmx256M'
27
+ env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -J-Xmx256M'
27
28
  fail_fast: true
28
29
  addons:
29
30
  apt:
30
31
  packages:
32
+ - haveged
31
33
  - libgmp-dev
32
34
  script: bundle exec rake $TEST_TASK
@@ -6,6 +6,11 @@ For the full commit log, [see here](https://github.com/influxdata/influxdb-ruby/
6
6
 
7
7
  - None.
8
8
 
9
+ ## v0.3.6, released 2016-07-24
10
+
11
+ - Added feature for JSON streaming response, via `"chunk_size"` parameter
12
+ (#155, @mhodson-qxbranch)
13
+
9
14
  ## v0.3.5, released 2016-06-09
10
15
 
11
16
  - Reintroduced full dependency on "cause" (for Ruby 1.9 compat).
data/Gemfile CHANGED
@@ -1,5 +1,9 @@
1
1
  source "https://rubygems.org"
2
2
 
3
+ if RUBY_ENGINE != "jruby" && RUBY_VERSION < "2.0"
4
+ gem "json", "~> 1.8.3"
5
+ end
6
+
3
7
  gemspec
4
8
 
5
9
  local_gemfile = 'Gemfile.local'
data/README.md CHANGED
@@ -18,6 +18,9 @@ Maintained by [@toddboom](https://github.com/toddboom) and [@dmke](https://githu
18
18
 
19
19
  This gem should work with Ruby 1.9+, but starting with v0.4, we'll likely drop Ruby 1.9 support.
20
20
 
21
+ Please note that for Ruby 1.9, you'll need to install the JSON gem in version 1.8.x yourself,
22
+ for example by pinning the version in your `Gemfile` (i.e. `gem "json", "~> 1.8.3"`).
23
+
21
24
  ## Install
22
25
 
23
26
  ```
@@ -424,7 +427,7 @@ influxdb.write_point(name, data)
424
427
 
425
428
  ### Reading data
426
429
 
427
- Querying:
430
+ ### Querying
428
431
 
429
432
  ``` ruby
430
433
  username = 'foo'
@@ -468,6 +471,8 @@ influxdb.query 'select * from time_series', epoch: 'ms'
468
471
  # [{"name"=>"time_series", "tags"=>{"region"=>"uk"}, "values"=>[{"time"=>1438411376000, "count"=>32, "value"=>0.9673}]}]
469
472
  ```
470
473
 
474
+ #### (De-) Normalization
475
+
471
476
  By default, InfluxDB::Client will denormalize points (received from InfluxDB as columns and rows), if you want to get _raw_ data add `denormalize: false` to initialization options or to query itself:
472
477
 
473
478
  ``` ruby
@@ -487,6 +492,22 @@ end
487
492
  # time_series_1 [ {"region"=>"us"} ] => {"columns"=>["time", "count", "value"], "values"=>[["2015-07-09T09:02:54Z", 55, 0.4343]]}
488
493
  ```
489
494
 
495
+ #### Streaming response
496
+
497
+ If you expect large quantities of data in a response, you may want to enable JSON streaming by setting a `chunk_size`:
498
+
499
+ ``` ruby
500
+ influxdb = InfluxDB::Client.new database,
501
+ username: username,
502
+ password: password,
503
+ chunk_size: 10000
504
+ ```
505
+
506
+ See the [official documentation](http://docs.influxdata.com/influxdb/v0.13/guides/querying_data/#chunking) for more details.
507
+
508
+
509
+ #### Retry
510
+
490
511
  By default, InfluxDB::Client will keep trying to connect to the database when it gets connection denied,
491
512
  if you want to retry a finite number of times (or disable retries altogether), you should pass the `:retry`
492
513
  value.
@@ -4,6 +4,7 @@ require 'net/http'
4
4
  require 'net/https'
5
5
 
6
6
  module InfluxDB
7
+ # rubocop:disable Metrics/ModuleLength
7
8
  # rubocop:disable Metrics/MethodLength
8
9
  # rubocop:disable Metrics/AbcSize
9
10
  module HTTP # :nodoc:
@@ -85,7 +86,14 @@ module InfluxDB
85
86
  end
86
87
 
87
88
  def handle_successful_response(response, options)
88
- parsed_response = JSON.parse(response.body) if response.body
89
+ if options.fetch(:json_streaming, false)
90
+ parsed_response = response.body.each_line.with_object({}) do |line, parsed|
91
+ parsed.merge!(JSON.parse(line)) { |_key, oldval, newval| oldval + newval }
92
+ end
93
+ elsif response.body
94
+ parsed_response = JSON.parse(response.body)
95
+ end
96
+
89
97
  errors = errors_from_response(parsed_response)
90
98
 
91
99
  raise InfluxDB::QueryError, errors if errors
@@ -20,6 +20,7 @@ module InfluxDB
20
20
  :read_timeout,
21
21
  :retry,
22
22
  :prefix,
23
+ :chunk_size,
23
24
  :denormalize,
24
25
  :epoch
25
26
 
@@ -30,6 +31,7 @@ module InfluxDB
30
31
  extract_ssl_options!(opts)
31
32
  extract_database_options!(opts)
32
33
  extract_writer_options!(opts)
34
+ extract_query_options!(opts)
33
35
 
34
36
  configure_retry! opts.fetch(:retry, nil)
35
37
  configure_hosts! opts[:hosts] || opts[:host] || "localhost".freeze
@@ -110,5 +112,9 @@ module InfluxDB
110
112
  @async = opts.fetch :async, false
111
113
  @udp = opts.fetch :udp, false
112
114
  end
115
+
116
+ def extract_query_options!(opts)
117
+ @chunk_size = opts.fetch :chunk_size, nil
118
+ end
113
119
  end
114
120
  end
@@ -14,9 +14,11 @@ module InfluxDB
14
14
  # rubocop:disable Metrics/MethodLength
15
15
  def query(query, opts = {})
16
16
  denormalize = opts.fetch(:denormalize, config.denormalize)
17
+ json_streaming = !opts.fetch(:chunk_size, config.chunk_size).nil?
18
+
17
19
  params = query_params(query, opts)
18
20
  url = full_url("/query".freeze, params)
19
- series = fetch_series(get(url, parse: true))
21
+ series = fetch_series(get(url, parse: true, json_streaming: json_streaming))
20
22
 
21
23
  if block_given?
22
24
  series.each do |s|
@@ -67,9 +69,16 @@ module InfluxDB
67
69
  def query_params(query, opts)
68
70
  precision = opts.fetch(:precision, config.time_precision)
69
71
  epoch = opts.fetch(:epoch, config.epoch)
72
+ chunk_size = opts.fetch(:chunk_size, config.chunk_size)
70
73
 
71
74
  params = { q: query, db: config.database, precision: precision }
72
75
  params[:epoch] = epoch if epoch
76
+
77
+ if chunk_size
78
+ params[:chunked] = 'true'
79
+ params[:chunk_size] = chunk_size
80
+ end
81
+
73
82
  params
74
83
  end
75
84
 
@@ -1,3 +1,3 @@
1
1
  module InfluxDB # :nodoc:
2
- VERSION = "0.3.5".freeze
2
+ VERSION = "0.3.6".freeze
3
3
  end
@@ -0,0 +1,89 @@
1
+ # This test spec addresses closed issue https://github.com/influxdata/influxdb/issues/7000 where
2
+ # it was confirmed that when chunking is enabled, the InfluxDB REST API returns multi-line JSON.
3
+
4
+ require "spec_helper"
5
+ require "json"
6
+
7
+ describe InfluxDB::Client do
8
+ let(:subject) do
9
+ described_class.new "database", {
10
+ host: "influxdb.test",
11
+ port: 9999,
12
+ username: "username",
13
+ password: "password",
14
+ time_precision: "s"
15
+ }.merge(args)
16
+ end
17
+
18
+ let(:args) { {} }
19
+ let(:database) { subject.config.database }
20
+ let(:extra_params) { {} }
21
+ let(:response) { "" }
22
+
23
+ before do
24
+ stub_request(:get, "http://influxdb.test:9999/query")
25
+ .with(query: { q: query, u: "username", p: "password", precision: 's', db: database }.merge(extra_params))
26
+ .to_return(body: response)
27
+ end
28
+
29
+ describe "#query" do
30
+ context "with series with different tags (multi-line)" do
31
+ let(:args) { { chunk_size: 100 } }
32
+ let(:extra_params) { { chunked: "true", chunk_size: "100" } }
33
+
34
+ let(:response_line_1) do
35
+ { "results" => [{ "series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] }] }] }
36
+ end
37
+ let(:response_line_2) do
38
+ { "results" => [{ "series" => [{ "name" => "cpu", "tags" => { "region" => "us" }, "columns" => %w(time temp value), "values" => [["2015-07-07T14:58:37Z", 92, 0.3445], ["2015-07-07T14:59:09Z", 68, 0.8787]] }] }] }
39
+ end
40
+ let(:response) do
41
+ JSON.generate(response_line_1) + "\n" + JSON.generate(response_line_2)
42
+ end
43
+ let(:expected_result) do
44
+ [{ "name" => "cpu", "tags" => { "region" => "pl" },
45
+ "values" => [{ "time" => "2015-07-07T15:13:04Z", "temp" => 34, "value" => 0.343443 }] },
46
+ { "name" => "cpu", "tags" => { "region" => "us" },
47
+ "values" => [{ "time" => "2015-07-07T14:58:37Z", "temp" => 92, "value" => 0.3445 },
48
+ { "time" => "2015-07-07T14:59:09Z", "temp" => 68, "value" => 0.8787 }] }]
49
+ end
50
+ let(:query) { 'SELECT * FROM cpu' }
51
+
52
+ it "should return array with 2 elements grouped by tags" do
53
+ expect(subject.query(query)).to eq(expected_result)
54
+ end
55
+ end
56
+
57
+ context "with multiple series with different tags" do
58
+ let(:args) { { chunk_size: 100 } }
59
+ let(:extra_params) { { chunked: "true", chunk_size: "100" } }
60
+
61
+ let(:response_line_1) do
62
+ { "results" => [{ "series" => [{ "name" => "access_times.service_1", "tags" => { "code" => "200", "result" => "failure", "status" => "OK" }, "columns" => %w(time value), "values" => [["2015-07-08T07:15:22Z", 327]] }] }] }
63
+ end
64
+ let(:response_line_2) do
65
+ { "results" => [{ "series" => [{ "name" => "access_times.service_1", "tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" }, "columns" => %w(time value), "values" => [["2015-07-08T06:15:22Z", 873]] }] }] }
66
+ end
67
+ let(:response_line_3) do
68
+ { "results" => [{ "series" => [{ "name" => "access_times.service_2", "tags" => { "code" => "200", "result" => "failure", "status" => "OK" }, "columns" => %w(time value), "values" => [["2015-07-08T07:15:22Z", 943]] }] }] }
69
+ end
70
+ let(:response_line_4) do
71
+ { "results" => [{ "series" => [{ "name" => "access_times.service_2", "tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" }, "columns" => %w(time value), "values" => [["2015-07-08T06:15:22Z", 606]] }] }] }
72
+ end
73
+ let(:response) do
74
+ JSON.generate(response_line_1) + "\n" + JSON.generate(response_line_2) + "\n" + JSON.generate(response_line_3) + "\n" + JSON.generate(response_line_4)
75
+ end
76
+ let(:expected_result) do
77
+ [{ "name" => "access_times.service_1", "tags" => { "code" => "200", "result" => "failure", "status" => "OK" }, "values" => [{ "time" => "2015-07-08T07:15:22Z", "value" => 327 }] },
78
+ { "name" => "access_times.service_1", "tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" }, "values" => [{ "time" => "2015-07-08T06:15:22Z", "value" => 873 }] },
79
+ { "name" => "access_times.service_2", "tags" => { "code" => "200", "result" => "failure", "status" => "OK" }, "values" => [{ "time" => "2015-07-08T07:15:22Z", "value" => 943 }] },
80
+ { "name" => "access_times.service_2", "tags" => { "code" => "500", "result" => "failure", "status" => "Internal Server Error" }, "values" => [{ "time" => "2015-07-08T06:15:22Z", "value" => 606 }] }]
81
+ end
82
+ let(:query) { "SELECT * FROM /access_times.*/" }
83
+
84
+ it "should return array with 4 elements grouped by name and tags" do
85
+ expect(subject.query(query)).to eq(expected_result)
86
+ end
87
+ end
88
+ end
89
+ end
@@ -134,8 +134,7 @@ describe InfluxDB::Client do
134
134
  "values" => [{ "time" => 1_438_580_576, "temp" => 34, "value" => 0.343443 }] },
135
135
  { "name" => "cpu", "tags" => { "region" => "us" },
136
136
  "values" => [{ "time" => 1_438_612_976, "temp" => 92, "value" => 0.3445 },
137
- { "time" => 1_438_612_989, "temp" => 68, "value" => 0.8787 }]
138
- }]
137
+ { "time" => 1_438_612_989, "temp" => 68, "value" => 0.8787 }] }]
139
138
  end
140
139
  let(:query) { 'SELECT * FROM cpu' }
141
140
 
@@ -143,6 +142,23 @@ describe InfluxDB::Client do
143
142
  expect(subject.query(query)).to eq(expected_result)
144
143
  end
145
144
  end
145
+
146
+ context "with chunk_size set to 100" do
147
+ let(:args) { { chunk_size: 100 } }
148
+ let(:extra_params) { { chunked: "true", chunk_size: "100" } }
149
+
150
+ let(:response) do
151
+ { "results" => [{ "series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [[1_438_580_576, 34, 0.343443]] }] }] }
152
+ end
153
+ let(:expected_result) do
154
+ [{ "name" => "cpu", "tags" => { "region" => "pl" }, "values" => [{ "time" => 1_438_580_576, "temp" => 34, "value" => 0.343443 }] }]
155
+ end
156
+ let(:query) { 'SELECT * FROM cpu' }
157
+
158
+ it "should set 'chunked' and 'chunk_size' parameters" do
159
+ expect(subject.query(query)).to eq(expected_result)
160
+ end
161
+ end
146
162
  end
147
163
 
148
164
  describe "multiple select queries" do
metadata CHANGED
@@ -1,126 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: influxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
5
- prerelease:
4
+ version: 0.3.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Todd Persen
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2016-06-09 00:00:00.000000000 Z
11
+ date: 2016-07-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: json
16
14
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
15
  requirements:
19
- - - ! '>='
16
+ - - ">="
20
17
  - !ruby/object:Gem::Version
21
18
  version: '0'
22
- type: :runtime
19
+ name: json
23
20
  prerelease: false
21
+ type: :runtime
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
- name: cause
32
28
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
29
  requirements:
35
- - - ! '>='
30
+ - - ">="
36
31
  - !ruby/object:Gem::Version
37
32
  version: '0'
38
- type: :runtime
33
+ name: cause
39
34
  prerelease: false
35
+ type: :runtime
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
- name: rake
48
42
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
43
  requirements:
51
- - - ! '>='
44
+ - - ">="
52
45
  - !ruby/object:Gem::Version
53
46
  version: '0'
54
- type: :development
47
+ name: rake
55
48
  prerelease: false
49
+ type: :development
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
- name: bundler
64
56
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
57
  requirements:
67
- - - ~>
58
+ - - "~>"
68
59
  - !ruby/object:Gem::Version
69
60
  version: '1.3'
70
- type: :development
61
+ name: bundler
71
62
  prerelease: false
63
+ type: :development
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
68
  version: '1.3'
78
69
  - !ruby/object:Gem::Dependency
79
- name: rspec
80
70
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
71
  requirements:
83
- - - ~>
72
+ - - "~>"
84
73
  - !ruby/object:Gem::Version
85
74
  version: 3.4.0
86
- type: :development
75
+ name: rspec
87
76
  prerelease: false
77
+ type: :development
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ~>
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
82
  version: 3.4.0
94
83
  - !ruby/object:Gem::Dependency
95
- name: webmock
96
84
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
85
  requirements:
99
- - - ~>
86
+ - - "~>"
100
87
  - !ruby/object:Gem::Version
101
88
  version: 1.24.2
102
- type: :development
89
+ name: webmock
103
90
  prerelease: false
91
+ type: :development
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ~>
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
96
  version: 1.24.2
110
97
  - !ruby/object:Gem::Dependency
111
- name: rubocop
112
98
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
99
  requirements:
115
- - - ~>
100
+ - - "~>"
116
101
  - !ruby/object:Gem::Version
117
102
  version: 0.39.0
118
- type: :development
103
+ name: rubocop
119
104
  prerelease: false
105
+ type: :development
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ~>
108
+ - - "~>"
124
109
  - !ruby/object:Gem::Version
125
110
  version: 0.39.0
126
111
  description: This is the official Ruby library for InfluxDB.
@@ -130,9 +115,9 @@ executables: []
130
115
  extensions: []
131
116
  extra_rdoc_files: []
132
117
  files:
133
- - .gitignore
134
- - .rubocop.yml
135
- - .travis.yml
118
+ - ".gitignore"
119
+ - ".rubocop.yml"
120
+ - ".travis.yml"
136
121
  - CHANGELOG.md
137
122
  - Gemfile
138
123
  - LICENSE.txt
@@ -159,13 +144,14 @@ files:
159
144
  - spec/influxdb/cases/async_client_spec.rb
160
145
  - spec/influxdb/cases/query_cluster_spec.rb
161
146
  - spec/influxdb/cases/query_continuous_query_spec.rb
162
- - spec/influxdb/cases/query_core.rb
147
+ - spec/influxdb/cases/query_core_spec.rb
163
148
  - spec/influxdb/cases/query_database_spec.rb
164
149
  - spec/influxdb/cases/query_retention_policy_spec.rb
165
150
  - spec/influxdb/cases/query_series_spec.rb
166
151
  - spec/influxdb/cases/query_shard_space_spec.rb
167
152
  - spec/influxdb/cases/query_shard_spec.rb
168
153
  - spec/influxdb/cases/query_user_spec.rb
154
+ - spec/influxdb/cases/querying_issue_7000_spec.rb
169
155
  - spec/influxdb/cases/querying_spec.rb
170
156
  - spec/influxdb/cases/retry_requests_spec.rb
171
157
  - spec/influxdb/cases/udp_client_spec.rb
@@ -180,45 +166,39 @@ files:
180
166
  homepage: http://influxdb.org
181
167
  licenses:
182
168
  - MIT
183
- post_install_message:
169
+ metadata: {}
170
+ post_install_message:
184
171
  rdoc_options: []
185
172
  require_paths:
186
173
  - lib
187
174
  required_ruby_version: !ruby/object:Gem::Requirement
188
- none: false
189
175
  requirements:
190
- - - ! '>='
176
+ - - ">="
191
177
  - !ruby/object:Gem::Version
192
178
  version: '0'
193
- segments:
194
- - 0
195
- hash: -2716499157754774119
196
179
  required_rubygems_version: !ruby/object:Gem::Requirement
197
- none: false
198
180
  requirements:
199
- - - ! '>='
181
+ - - ">="
200
182
  - !ruby/object:Gem::Version
201
183
  version: '0'
202
- segments:
203
- - 0
204
- hash: -2716499157754774119
205
184
  requirements: []
206
- rubyforge_project:
207
- rubygems_version: 1.8.25
208
- signing_key:
209
- specification_version: 3
185
+ rubyforge_project:
186
+ rubygems_version: 2.4.8
187
+ signing_key:
188
+ specification_version: 4
210
189
  summary: Ruby library for InfluxDB.
211
190
  test_files:
212
191
  - spec/influxdb/cases/async_client_spec.rb
213
192
  - spec/influxdb/cases/query_cluster_spec.rb
214
193
  - spec/influxdb/cases/query_continuous_query_spec.rb
215
- - spec/influxdb/cases/query_core.rb
194
+ - spec/influxdb/cases/query_core_spec.rb
216
195
  - spec/influxdb/cases/query_database_spec.rb
217
196
  - spec/influxdb/cases/query_retention_policy_spec.rb
218
197
  - spec/influxdb/cases/query_series_spec.rb
219
198
  - spec/influxdb/cases/query_shard_space_spec.rb
220
199
  - spec/influxdb/cases/query_shard_spec.rb
221
200
  - spec/influxdb/cases/query_user_spec.rb
201
+ - spec/influxdb/cases/querying_issue_7000_spec.rb
222
202
  - spec/influxdb/cases/querying_spec.rb
223
203
  - spec/influxdb/cases/retry_requests_spec.rb
224
204
  - spec/influxdb/cases/udp_client_spec.rb