influxdb 0.3.13 → 0.3.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +15 -20
- data/CHANGELOG.md +7 -0
- data/README.md +15 -0
- data/lib/influxdb.rb +1 -0
- data/lib/influxdb/client.rb +1 -0
- data/lib/influxdb/config.rb +5 -3
- data/lib/influxdb/query/core.rb +7 -1
- data/lib/influxdb/query/series.rb +18 -0
- data/lib/influxdb/version.rb +1 -1
- data/lib/influxdb/writer/async.rb +1 -1
- data/spec/influxdb/cases/query_cluster_spec.rb +4 -1
- data/spec/influxdb/cases/query_continuous_query_spec.rb +2 -1
- data/spec/influxdb/cases/query_core_spec.rb +2 -1
- data/spec/influxdb/cases/query_database_spec.rb +1 -1
- data/spec/influxdb/cases/query_retention_policy_spec.rb +2 -2
- data/spec/influxdb/cases/query_series_spec.rb +32 -30
- data/spec/influxdb/cases/query_user_spec.rb +2 -2
- data/spec/influxdb/cases/query_with_params_spec.rb +2 -1
- data/spec/influxdb/cases/querying_issue_7000_spec.rb +12 -6
- data/spec/influxdb/cases/querying_spec.rb +26 -13
- data/spec/influxdb/cases/udp_client_spec.rb +27 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae726ac300f9a2011eba6e9ac4e6085637cf914d
|
4
|
+
data.tar.gz: ed8ecb52b432e865b83fd4d52d7b16c8200f38f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abcaa0deb749051a1dfd578f4f10686b6fab9f607a59105747f4cf9f35e556de8831c36e1e72b7d01358816cf45859dda54d52f1830601f080c13b12a1badb52
|
7
|
+
data.tar.gz: 4bba860e2fc1bea053025979288d255d40e2cb775a11a1e59f4231284b439b560c5b4d7ef8bbfffc6f703ecd934dc77f8f2674bd049e71ad8b6aa83566128a04
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -2,15 +2,17 @@ sudo: required
|
|
2
2
|
dist: trusty
|
3
3
|
language: ruby
|
4
4
|
before_install:
|
5
|
-
- gem
|
6
|
-
- gem
|
5
|
+
- gem update --system --no-doc
|
6
|
+
- gem install bundler --no-doc
|
7
|
+
- gem update bundler --no-doc
|
7
8
|
- smoke/provision.sh
|
8
9
|
rvm:
|
9
10
|
- 1.9.3
|
10
11
|
- 2.0.0
|
11
12
|
- 2.1.10
|
12
|
-
- 2.2.
|
13
|
-
- 2.3.
|
13
|
+
- 2.2.5
|
14
|
+
- 2.3.3
|
15
|
+
- 2.4.0
|
14
16
|
- ruby-head
|
15
17
|
env:
|
16
18
|
- TEST_TASK=spec
|
@@ -19,29 +21,22 @@ matrix:
|
|
19
21
|
allow_failures:
|
20
22
|
- rvm: jruby-head
|
21
23
|
- rvm: ruby-head
|
22
|
-
- rvm: jruby-9.
|
23
|
-
- rvm: 2.
|
24
|
+
- rvm: jruby-9.1.5.0
|
25
|
+
- rvm: 2.4.0
|
24
26
|
env: TEST_TASK=smoke influx_version=nightly channel=nightlies
|
25
27
|
include:
|
26
|
-
- rvm: 2.
|
28
|
+
- rvm: 2.4.0
|
27
29
|
env: TEST_TASK=rubocop
|
28
|
-
- rvm: jruby-9.
|
29
|
-
env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -J-Xmx256M'
|
30
|
+
- rvm: jruby-9.1.5.0
|
30
31
|
- rvm: jruby-head
|
31
32
|
env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -J-Xmx256M'
|
32
|
-
- rvm: 2.
|
33
|
-
env: TEST_TASK=smoke influx_version=0.10.3-1 pkghash=96244557d9bb7485ddc9d084ff7ce783
|
34
|
-
- rvm: 2.3.1
|
35
|
-
env: TEST_TASK=smoke influx_version=0.11.1-1 pkghash=f4cf8363125038dff038ced6b16bcafd
|
36
|
-
- rvm: 2.3.1
|
37
|
-
env: TEST_TASK=smoke influx_version=0.12.2-1 pkghash=f28bb1c57d52dc1593dca45b86be5913
|
38
|
-
- rvm: 2.3.1
|
39
|
-
env: TEST_TASK=smoke influx_version=0.13.0 pkghash=4f0aa76fee22cf4c18e2a0779ba4f462
|
40
|
-
- rvm: 2.3.1
|
33
|
+
- rvm: 2.4.0
|
41
34
|
env: TEST_TASK=smoke influx_version=1.0.2 pkghash=3e4c349cb57507913d9abda1459bdbed
|
42
|
-
- rvm: 2.
|
35
|
+
- rvm: 2.4.0
|
43
36
|
env: TEST_TASK=smoke influx_version=1.1.0 pkghash=682904c350ecfc2a60ec9c6c08453ef2
|
44
|
-
- rvm: 2.
|
37
|
+
- rvm: 2.4.0
|
38
|
+
env: TEST_TASK=smoke influx_version=1.2.0 pkghash=f79959802930c7e9d6e81ffd366c0629
|
39
|
+
- rvm: 2.4.0
|
45
40
|
env: TEST_TASK=smoke influx_version=nightly channel=nightlies
|
46
41
|
fail_fast: true
|
47
42
|
addons:
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,13 @@ For the full commit log, [see here](https://github.com/influxdata/influxdb-ruby/
|
|
6
6
|
|
7
7
|
- None.
|
8
8
|
|
9
|
+
## v0.3.14, released 2017-02-06
|
10
|
+
|
11
|
+
- Added option `discard_write_errors` to silently ignore errors when writing
|
12
|
+
to the server (#182, @mickey).
|
13
|
+
- Added `#list_series` and `#delete_series` to `InfluxDB::Client` (#183-186,
|
14
|
+
@wrcola).
|
15
|
+
|
9
16
|
## v0.3.13, released 2016-11-23
|
10
17
|
|
11
18
|
- You can now `InfluxDB::Client#query`, `#write_points`, `#write_point` and
|
data/README.md
CHANGED
@@ -470,6 +470,21 @@ data = {
|
|
470
470
|
influxdb.write_point(name, data)
|
471
471
|
```
|
472
472
|
|
473
|
+
Discard write errors:
|
474
|
+
|
475
|
+
``` ruby
|
476
|
+
require 'influxdb'
|
477
|
+
host = '127.0.0.1'
|
478
|
+
port = 4444
|
479
|
+
|
480
|
+
influxdb = InfluxDB::Client.new(
|
481
|
+
udp: { host: host, port: port },
|
482
|
+
discard_write_errors: true
|
483
|
+
)
|
484
|
+
|
485
|
+
influxdb.write_point('hitchhiker', { values: { value: 666 } })
|
486
|
+
```
|
487
|
+
|
473
488
|
### Reading data
|
474
489
|
|
475
490
|
#### Querying
|
data/lib/influxdb.rb
CHANGED
data/lib/influxdb/client.rb
CHANGED
data/lib/influxdb/config.rb
CHANGED
@@ -22,7 +22,8 @@ module InfluxDB
|
|
22
22
|
:prefix,
|
23
23
|
:chunk_size,
|
24
24
|
:denormalize,
|
25
|
-
:epoch
|
25
|
+
:epoch,
|
26
|
+
:discard_write_errors
|
26
27
|
|
27
28
|
attr_reader :async, :udp
|
28
29
|
|
@@ -109,8 +110,9 @@ module InfluxDB
|
|
109
110
|
end
|
110
111
|
|
111
112
|
def extract_writer_options!(opts)
|
112
|
-
@async
|
113
|
-
@udp
|
113
|
+
@async = opts.fetch :async, false
|
114
|
+
@udp = opts.fetch :udp, false
|
115
|
+
@discard_write_errors = opts.fetch :discard_write_errors, false
|
114
116
|
end
|
115
117
|
|
116
118
|
def extract_query_options!(opts)
|
data/lib/influxdb/query/core.rb
CHANGED
@@ -55,6 +55,10 @@ module InfluxDB
|
|
55
55
|
data = data.is_a?(Array) ? data : [data]
|
56
56
|
payload = generate_payload(data)
|
57
57
|
writer.write(payload, precision, retention_policy, database)
|
58
|
+
rescue => e
|
59
|
+
raise e unless config.discard_write_errors
|
60
|
+
|
61
|
+
log :error, "Cannot write data: #{e.inspect}"
|
58
62
|
end
|
59
63
|
|
60
64
|
# Example:
|
@@ -118,7 +122,9 @@ module InfluxDB
|
|
118
122
|
end
|
119
123
|
|
120
124
|
def execute(query, options = {})
|
121
|
-
|
125
|
+
params = { q: query }
|
126
|
+
params[:db] = options.delete(:db) if options.key?(:db)
|
127
|
+
url = full_url("/query".freeze, params)
|
122
128
|
get(url, options)
|
123
129
|
end
|
124
130
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module InfluxDB
|
2
|
+
module Query
|
3
|
+
module Series # :nodoc:
|
4
|
+
def delete_series(name)
|
5
|
+
execute("DROP SERIES FROM #{name}", db: config.database)
|
6
|
+
end
|
7
|
+
|
8
|
+
def list_series
|
9
|
+
resp = execute("SHOW SERIES".freeze, parse: true, db: config.database)
|
10
|
+
resp = fetch_series(resp)
|
11
|
+
raw_values(resp[0])
|
12
|
+
.fetch('values'.freeze, [])
|
13
|
+
.map { |val| val[0].split(',')[0] }
|
14
|
+
.uniq
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/influxdb/version.rb
CHANGED
@@ -110,7 +110,7 @@ module InfluxDB
|
|
110
110
|
log :debug, "Found data in the queue! (#{data.length} points)"
|
111
111
|
client.write(data.join("\n"), nil)
|
112
112
|
rescue => e
|
113
|
-
|
113
|
+
log :error, "Cannot write data: #{e.inspect}"
|
114
114
|
end
|
115
115
|
|
116
116
|
break if queue.length > max_post_points
|
@@ -50,7 +50,10 @@ describe InfluxDB::Client do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
describe "#list_cluster_admins" do
|
53
|
-
let(:response)
|
53
|
+
let(:response) do
|
54
|
+
{ "results" => [{ "statement_id" => 0,
|
55
|
+
"series" => [{ "columns" => %w(user admin), "values" => [["dbadmin", true], ["foobar", false]] }] }] }
|
56
|
+
end
|
54
57
|
let(:expected_result) { ["dbadmin"] }
|
55
58
|
|
56
59
|
before do
|
@@ -21,7 +21,8 @@ describe InfluxDB::Client do
|
|
21
21
|
let(:query) { "SHOW CONTINUOUS QUERIES" }
|
22
22
|
let(:database) { "testdb" }
|
23
23
|
let(:response) do
|
24
|
-
{ "results" => [{ "
|
24
|
+
{ "results" => [{ "statement_id" => 0,
|
25
|
+
"series" => [{ "name" => "otherdb", "columns" => %w(name query),
|
25
26
|
"values" => [["clicks_per_hour", "CREATE CONTINUOUS QUERY clicks_per_hour ON otherdb BEGIN SELECT count(name) INTO \"otherdb\".\"default\".clicksCount_1h FROM \"otherdb\".\"default\".clicks GROUP BY time(1h) END"]] },
|
26
27
|
{ "name" => "testdb", "columns" => %w(name query),
|
27
28
|
"values" => [["event_counts", "CREATE CONTINUOUS QUERY event_counts ON testdb BEGIN SELECT count(type) INTO \"testdb\".\"default\".typeCount_10m_byType FROM \"testdb\".\"default\".events GROUP BY time(10m), type END"]] }] }] }
|
@@ -16,7 +16,8 @@ describe InfluxDB::Client do
|
|
16
16
|
describe "#query" do
|
17
17
|
let(:query) { "SELECT value FROM requests_per_minute WHERE time > 1437019900" }
|
18
18
|
let(:response) do
|
19
|
-
{ "results" => [{ "
|
19
|
+
{ "results" => [{ "statement_id" => 0,
|
20
|
+
"series" => [{ "name" => "requests_per_minute",
|
20
21
|
"columns" => %w(time value) }] }] }
|
21
22
|
end
|
22
23
|
|
@@ -17,7 +17,7 @@ describe InfluxDB::Client do
|
|
17
17
|
|
18
18
|
let(:args) { {} }
|
19
19
|
let(:query) { nil }
|
20
|
-
let(:response) { { "results" => [] } }
|
20
|
+
let(:response) { { "results" => [{ "statement_id" => 0 }] } }
|
21
21
|
|
22
22
|
before do
|
23
23
|
stub_request(:get, "http://influxdb.test:9999/query").with(
|
@@ -17,7 +17,7 @@ describe InfluxDB::Client do
|
|
17
17
|
|
18
18
|
let(:args) { {} }
|
19
19
|
let(:query) { nil }
|
20
|
-
let(:response) { { "results" => [] } }
|
20
|
+
let(:response) { { "results" => [{ "statement_id" => 0 }] } }
|
21
21
|
|
22
22
|
before do
|
23
23
|
stub_request(:get, "http://influxdb.test:9999/query").with(
|
@@ -26,8 +26,8 @@ describe InfluxDB::Client do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#list_retention_policies" do
|
29
|
-
let(:response) { { "results" => [{ "series" => [{ "columns" => %w(name duration replicaN default), "values" => [["default", "0", 1, true], ["another", "1", 2, false]] }] }] } }
|
30
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
31
|
let(:expected_result) { [{ "name" => "default", "duration" => "0", "replicaN" => 1, "default" => true }, { "name" => "another", "duration" => "1", "replicaN" => 2, "default" => false }] }
|
32
32
|
|
33
33
|
it "should GET a list of retention policies" do
|
@@ -17,34 +17,36 @@ describe InfluxDB::Client do
|
|
17
17
|
|
18
18
|
let(:args) { {} }
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
#
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
20
|
+
describe "GET #list_series" do
|
21
|
+
let(:response) { { "results" => [{ "series" => [{ "columns" => "key", "values" => [["series1,name=default,duration=0"], ["series2,name=another,duration=1"]] }] }] } }
|
22
|
+
let(:data) { %w(series1 series2) }
|
23
|
+
let(:query) { "SHOW SERIES" }
|
24
|
+
|
25
|
+
before do
|
26
|
+
stub_request(:get, "http://influxdb.test:9999/query").with(
|
27
|
+
query: { u: "username", p: "password", q: query, db: "database" }
|
28
|
+
).to_return(
|
29
|
+
body: JSON.generate(response)
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "returns a list of all series names" do
|
34
|
+
expect(subject.list_series).to eq data
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#delete_series" do
|
39
|
+
let(:name) { "events" }
|
40
|
+
let(:query) { "DROP SERIES FROM #{name}" }
|
41
|
+
|
42
|
+
before do
|
43
|
+
stub_request(:get, "http://influxdb.test:9999/query").with(
|
44
|
+
query: { u: "username", p: "password", q: query, db: "database" }
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should GET to remove a database" do
|
49
|
+
expect(subject.delete_series(name)).to be_a(Net::HTTPOK)
|
50
|
+
end
|
51
|
+
end
|
50
52
|
end
|
@@ -17,7 +17,7 @@ describe InfluxDB::Client do
|
|
17
17
|
|
18
18
|
let(:args) { {} }
|
19
19
|
let(:query) { nil }
|
20
|
-
let(:response) { { "results" => [] } }
|
20
|
+
let(:response) { { "results" => [{ "statement_id" => 0 }] } }
|
21
21
|
|
22
22
|
before do
|
23
23
|
stub_request(:get, "http://influxdb.test:9999/query").with(
|
@@ -98,8 +98,8 @@ describe InfluxDB::Client do
|
|
98
98
|
end
|
99
99
|
|
100
100
|
describe "#list_users" do
|
101
|
-
let(:response) { { "results" => [{ "series" => [{ "columns" => %w(user admin), "values" => [["dbadmin", true], ["foobar", false]] }] }] } }
|
102
101
|
let(:query) { "SHOW USERS" }
|
102
|
+
let(:response) { { "results" => [{ "statement_id" => 0, "series" => [{ "columns" => %w(user admin), "values" => [["dbadmin", true], ["foobar", false]] }] }] } }
|
103
103
|
let(:expected_result) { [{ "username" => "dbadmin", "admin" => true }, { "username" => "foobar", "admin" => false }] }
|
104
104
|
|
105
105
|
it "should GET a list of database users" do
|
@@ -19,7 +19,8 @@ describe InfluxDB::Client do
|
|
19
19
|
let(:query_compiled) { "SELECT value FROM requests_per_minute WHERE time > 1437019900" }
|
20
20
|
|
21
21
|
let(:response) do
|
22
|
-
{ "results" => [{ "
|
22
|
+
{ "results" => [{ "statement_id" => 0,
|
23
|
+
"series" => [{ "name" => "requests_per_minute",
|
23
24
|
"columns" => %w(time value) }] }] }
|
24
25
|
end
|
25
26
|
|
@@ -32,10 +32,12 @@ describe InfluxDB::Client do
|
|
32
32
|
let(:extra_params) { { chunked: "true", chunk_size: "100" } }
|
33
33
|
|
34
34
|
let(:response_line_1) do
|
35
|
-
{ "results" => [{ "
|
35
|
+
{ "results" => [{ "statement_id" => 0,
|
36
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] }] }] }
|
36
37
|
end
|
37
38
|
let(:response_line_2) do
|
38
|
-
{ "results" => [{ "
|
39
|
+
{ "results" => [{ "statement_id" => 0,
|
40
|
+
"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
41
|
end
|
40
42
|
let(:response) do
|
41
43
|
JSON.generate(response_line_1) + "\n" + JSON.generate(response_line_2)
|
@@ -59,16 +61,20 @@ describe InfluxDB::Client do
|
|
59
61
|
let(:extra_params) { { chunked: "true", chunk_size: "100" } }
|
60
62
|
|
61
63
|
let(:response_line_1) do
|
62
|
-
{ "results" => [{ "
|
64
|
+
{ "results" => [{ "statement_id" => 0,
|
65
|
+
"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
66
|
end
|
64
67
|
let(:response_line_2) do
|
65
|
-
{ "results" => [{ "
|
68
|
+
{ "results" => [{ "statement_id" => 0,
|
69
|
+
"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
70
|
end
|
67
71
|
let(:response_line_3) do
|
68
|
-
{ "results" => [{ "
|
72
|
+
{ "results" => [{ "statement_id" => 0,
|
73
|
+
"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
74
|
end
|
70
75
|
let(:response_line_4) do
|
71
|
-
{ "results" => [{ "
|
76
|
+
{ "results" => [{ "statement_id" => 0,
|
77
|
+
"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
78
|
end
|
73
79
|
let(:response) do
|
74
80
|
JSON.generate(response_line_1) + "\n" + JSON.generate(response_line_2) + "\n" + JSON.generate(response_line_3) + "\n" + JSON.generate(response_line_4)
|
@@ -26,7 +26,8 @@ describe InfluxDB::Client do
|
|
26
26
|
describe "#query" do
|
27
27
|
context "with single series with multiple points" do
|
28
28
|
let(:response) do
|
29
|
-
{ "results" => [{ "
|
29
|
+
{ "results" => [{ "statement_id" => 0,
|
30
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "us" },
|
30
31
|
"columns" => %w(time temp value),
|
31
32
|
"values" => [["2015-07-07T14:58:37Z", 92, 0.3445], ["2015-07-07T14:59:09Z", 68, 0.8787]] }] }] }
|
32
33
|
end
|
@@ -44,7 +45,8 @@ describe InfluxDB::Client do
|
|
44
45
|
|
45
46
|
context "with series with different tags" do
|
46
47
|
let(:response) do
|
47
|
-
{ "results" => [{ "
|
48
|
+
{ "results" => [{ "statement_id" => 0,
|
49
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] },
|
48
50
|
{ "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]] }] }] }
|
49
51
|
end
|
50
52
|
let(:expected_result) do
|
@@ -63,7 +65,8 @@ describe InfluxDB::Client do
|
|
63
65
|
|
64
66
|
context "with multiple series with different tags" do
|
65
67
|
let(:response) do
|
66
|
-
{ "results" => [{ "
|
68
|
+
{ "results" => [{ "statement_id" => 0,
|
69
|
+
"series" => [{ "name" => "access_times.service_1", "tags" => { "code" => "200", "result" => "failure", "status" => "OK" }, "columns" => %w(time value), "values" => [["2015-07-08T07:15:22Z", 327]] },
|
67
70
|
{ "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]] },
|
68
71
|
{ "name" => "access_times.service_2", "tags" => { "code" => "200", "result" => "failure", "status" => "OK" }, "columns" => %w(time value), "values" => [["2015-07-08T07:15:22Z", 943]] },
|
69
72
|
{ "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]] }] }] }
|
@@ -83,7 +86,8 @@ describe InfluxDB::Client do
|
|
83
86
|
|
84
87
|
context "with multiple series for explicit value only" do
|
85
88
|
let(:response) do
|
86
|
-
{ "results" => [{ "
|
89
|
+
{ "results" => [{ "statement_id" => 0,
|
90
|
+
"series" => [{ "name" => "access_times.service_1", "columns" => %w(time value), "values" => [["2015-07-08T06:15:22Z", 873], ["2015-07-08T07:15:22Z", 327]] },
|
87
91
|
{ "name" => "access_times.service_2", "columns" => %w(time value), "values" => [["2015-07-08T06:15:22Z", 606], ["2015-07-08T07:15:22Z", 943]] }] }] }
|
88
92
|
end
|
89
93
|
let(:expected_result) do
|
@@ -99,7 +103,8 @@ describe InfluxDB::Client do
|
|
99
103
|
|
100
104
|
context "with a block" do
|
101
105
|
let(:response) do
|
102
|
-
{ "results" => [{ "
|
106
|
+
{ "results" => [{ "statement_id" => 0,
|
107
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] },
|
103
108
|
{ "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]] }] }] }
|
104
109
|
end
|
105
110
|
|
@@ -126,7 +131,8 @@ describe InfluxDB::Client do
|
|
126
131
|
let(:extra_params) { { epoch: 's' } }
|
127
132
|
|
128
133
|
let(:response) do
|
129
|
-
{ "results" => [{ "
|
134
|
+
{ "results" => [{ "statement_id" => 0,
|
135
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [[1_438_580_576, 34, 0.343443]] },
|
130
136
|
{ "name" => "cpu", "tags" => { "region" => "us" }, "columns" => %w(time temp value), "values" => [[1_438_612_976, 92, 0.3445], [1_438_612_989, 68, 0.8787]] }] }] }
|
131
137
|
end
|
132
138
|
let(:expected_result) do
|
@@ -148,7 +154,8 @@ describe InfluxDB::Client do
|
|
148
154
|
let(:extra_params) { { chunked: "true", chunk_size: "100" } }
|
149
155
|
|
150
156
|
let(:response) do
|
151
|
-
{ "results" => [{ "
|
157
|
+
{ "results" => [{ "statement_id" => 0,
|
158
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [[1_438_580_576, 34, 0.343443]] }] }] }
|
152
159
|
end
|
153
160
|
let(:expected_result) do
|
154
161
|
[{ "name" => "cpu", "tags" => { "region" => "pl" }, "values" => [{ "time" => 1_438_580_576, "temp" => 34, "value" => 0.343443 }] }]
|
@@ -183,10 +190,12 @@ describe InfluxDB::Client do
|
|
183
190
|
describe "multiple select queries" do
|
184
191
|
context "with single series with multiple points" do
|
185
192
|
let(:response) do
|
186
|
-
{ "results" => [{ "
|
193
|
+
{ "results" => [{ "statement_id" => 0,
|
194
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "us" },
|
187
195
|
"columns" => %w(time temp value),
|
188
196
|
"values" => [["2015-07-07T14:58:37Z", 92, 0.3445], ["2015-07-07T14:59:09Z", 68, 0.8787]] }] },
|
189
|
-
{ "
|
197
|
+
{ "statement_id" => 1,
|
198
|
+
"series" => [{ "name" => "memory", "tags" => { "region" => "us" },
|
190
199
|
"columns" => %w(time free total),
|
191
200
|
"values" => [["2015-07-07T14:58:37Z", 96_468_992, 134_217_728], ["2015-07-07T14:59:09Z", 71_303_168, 134_217_728]] }] }] }
|
192
201
|
end
|
@@ -207,9 +216,11 @@ describe InfluxDB::Client do
|
|
207
216
|
|
208
217
|
context "with series with different tags" do
|
209
218
|
let(:response) do
|
210
|
-
{ "results" => [{ "
|
219
|
+
{ "results" => [{ "statement_id" => 0,
|
220
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] },
|
211
221
|
{ "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]] }] },
|
212
|
-
{ "
|
222
|
+
{ "statement_id" => 1,
|
223
|
+
"series" => [{ "name" => "memory", "tags" => { "region" => "pl" }, "columns" => %w(time free total), "values" => [["2015-07-07T15:13:04Z", 35_651_584, 134_217_728]] },
|
213
224
|
{ "name" => "memory", "tags" => { "region" => "us" }, "columns" => %w(time free total), "values" => [["2015-07-07T14:58:37Z", 96_468_992, 134_217_728], ["2015-07-07T14:59:09Z", 71_303_168, 134_217_728]] }] }] }
|
214
225
|
end
|
215
226
|
let(:expected_result) do
|
@@ -233,9 +244,11 @@ describe InfluxDB::Client do
|
|
233
244
|
|
234
245
|
context "with a block" do
|
235
246
|
let(:response) do
|
236
|
-
{ "results" => [{ "
|
247
|
+
{ "results" => [{ "statement_id" => 0,
|
248
|
+
"series" => [{ "name" => "cpu", "tags" => { "region" => "pl" }, "columns" => %w(time temp value), "values" => [["2015-07-07T15:13:04Z", 34, 0.343443]] },
|
237
249
|
{ "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]] }] },
|
238
|
-
{ "
|
250
|
+
{ "statement_id" => 1,
|
251
|
+
"series" => [{ "name" => "memory", "tags" => { "region" => "pl" }, "columns" => %w(time free total), "values" => [["2015-07-07T15:13:04Z", 35_651_584, 134_217_728]] },
|
239
252
|
{ "name" => "memory", "tags" => { "region" => "us" }, "columns" => %w(time free total), "values" => [["2015-07-07T14:58:37Z", 96_468_992, 134_217_728], ["2015-07-07T14:59:09Z", 71_303_168, 134_217_728]] }] }] }
|
240
253
|
end
|
241
254
|
|
@@ -8,7 +8,7 @@ describe InfluxDB::Client do
|
|
8
8
|
describe "#write" do
|
9
9
|
let(:message) { 'responses,region=eu value=5i' }
|
10
10
|
|
11
|
-
it "sends a
|
11
|
+
it "sends a UDP packet" do
|
12
12
|
s = UDPSocket.new
|
13
13
|
s.bind("localhost", 44_444)
|
14
14
|
|
@@ -16,6 +16,32 @@ describe InfluxDB::Client do
|
|
16
16
|
|
17
17
|
rec_message = s.recvfrom(30).first
|
18
18
|
expect(rec_message).to eq message
|
19
|
+
|
20
|
+
s.close
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#write with discard_write_errors" do
|
25
|
+
let(:client) do
|
26
|
+
described_class.new(
|
27
|
+
udp: { host: "localhost", port: 44_444 },
|
28
|
+
discard_write_errors: true
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "doesn't raise" do
|
33
|
+
s = UDPSocket.new
|
34
|
+
s.bind("localhost", 44_444)
|
35
|
+
|
36
|
+
client.write_point("responses", values: { value: 5 }, tags: { region: 'eu' })
|
37
|
+
s.close
|
38
|
+
|
39
|
+
client.write_point("responses", values: { value: 7 }, tags: { region: 'eu' })
|
40
|
+
|
41
|
+
allow(client).to receive(:log)
|
42
|
+
expect do
|
43
|
+
client.write_point("responses", values: { value: 7 }, tags: { region: 'eu' })
|
44
|
+
end.not_to raise_error
|
19
45
|
end
|
20
46
|
end
|
21
47
|
end
|
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.3.
|
4
|
+
version: 0.3.14
|
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: 2017-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- lib/influxdb/query/core.rb
|
139
139
|
- lib/influxdb/query/database.rb
|
140
140
|
- lib/influxdb/query/retention_policy.rb
|
141
|
+
- lib/influxdb/query/series.rb
|
141
142
|
- lib/influxdb/query/user.rb
|
142
143
|
- lib/influxdb/version.rb
|
143
144
|
- lib/influxdb/writer/async.rb
|
@@ -189,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
190
|
version: '0'
|
190
191
|
requirements: []
|
191
192
|
rubyforge_project:
|
192
|
-
rubygems_version: 2.
|
193
|
+
rubygems_version: 2.6.10
|
193
194
|
signing_key:
|
194
195
|
specification_version: 4
|
195
196
|
summary: Ruby library for InfluxDB.
|