influxdb 0.5.2 → 0.5.3
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 +4 -4
- data/.rubocop.yml +23 -16
- data/.travis.yml +10 -8
- data/CHANGELOG.md +5 -0
- data/README.md +30 -15
- data/Rakefile +4 -10
- data/{smoke → bin}/provision.sh +0 -0
- data/influxdb.gemspec +1 -3
- data/lib/influxdb/client/http.rb +6 -2
- data/lib/influxdb/point_value.rb +1 -0
- data/lib/influxdb/query/core.rb +9 -6
- data/lib/influxdb/query/retention_policy.rb +2 -2
- data/lib/influxdb/version.rb +1 -1
- data/lib/influxdb/writer/async.rb +4 -0
- data/spec/influxdb/cases/query_retention_policy_spec.rb +16 -4
- data/spec/smoke/smoke_spec.rb +59 -0
- data/spec/spec_helper.rb +2 -1
- metadata +5 -8
- data/smoke/connect-and-get-version.rb +0 -18
- data/smoke/noaa-sample-data.rb +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d85c5412cee2eed247a9dc36cdd93063dab1006
|
4
|
+
data.tar.gz: fb4ea80422af475ec2af1d94918e7682a424537d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 738b8b9a2ce516b1957c4afcdf7a4ab2ef710ddb088bd711ef55f815f11d57a1422bbc67db1d83574fb81ae98441c70d12c4c8a8cfe7bbc3029724d5c3156dae
|
7
|
+
data.tar.gz: d70c7129fc4e0f4a7a3b5732826128f168dedd3dcabfe7affdc5816c6c2718fea289368d3d3749aa6956deec7d899ebf9e5334af93293eed38e22635a5ff4e4b
|
data/.rubocop.yml
CHANGED
@@ -15,24 +15,21 @@ AllCops:
|
|
15
15
|
Rails:
|
16
16
|
Enabled: false
|
17
17
|
|
18
|
-
|
18
|
+
Layout/EmptyLinesAroundArguments:
|
19
19
|
Enabled: false
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
Layout/SpaceBeforeBlockBraces:
|
22
|
+
EnforcedStyleForEmptyBraces: space
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
Style/RescueModifier:
|
28
|
-
Enabled: false
|
24
|
+
Metrics/AbcSize:
|
25
|
+
Max: 20
|
29
26
|
|
30
|
-
Metrics/
|
31
|
-
Max: 100
|
27
|
+
Metrics/BlockLength:
|
32
28
|
Exclude:
|
33
29
|
- 'spec/**/*.rb'
|
34
30
|
|
35
|
-
Metrics/
|
31
|
+
Metrics/LineLength:
|
32
|
+
Max: 100
|
36
33
|
Exclude:
|
37
34
|
- 'spec/**/*.rb'
|
38
35
|
|
@@ -43,13 +40,23 @@ Metrics/ModuleLength:
|
|
43
40
|
Metrics/ParameterLists:
|
44
41
|
Max: 6
|
45
42
|
|
43
|
+
Style/FormatStringToken:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
Style/FrozenStringLiteralComment:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
Style/NumericPredicate:
|
50
|
+
Enabled: false
|
51
|
+
|
52
|
+
Style/RescueModifier:
|
53
|
+
Enabled: false
|
54
|
+
|
55
|
+
Style/StringLiterals:
|
56
|
+
Enabled: false
|
57
|
+
|
46
58
|
Style/TrailingCommaInLiteral:
|
47
59
|
EnforcedStyleForMultiline: comma
|
48
60
|
Exclude:
|
49
61
|
- "spec/**/*.rb"
|
50
62
|
|
51
|
-
Metrics/AbcSize:
|
52
|
-
Max: 20
|
53
|
-
|
54
|
-
Style/FormatStringToken:
|
55
|
-
Enabled: false
|
data/.travis.yml
CHANGED
@@ -5,7 +5,7 @@ before_install:
|
|
5
5
|
- gem update --system --no-doc
|
6
6
|
- gem install bundler --no-doc
|
7
7
|
- gem update bundler --no-doc
|
8
|
-
-
|
8
|
+
- bin/provision.sh
|
9
9
|
rvm:
|
10
10
|
- 2.2.8
|
11
11
|
- 2.3.5
|
@@ -20,23 +20,25 @@ matrix:
|
|
20
20
|
- rvm: ruby-head
|
21
21
|
- rvm: jruby-9.1.5.0
|
22
22
|
- rvm: 2.4.2
|
23
|
-
env:
|
23
|
+
env: influx_version=nightly channel=nightlies
|
24
24
|
include:
|
25
25
|
- rvm: 2.4.2
|
26
26
|
env: TEST_TASK=rubocop
|
27
27
|
- rvm: jruby-9.1.5.0
|
28
28
|
- rvm: jruby-head
|
29
|
-
env:
|
29
|
+
env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -J-Xmx256M'
|
30
30
|
- rvm: 2.4.2
|
31
|
-
env:
|
31
|
+
env: influx_version=1.0.2 pkghash=3e4c349cb57507913d9abda1459bdbed
|
32
32
|
- rvm: 2.4.2
|
33
|
-
env:
|
33
|
+
env: influx_version=1.1.0 pkghash=682904c350ecfc2a60ec9c6c08453ef2
|
34
34
|
- rvm: 2.4.2
|
35
|
-
env:
|
35
|
+
env: influx_version=1.2.4 pkghash=0545d67217393282188e5d5cdedfdc85
|
36
36
|
- rvm: 2.4.2
|
37
|
-
env:
|
37
|
+
env: influx_version=1.3.6 pkghash256=6406cdd21466bcb832b967078adaa9f07cb6ae524a6579c15141692031f5f840
|
38
38
|
- rvm: 2.4.2
|
39
|
-
env:
|
39
|
+
env: influx_version=1.4.2 pkghash256=96ced90cfc436da7833721fd635b9942f9175cff2f897c113ef068f224cf8605
|
40
|
+
- rvm: 2.4.2
|
41
|
+
env: influx_version=nightly channel=nightlies
|
40
42
|
fail_fast: true
|
41
43
|
addons:
|
42
44
|
apt:
|
data/CHANGELOG.md
CHANGED
@@ -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.5.3, released 2018-01-19
|
10
|
+
|
11
|
+
- Fix `NoMethodError` in `InfluxDB::Client#list_retention_policies` when
|
12
|
+
the database has no RPs defined (#213, @djoos)
|
13
|
+
|
9
14
|
## v0.5.2, released 2017-11-28
|
10
15
|
|
11
16
|
- Add async option to block on full queue (#209, @davemt)
|
data/README.md
CHANGED
@@ -145,21 +145,36 @@ influxdb.write_point(name, data)
|
|
145
145
|
influxdb.write_point(name, data, time_precision)
|
146
146
|
```
|
147
147
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
>
|
159
|
-
>
|
160
|
-
>
|
161
|
-
>
|
162
|
-
>
|
148
|
+
### A Note About Time Precision
|
149
|
+
|
150
|
+
The default precision in this gem is `"s"` (second), as Ruby's `Time#to_i`
|
151
|
+
operates on this resolution.
|
152
|
+
|
153
|
+
If you write data points with sub-second resolution, you _have_ to configure
|
154
|
+
your client instance with a more granular `time_precision` option **and** you
|
155
|
+
need to provide timestamp values which reflect this precision. **If you don't do
|
156
|
+
this, your points will be squashed!**
|
157
|
+
|
158
|
+
> A point is uniquely identified by the measurement name, tag set, and
|
159
|
+
> timestamp. If you submit a new point with the same measurement, tag set, and
|
160
|
+
> timestamp as an existing point, the field set becomes the union of the old
|
161
|
+
> field set and the new field set, where any ties go to the new field set. This
|
162
|
+
> is the intended behavior.
|
163
|
+
|
164
|
+
See [How does InfluxDB handle duplicate
|
165
|
+
points?](https://docs.influxdata.com/influxdb/v1.3/troubleshooting/frequently-asked-questions/#how-does-influxdb-handle-duplicate-points)
|
166
|
+
for details.
|
167
|
+
|
168
|
+
For example, this is how to specify millisecond precision (which moves the
|
169
|
+
pitfall from the second- to the millisecond barrier):
|
170
|
+
|
171
|
+
```ruby
|
172
|
+
influxdb = InfluxDB::Client.new(time_precision: "ms")
|
173
|
+
time = (Time.now.to_r * 1000).to_i
|
174
|
+
# A faster, albeit less readable alternative:
|
175
|
+
# time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
|
176
|
+
influxdb.write_point("foobar", { values: { n: 42 }, timestamp: time })
|
177
|
+
```
|
163
178
|
|
164
179
|
Allowed values for `time_precision` are:
|
165
180
|
|
data/Rakefile
CHANGED
@@ -14,12 +14,12 @@ RSpec::Core::RakeTask.new(:spec) do |t|
|
|
14
14
|
t.pattern = FileList[file_pattern]
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
if ENV.key?("TRAVIS")
|
18
|
+
task default: %i[spec]
|
19
|
+
else
|
20
|
+
task default: %i[spec rubocop]
|
19
21
|
end
|
20
22
|
|
21
|
-
task default: %i[spec rubocop]
|
22
|
-
|
23
23
|
task :console do
|
24
24
|
lib = File.expand_path("../lib", __FILE__)
|
25
25
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -44,9 +44,3 @@ task :console do
|
|
44
44
|
IRB.start
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
|
-
if !ENV.key?("influx_version") || ENV["influx_version"] == ""
|
49
|
-
task default: :spec
|
50
|
-
elsif ENV["TRAVIS"] == "true"
|
51
|
-
task default: :smoke
|
52
|
-
end
|
data/{smoke → bin}/provision.sh
RENAMED
File without changes
|
data/influxdb.gemspec
CHANGED
@@ -2,7 +2,6 @@ lib = File.expand_path('../lib', __FILE__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'influxdb/version'
|
4
4
|
|
5
|
-
# rubocop:disable Style/SpecialGlobalVars
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "influxdb"
|
8
7
|
spec.version = InfluxDB::VERSION
|
@@ -13,8 +12,7 @@ Gem::Specification.new do |spec|
|
|
13
12
|
spec.homepage = "http://influxdb.org"
|
14
13
|
spec.license = "MIT"
|
15
14
|
|
16
|
-
spec.files = `git ls-files`.split($/)
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
15
|
+
spec.files = `git ls-files`.split($/) # rubocop:disable Style/SpecialGlobalVars
|
18
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features|smoke)/})
|
19
17
|
spec.require_paths = ["lib"]
|
20
18
|
|
data/lib/influxdb/client/http.rb
CHANGED
@@ -78,10 +78,12 @@ module InfluxDB
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def resolve_error(response)
|
81
|
-
|
81
|
+
case response
|
82
|
+
when /Couldn\'t find series/
|
82
83
|
raise InfluxDB::SeriesNotFound, response
|
84
|
+
else
|
85
|
+
raise InfluxDB::Error, response
|
83
86
|
end
|
84
|
-
raise InfluxDB::Error, response
|
85
87
|
end
|
86
88
|
|
87
89
|
def handle_successful_response(response, options)
|
@@ -130,4 +132,6 @@ module InfluxDB
|
|
130
132
|
store
|
131
133
|
end
|
132
134
|
end
|
135
|
+
# rubocop:enable Metrics/MethodLength
|
136
|
+
# rubocop:enable Metrics/AbcSize
|
133
137
|
end
|
data/lib/influxdb/point_value.rb
CHANGED
data/lib/influxdb/query/core.rb
CHANGED
@@ -2,7 +2,6 @@ require_relative 'builder'
|
|
2
2
|
|
3
3
|
module InfluxDB
|
4
4
|
module Query # :nodoc: all
|
5
|
-
# rubocop:disable Metrics/AbcSize
|
6
5
|
module Core
|
7
6
|
def builder
|
8
7
|
@builder ||= Builder.new
|
@@ -17,8 +16,7 @@ module InfluxDB
|
|
17
16
|
ping.header['x-influxdb-version']
|
18
17
|
end
|
19
18
|
|
20
|
-
# rubocop:disable Metrics/MethodLength
|
21
|
-
def query(
|
19
|
+
def query( # rubocop:disable Metrics/MethodLength
|
22
20
|
query,
|
23
21
|
params: nil,
|
24
22
|
denormalize: config.denormalize,
|
@@ -147,11 +145,16 @@ module InfluxDB
|
|
147
145
|
params[:p] = config.password
|
148
146
|
end
|
149
147
|
|
150
|
-
|
148
|
+
URI::Generic.build(
|
149
|
+
path: File.join(config.prefix, path),
|
150
|
+
query: cgi_escape_params(params)
|
151
|
+
).to_s
|
152
|
+
end
|
153
|
+
|
154
|
+
def cgi_escape_params(params)
|
155
|
+
params.map do |k, v|
|
151
156
|
[CGI.escape(k.to_s), "=".freeze, CGI.escape(v.to_s)].join
|
152
157
|
end.join("&".freeze)
|
153
|
-
|
154
|
-
URI::Generic.build(path: File.join(config.prefix, path), query: query).to_s
|
155
158
|
end
|
156
159
|
end
|
157
160
|
end
|
@@ -17,9 +17,9 @@ module InfluxDB
|
|
17
17
|
|
18
18
|
def list_retention_policies(database)
|
19
19
|
resp = execute("SHOW RETENTION POLICIES ON \"#{database}\"", parse: true)
|
20
|
-
data = fetch_series(resp).fetch(0)
|
20
|
+
data = fetch_series(resp).fetch(0, {})
|
21
21
|
|
22
|
-
data
|
22
|
+
data.fetch("values".freeze, []).map do |policy|
|
23
23
|
policy.each.with_index.inject({}) do |hash, (value, index)|
|
24
24
|
hash.tap { |h| h[data['columns'.freeze][index]] = value }
|
25
25
|
end
|
data/lib/influxdb/version.rb
CHANGED
@@ -131,6 +131,10 @@ module InfluxDB
|
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
135
|
+
# rubocop:enable Metrics/MethodLength
|
136
|
+
# rubocop:enable Metrics/AbcSize
|
137
|
+
|
134
138
|
def stop!
|
135
139
|
log(:debug) { "Thread exiting, flushing queue." }
|
136
140
|
check_background_queue until queue.empty?
|
@@ -27,11 +27,23 @@ describe InfluxDB::Client do
|
|
27
27
|
|
28
28
|
describe "#list_retention_policies" do
|
29
29
|
let(:query) { "SHOW RETENTION POLICIES ON \"database\"" }
|
30
|
-
let(:response) { { "results" => [{ "statement_id" => 0, "series" => [{ "columns" => %w[name duration replicaN default], "values" => [["default", "0", 1, true], ["another", "1", 2, false]] }] }] } }
|
31
|
-
let(:expected_result) { [{ "name" => "default", "duration" => "0", "replicaN" => 1, "default" => true }, { "name" => "another", "duration" => "1", "replicaN" => 2, "default" => false }] }
|
32
30
|
|
33
|
-
|
34
|
-
|
31
|
+
context "database with RPs" do
|
32
|
+
let(:response) { { "results" => [{ "statement_id" => 0, "series" => [{ "columns" => %w[name duration replicaN default], "values" => [["default", "0", 1, true], ["another", "1", 2, false]] }] }] } }
|
33
|
+
let(:expected_result) { [{ "name" => "default", "duration" => "0", "replicaN" => 1, "default" => true }, { "name" => "another", "duration" => "1", "replicaN" => 2, "default" => false }] }
|
34
|
+
|
35
|
+
it "should GET a list of retention policies" do
|
36
|
+
expect(subject.list_retention_policies('database')).to eq(expected_result)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "database without RPs" do
|
41
|
+
let(:response) { { "results" => [{ "statement_id" => 0, "series" => [{ "columns" => %w[name duration shardGroupDuration replicaN default] }] }] } }
|
42
|
+
let(:expected_result) { [] }
|
43
|
+
|
44
|
+
it "should GET a list of retention policies" do
|
45
|
+
expect(subject.list_retention_policies('database')).to eq(expected_result)
|
46
|
+
end
|
35
47
|
end
|
36
48
|
end
|
37
49
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe InfluxDB::Client, smoke: true do
|
4
|
+
before do
|
5
|
+
WebMock.allow_net_connect!
|
6
|
+
end
|
7
|
+
|
8
|
+
after do
|
9
|
+
WebMock.disable_net_connect!
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:client) do
|
13
|
+
InfluxDB::Client.new(database: "NOAA_water_database",
|
14
|
+
username: "test_user",
|
15
|
+
password: "resu_tset",
|
16
|
+
retry: 4)
|
17
|
+
end
|
18
|
+
|
19
|
+
context "connects to the database" do
|
20
|
+
it "returns the version number" do
|
21
|
+
expect(client.version).to be_truthy
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "retrieves data from the NOAA database" do
|
26
|
+
sample_data1 = {
|
27
|
+
"time" => "2015-08-18T00:00:00Z",
|
28
|
+
"level description" => "below 3 feet",
|
29
|
+
"location" => "santa_monica",
|
30
|
+
"water_level" => 2.064
|
31
|
+
}
|
32
|
+
|
33
|
+
sample_data2 = {
|
34
|
+
"time" => "2015-08-18T00:12:00Z",
|
35
|
+
"level description" => "below 3 feet",
|
36
|
+
"location" => "santa_monica",
|
37
|
+
"water_level" => 2.028
|
38
|
+
}
|
39
|
+
|
40
|
+
it "returns all five measurements" do
|
41
|
+
result = client.query("show measurements")[0]["values"].map { |v| v["name"] }
|
42
|
+
expect(result).to eq(%w[average_temperature h2o_feet h2o_pH h2o_quality h2o_temperature])
|
43
|
+
end
|
44
|
+
|
45
|
+
it "counts the number of non-null values of water level in h2o feet" do
|
46
|
+
result = client.query("select count(water_level) from h2o_feet")[0]["values"][0]["count"]
|
47
|
+
expect(result).to eq(15_258)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "selects the first five observations in the measurement h2o_feet" do
|
51
|
+
result = client
|
52
|
+
.query("select * from h2o_feet WHERE location = 'santa_monica'")
|
53
|
+
.first["values"]
|
54
|
+
expect(result.size). to eq(7654)
|
55
|
+
expect(result).to include(sample_data1)
|
56
|
+
expect(result).to include(sample_data2)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,7 +10,8 @@ end
|
|
10
10
|
|
11
11
|
RSpec.configure do |config|
|
12
12
|
config.color = ENV["TRAVIS"] != "true"
|
13
|
-
|
13
|
+
config.filter_run_excluding smoke: ENV["TRAVIS"] != "true" || !ENV.key?("influx_version")
|
14
|
+
puts "SMOKE TESTS ARE NOT CURRENTLY RUNNING" if ENV["TRAVIS"] != "true"
|
14
15
|
# rubocop:disable Style/ConditionalAssignment
|
15
16
|
if config.files_to_run.one? || ENV["TRAVIS"] == "true"
|
16
17
|
config.formatter = :documentation
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Persen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- LICENSE.txt
|
96
96
|
- README.md
|
97
97
|
- Rakefile
|
98
|
+
- bin/provision.sh
|
98
99
|
- influxdb.gemspec
|
99
100
|
- lib/influxdb.rb
|
100
101
|
- lib/influxdb/client.rb
|
@@ -115,9 +116,6 @@ files:
|
|
115
116
|
- lib/influxdb/version.rb
|
116
117
|
- lib/influxdb/writer/async.rb
|
117
118
|
- lib/influxdb/writer/udp.rb
|
118
|
-
- smoke/connect-and-get-version.rb
|
119
|
-
- smoke/noaa-sample-data.rb
|
120
|
-
- smoke/provision.sh
|
121
119
|
- spec/influxdb/cases/async_client_spec.rb
|
122
120
|
- spec/influxdb/cases/query_cluster_spec.rb
|
123
121
|
- spec/influxdb/cases/query_continuous_query_spec.rb
|
@@ -142,6 +140,7 @@ files:
|
|
142
140
|
- spec/influxdb/point_value_spec.rb
|
143
141
|
- spec/influxdb/query_builder_spec.rb
|
144
142
|
- spec/influxdb/worker_spec.rb
|
143
|
+
- spec/smoke/smoke_spec.rb
|
145
144
|
- spec/spec_helper.rb
|
146
145
|
homepage: http://influxdb.org
|
147
146
|
licenses:
|
@@ -168,9 +167,6 @@ signing_key:
|
|
168
167
|
specification_version: 4
|
169
168
|
summary: Ruby library for InfluxDB.
|
170
169
|
test_files:
|
171
|
-
- smoke/connect-and-get-version.rb
|
172
|
-
- smoke/noaa-sample-data.rb
|
173
|
-
- smoke/provision.sh
|
174
170
|
- spec/influxdb/cases/async_client_spec.rb
|
175
171
|
- spec/influxdb/cases/query_cluster_spec.rb
|
176
172
|
- spec/influxdb/cases/query_continuous_query_spec.rb
|
@@ -195,4 +191,5 @@ test_files:
|
|
195
191
|
- spec/influxdb/point_value_spec.rb
|
196
192
|
- spec/influxdb/query_builder_spec.rb
|
197
193
|
- spec/influxdb/worker_spec.rb
|
194
|
+
- spec/smoke/smoke_spec.rb
|
198
195
|
- spec/spec_helper.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require "influxdb"
|
2
|
-
|
3
|
-
puts __FILE__
|
4
|
-
puts "\tThis file contains some sanity checks."
|
5
|
-
puts
|
6
|
-
|
7
|
-
client = InfluxDB::Client.new \
|
8
|
-
username: "test_user",
|
9
|
-
password: "resu_tset",
|
10
|
-
retry: 4
|
11
|
-
|
12
|
-
version = client.version
|
13
|
-
|
14
|
-
if version
|
15
|
-
puts "Got version: #{version}"
|
16
|
-
else
|
17
|
-
raise "version is empty"
|
18
|
-
end
|
data/smoke/noaa-sample-data.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
require "influxdb"
|
2
|
-
|
3
|
-
puts __FILE__
|
4
|
-
puts "\tThis is basically a test whether the examples in documented on"
|
5
|
-
puts "\thttp://docs.influxdata.com/influxdb/v0.13/sample_data/data_download/"
|
6
|
-
puts "\twork with the Ruby client."
|
7
|
-
puts
|
8
|
-
|
9
|
-
client = InfluxDB::Client.new \
|
10
|
-
database: "NOAA_water_database",
|
11
|
-
username: "test_user",
|
12
|
-
password: "resu_tset",
|
13
|
-
retry: 4
|
14
|
-
|
15
|
-
TestFailure = Class.new StandardError
|
16
|
-
TestAllowedFailure = Class.new StandardError
|
17
|
-
|
18
|
-
def test_case(name)
|
19
|
-
print name
|
20
|
-
yield
|
21
|
-
puts " [ OK ]"
|
22
|
-
|
23
|
-
rescue TestAllowedFailure
|
24
|
-
puts " [WARN]"
|
25
|
-
puts $!.message
|
26
|
-
|
27
|
-
rescue TestFailure
|
28
|
-
puts " [FAIL]"
|
29
|
-
puts $!.message
|
30
|
-
exit 1
|
31
|
-
end
|
32
|
-
|
33
|
-
test_case "See all five measurements?" do
|
34
|
-
result = client.query "show measurements"
|
35
|
-
expected = %w[ average_temperature h2o_feet h2o_pH h2o_quality h2o_temperature ]
|
36
|
-
actual = result[0]["values"].map{|v| v["name"] }
|
37
|
-
unexpected = actual - expected
|
38
|
-
if unexpected.any?
|
39
|
-
raise TestFailure, "unexpected measurements: #{unexpected.join(", ")}"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
test_case "Count the number of non-null values of water_level in h2o_feet" do
|
44
|
-
result = client.query "select count(water_level) from h2o_feet"
|
45
|
-
expected = 15258
|
46
|
-
actual = result[0]["values"][0]["count"]
|
47
|
-
if expected != actual
|
48
|
-
raise TestFailure, "expected to find #{expected} points, got #{actual}"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
test_case "Select the first five observations in the measurement h2o_feet" do
|
53
|
-
result = client.query("select * from h2o_feet limit 5").first["values"]
|
54
|
-
expected = 5
|
55
|
-
actual = result.size
|
56
|
-
if expected != actual
|
57
|
-
raise TestFailure, "expected #{expected} observations, got #{actual}"
|
58
|
-
end
|
59
|
-
|
60
|
-
expected = {
|
61
|
-
"time" => "2015-08-18T00:00:00Z",
|
62
|
-
"level description" => "between 6 and 9 feet",
|
63
|
-
"location" => "coyote_creek",
|
64
|
-
"water_level" => 8.12
|
65
|
-
}
|
66
|
-
if expected != result[0]
|
67
|
-
raise TestAllowedFailure, "unexpected first result, got #{result[0]}"
|
68
|
-
end
|
69
|
-
|
70
|
-
expected = {
|
71
|
-
"time" => "2015-08-18T00:12:00Z",
|
72
|
-
"level description" => "between 6 and 9 feet",
|
73
|
-
"location" => "coyote_creek",
|
74
|
-
"water_level" => 7.887
|
75
|
-
}
|
76
|
-
if expected != result[-1]
|
77
|
-
raise TestAllowedFailure, "unexpected last result, got #{result[-1]}"
|
78
|
-
end
|
79
|
-
end
|