influxdb 0.3.11 → 0.3.12

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
  SHA1:
3
- metadata.gz: 517db1c21a2efdd7d7c7e5e94ae64cca4eb3a5c3
4
- data.tar.gz: dd2672cc951a3a920375902e65e9b15252d01c8d
3
+ metadata.gz: b721d82a22974293685ba5fc0275d58e14d91c95
4
+ data.tar.gz: 8b45e5a10d9d8018c3919bdc8b62651819cf18d5
5
5
  SHA512:
6
- metadata.gz: febf1da8976eb80dd67dc0e85c671e1e1f650c7fdc74da7894ca2b6df9e434c63ed5fc700efc7c105899a9c8146c4ad8e61f902da73298588cb3b1f38d01c279
7
- data.tar.gz: 4d735fb568163110e21c1a8cc0300658948a99489391fe41476e6308fabf16de027211ae149912328bbbd126b5823e98042ac8418f4c97e6280ce3a8b1db211a
6
+ metadata.gz: ed273daa7368a7529acfd072273345056eb4001402d4869e5021776fe3a9e89ce967e519a1224aaa74e01d8205982a3109e2a250e35c997d96aed01e699d8409
7
+ data.tar.gz: 02f5b7f0c6e4050be231d33b5dd56068faa6ec7607a20ef48d885b6c38e04f628c88673d449cc34a15c8c488951e02c987be6797421da5a2c3394371a69c3243
@@ -39,6 +39,8 @@ matrix:
39
39
  env: TEST_TASK=smoke influx_version=0.13.0 pkghash=4f0aa76fee22cf4c18e2a0779ba4f462
40
40
  - rvm: 2.3.1
41
41
  env: TEST_TASK=smoke influx_version=1.0.2 pkghash=3e4c349cb57507913d9abda1459bdbed
42
+ - rvm: 2.3.1
43
+ env: TEST_TASK=smoke influx_version=1.1.0 pkghash=682904c350ecfc2a60ec9c6c08453ef2
42
44
  - rvm: 2.3.1
43
45
  env: TEST_TASK=smoke influx_version=nightly channel=nightlies
44
46
  fail_fast: true
@@ -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.12, released 2016-11-15
10
+
11
+ - Bugfix for broken Unicode support (regression introduced in #169).
12
+ Please note, this is only properly tested on Ruby 2.1+ (#171).
13
+
9
14
  ## v0.3.11, released 2016-10-12
10
15
 
11
16
  - Bugfix/Enhancement in `PointValue#escape`. Input strings are now scrubbed
data/Gemfile CHANGED
@@ -2,6 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  if RUBY_ENGINE != "jruby" && RUBY_VERSION < "2.0"
4
4
  gem "json", "~> 1.8.3"
5
+ gem "public_suffix", "< 1.5"
5
6
  end
6
7
 
7
8
  gemspec
@@ -56,14 +56,13 @@ module InfluxDB
56
56
  raise InfluxDB::ConnectionError, InfluxDB::NON_RECOVERABLE_MESSAGE
57
57
  rescue Timeout::Error, *InfluxDB::RECOVERABLE_EXCEPTIONS => e
58
58
  retry_count += 1
59
- if (config.retry == -1 || retry_count <= config.retry) && !stopped?
60
- log :error, "Failed to contact host #{host}: #{e.inspect} - retrying in #{delay}s."
61
- sleep delay
62
- delay = [config.max_delay, delay * 2].min
63
- retry
64
- else
59
+ unless (config.retry == -1 || retry_count <= config.retry) && !stopped?
65
60
  raise InfluxDB::ConnectionError, "Tried #{retry_count - 1} times to reconnect but failed."
66
61
  end
62
+ log :error, "Failed to contact host #{host}: #{e.inspect} - retrying in #{delay}s."
63
+ sleep delay
64
+ delay = [config.max_delay, delay * 2].min
65
+ retry
67
66
  ensure
68
67
  http.finish if http.started?
69
68
  end
@@ -31,13 +31,13 @@ module InfluxDB
31
31
 
32
32
  def escape(s, type)
33
33
  # rubocop:disable Style/AlignParameters
34
- s = s.encode "UTF-8".freeze, "binary".freeze,
34
+ s = s.encode "UTF-8".freeze, "UTF-8".freeze,
35
35
  invalid: :replace,
36
36
  undef: :replace,
37
37
  replace: "".freeze
38
38
 
39
39
  ESCAPES[type].each do |ch|
40
- s = s.encode.gsub(ch) { "\\#{ch}" }
40
+ s = s.gsub(ch) { "\\#{ch}" }
41
41
  end
42
42
  s
43
43
  end
@@ -1,3 +1,3 @@
1
1
  module InfluxDB # :nodoc:
2
- VERSION = "0.3.11".freeze
2
+ VERSION = "0.3.12".freeze
3
3
  end
@@ -22,11 +22,9 @@ describe InfluxDB::Client do
22
22
  let(:database) { "testdb" }
23
23
  let(:response) do
24
24
  { "results" => [{ "series" => [{ "name" => "otherdb", "columns" => %w(name query),
25
- "values" =>
26
- [["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"]] },
25
+ "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"]] },
27
26
  { "name" => "testdb", "columns" => %w(name query),
28
- "values" =>
29
- [["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"]] }] }] }
27
+ "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"]] }] }] }
30
28
  end
31
29
 
32
30
  let(:expected_result) do
@@ -16,14 +16,18 @@ describe InfluxDB::Client do
16
16
  end
17
17
 
18
18
  let(:args) { {} }
19
+ let(:query) { nil }
20
+ let(:response) { { "results" => [] } }
21
+
22
+ before do
23
+ stub_request(:get, "http://influxdb.test:9999/query").with(
24
+ query: { u: "username", p: "password", q: query }
25
+ ).to_return(body: JSON.generate(response))
26
+ end
19
27
 
20
28
  describe "#create_database" do
21
29
  describe "from param" do
22
- before do
23
- stub_request(:get, "http://influxdb.test:9999/query").with(
24
- query: { u: "username", p: "password", q: "CREATE DATABASE foo" }
25
- )
26
- end
30
+ let(:query) { "CREATE DATABASE foo" }
27
31
 
28
32
  it "should GET to create a new database" do
29
33
  expect(subject.create_database("foo")).to be_a(Net::HTTPOK)
@@ -31,11 +35,7 @@ describe InfluxDB::Client do
31
35
  end
32
36
 
33
37
  describe "from config" do
34
- before do
35
- stub_request(:get, "http://influxdb.test:9999/query").with(
36
- query: { u: "username", p: "password", q: "CREATE DATABASE database" }
37
- )
38
- end
38
+ let(:query) { "CREATE DATABASE database" }
39
39
 
40
40
  it "should GET to create a new database using database name from config" do
41
41
  expect(subject.create_database).to be_a(Net::HTTPOK)
@@ -45,11 +45,7 @@ describe InfluxDB::Client do
45
45
 
46
46
  describe "#delete_database" do
47
47
  describe "from param" do
48
- before do
49
- stub_request(:get, "http://influxdb.test:9999/query").with(
50
- query: { u: "username", p: "password", q: "DROP DATABASE foo" }
51
- )
52
- end
48
+ let(:query) { "DROP DATABASE foo" }
53
49
 
54
50
  it "should GET to remove a database" do
55
51
  expect(subject.delete_database("foo")).to be_a(Net::HTTPOK)
@@ -57,11 +53,7 @@ describe InfluxDB::Client do
57
53
  end
58
54
 
59
55
  describe "from config" do
60
- before do
61
- stub_request(:get, "http://influxdb.test:9999/query").with(
62
- query: { u: "username", p: "password", q: "DROP DATABASE database" }
63
- )
64
- end
56
+ let(:query) { "DROP DATABASE database" }
65
57
 
66
58
  it "should GET to remove a database using database name from config" do
67
59
  expect(subject.delete_database).to be_a(Net::HTTPOK)
@@ -70,15 +62,10 @@ describe InfluxDB::Client do
70
62
  end
71
63
 
72
64
  describe "#list_databases" do
65
+ let(:query) { "SHOW DATABASES" }
73
66
  let(:response) { { "results" => [{ "series" => [{ "name" => "databases", "columns" => ["name"], "values" => [["foobar"]] }] }] } }
74
67
  let(:expected_result) { [{ "name" => "foobar" }] }
75
68
 
76
- before do
77
- stub_request(:get, "http://influxdb.test:9999/query").with(
78
- query: { u: "username", p: "password", q: "SHOW DATABASES" }
79
- ).to_return(body: JSON.generate(response), status: 200)
80
- end
81
-
82
69
  it "should GET a list of databases" do
83
70
  expect(subject.list_databases).to eq(expected_result)
84
71
  end
@@ -16,17 +16,20 @@ describe InfluxDB::Client do
16
16
  end
17
17
 
18
18
  let(:args) { {} }
19
+ let(:query) { nil }
20
+ let(:response) { { "results" => [] } }
21
+
22
+ before do
23
+ stub_request(:get, "http://influxdb.test:9999/query").with(
24
+ query: { u: "username", p: "password", q: query }
25
+ ).to_return(body: JSON.generate(response))
26
+ end
19
27
 
20
28
  describe "#list_retention_policies" do
21
29
  let(:response) { { "results" => [{ "series" => [{ "columns" => %w(name duration replicaN default), "values" => [["default", "0", 1, true], ["another", "1", 2, false]] }] }] } }
30
+ let(:query) { "SHOW RETENTION POLICIES ON \"database\"" }
22
31
  let(:expected_result) { [{ "name" => "default", "duration" => "0", "replicaN" => 1, "default" => true }, { "name" => "another", "duration" => "1", "replicaN" => 2, "default" => false }] }
23
32
 
24
- before do
25
- stub_request(:get, "http://influxdb.test:9999/query").with(
26
- query: { u: "username", p: "password", q: "SHOW RETENTION POLICIES ON \"database\"" }
27
- ).to_return(body: JSON.generate(response), status: 200)
28
- end
29
-
30
33
  it "should GET a list of retention policies" do
31
34
  expect(subject.list_retention_policies('database')).to eq(expected_result)
32
35
  end
@@ -34,17 +37,7 @@ describe InfluxDB::Client do
34
37
 
35
38
  describe "#create_retention_policy" do
36
39
  context "default" do
37
- before do
38
- stub_request(:get, "http://influxdb.test:9999/query")
39
- .with(
40
- query:
41
- {
42
- u: "username",
43
- p: "password",
44
- q: "CREATE RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2 DEFAULT"
45
- }
46
- )
47
- end
40
+ let(:query) { "CREATE RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2 DEFAULT" }
48
41
 
49
42
  it "should GET to create a new database" do
50
43
  expect(subject.create_retention_policy('1h.cpu', 'foo', '1h', 2, true)).to be_a(Net::HTTPOK)
@@ -52,17 +45,7 @@ describe InfluxDB::Client do
52
45
  end
53
46
 
54
47
  context "non-default" do
55
- before do
56
- stub_request(:get, "http://influxdb.test:9999/query")
57
- .with(
58
- query:
59
- {
60
- u: "username",
61
- p: "password",
62
- q: "CREATE RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2"
63
- }
64
- )
65
- end
48
+ let(:query) { "CREATE RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2" }
66
49
 
67
50
  it "should GET to create a new database" do
68
51
  expect(subject.create_retention_policy('1h.cpu', 'foo', '1h', 2)).to be_a(Net::HTTPOK)
@@ -71,11 +54,7 @@ describe InfluxDB::Client do
71
54
  end
72
55
 
73
56
  describe "#delete_retention_policy" do
74
- before do
75
- stub_request(:get, "http://influxdb.test:9999/query").with(
76
- query: { u: "username", p: "password", q: "DROP RETENTION POLICY \"1h.cpu\" ON foo" }
77
- )
78
- end
57
+ let(:query) { "DROP RETENTION POLICY \"1h.cpu\" ON foo" }
79
58
 
80
59
  it "should GET to remove a database" do
81
60
  expect(subject.delete_retention_policy('1h.cpu', 'foo')).to be_a(Net::HTTPOK)
@@ -84,17 +63,7 @@ describe InfluxDB::Client do
84
63
 
85
64
  describe "#alter_retention_policy" do
86
65
  context "default" do
87
- before do
88
- stub_request(:get, "http://influxdb.test:9999/query")
89
- .with(
90
- query:
91
- {
92
- u: "username",
93
- p: "password",
94
- q: "ALTER RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2 DEFAULT"
95
- }
96
- )
97
- end
66
+ let(:query) { "ALTER RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2 DEFAULT" }
98
67
 
99
68
  it "should GET to alter a new database" do
100
69
  expect(subject.alter_retention_policy('1h.cpu', 'foo', '1h', 2, true)).to be_a(Net::HTTPOK)
@@ -102,17 +71,7 @@ describe InfluxDB::Client do
102
71
  end
103
72
 
104
73
  context "non-default" do
105
- before do
106
- stub_request(:get, "http://influxdb.test:9999/query")
107
- .with(
108
- query:
109
- {
110
- u: "username",
111
- p: "password",
112
- q: "ALTER RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2"
113
- }
114
- )
115
- end
74
+ let(:query) { "ALTER RETENTION POLICY \"1h.cpu\" ON foo DURATION 1h REPLICATION 2" }
116
75
 
117
76
  it "should GET to alter a new database" do
118
77
  expect(subject.alter_retention_policy('1h.cpu', 'foo', '1h', 2)).to be_a(Net::HTTPOK)
@@ -16,18 +16,20 @@ describe InfluxDB::Client do
16
16
  end
17
17
 
18
18
  let(:args) { {} }
19
+ let(:query) { nil }
20
+ let(:response) { { "results" => [] } }
21
+
22
+ before do
23
+ stub_request(:get, "http://influxdb.test:9999/query").with(
24
+ query: { u: "username", p: "password", q: query }
25
+ ).to_return(body: JSON.generate(response))
26
+ end
19
27
 
20
28
  describe "#update user password" do
21
29
  let(:user) { 'useruser' }
22
30
  let(:pass) { 'passpass' }
23
31
  let(:query) { "SET PASSWORD FOR #{user} = '#{pass}'" }
24
32
 
25
- before do
26
- stub_request(:get, "http://influxdb.test:9999/query").with(
27
- query: { u: "username", p: "password", q: query }
28
- )
29
- end
30
-
31
33
  it "should GET to update user password" do
32
34
  expect(subject.update_user_password(user, pass)).to be_a(Net::HTTPOK)
33
35
  end
@@ -39,12 +41,6 @@ describe InfluxDB::Client do
39
41
  let(:db) { 'foo' }
40
42
  let(:query) { "GRANT #{perm.to_s.upcase} ON #{db} TO #{user}" }
41
43
 
42
- before do
43
- stub_request(:get, "http://influxdb.test:9999/query").with(
44
- query: { u: "username", p: "password", q: query }
45
- )
46
- end
47
-
48
44
  it "should GET to grant privileges for a user on a database" do
49
45
  expect(subject.grant_user_privileges(user, db, perm)).to be_a(Net::HTTPOK)
50
46
  end
@@ -54,12 +50,6 @@ describe InfluxDB::Client do
54
50
  let(:user) { 'useruser' }
55
51
  let(:query) { "GRANT ALL PRIVILEGES TO #{user}" }
56
52
 
57
- before do
58
- stub_request(:get, "http://influxdb.test:9999/query").with(
59
- query: { u: "username", p: "password", q: query }
60
- )
61
- end
62
-
63
53
  it "should GET to grant privileges for a user on a database" do
64
54
  expect(subject.grant_user_admin_privileges(user)).to be_a(Net::HTTPOK)
65
55
  end
@@ -71,12 +61,6 @@ describe InfluxDB::Client do
71
61
  let(:db) { 'foo' }
72
62
  let(:query) { "REVOKE #{perm.to_s.upcase} ON #{db} FROM #{user}" }
73
63
 
74
- before do
75
- stub_request(:get, "http://influxdb.test:9999/query").with(
76
- query: { u: "username", p: "password", q: query }
77
- )
78
- end
79
-
80
64
  it "should GET to revoke privileges from a user on a database" do
81
65
  expect(subject.revoke_user_privileges(user, db, perm)).to be_a(Net::HTTPOK)
82
66
  end
@@ -88,12 +72,6 @@ describe InfluxDB::Client do
88
72
  let(:db) { 'foo' }
89
73
  let(:query) { "CREATE user #{user} WITH PASSWORD '#{pass}'; GRANT ALL ON #{db} TO #{user}" }
90
74
 
91
- before do
92
- stub_request(:get, "http://influxdb.test:9999/query").with(
93
- query: { u: "username", p: "password", q: query }
94
- )
95
- end
96
-
97
75
  context "without specifying permissions" do
98
76
  it "should GET to create a new database user with all permissions" do
99
77
  expect(subject.create_database_user(db, user, pass)).to be_a(Net::HTTPOK)
@@ -114,12 +92,6 @@ describe InfluxDB::Client do
114
92
  let(:user) { 'useruser' }
115
93
  let(:query) { "DROP USER #{user}" }
116
94
 
117
- before do
118
- stub_request(:get, "http://influxdb.test:9999/query").with(
119
- query: { u: "username", p: "password", q: query }
120
- )
121
- end
122
-
123
95
  it "should GET to delete a user" do
124
96
  expect(subject.delete_user(user)).to be_a(Net::HTTPOK)
125
97
  end
@@ -127,14 +99,9 @@ describe InfluxDB::Client do
127
99
 
128
100
  describe "#list_users" do
129
101
  let(:response) { { "results" => [{ "series" => [{ "columns" => %w(user admin), "values" => [["dbadmin", true], ["foobar", false]] }] }] } }
102
+ let(:query) { "SHOW USERS" }
130
103
  let(:expected_result) { [{ "username" => "dbadmin", "admin" => true }, { "username" => "foobar", "admin" => false }] }
131
104
 
132
- before do
133
- stub_request(:get, "http://influxdb.test:9999/query").with(
134
- query: { u: "username", p: "password", q: "SHOW USERS" }
135
- ).to_return(body: JSON.generate(response, status: 200))
136
- end
137
-
138
105
  it "should GET a list of database users" do
139
106
  expect(subject.list_users).to eq(expected_result)
140
107
  end
@@ -1,26 +1,34 @@
1
+ # encoding: UTF-8
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe InfluxDB::PointValue do
4
6
  describe "escaping" do
5
7
  let(:data) do
6
- {
8
+ point = {
7
9
  series: '1= ,"\\1',
8
10
  tags: {
9
11
  '2= ,"\\2' => '3= ,"\\3'
10
12
  },
11
13
  values: {
12
14
  '4= ,"\\4' => '5= ,"\\5',
13
- intval: 5,
14
- floatval: 7.0,
15
- encoding: "a\255 b"
15
+ intval: 5,
16
+ floatval: 7.0,
17
+ invalid_encoding: "a b",
18
+ non_latin: "Улан-Удэ"
16
19
  }
17
20
  }
21
+ if RUBY_VERSION > "2.0.0"
22
+ # see github.com/influxdata/influxdb-ruby/issues/171 for details
23
+ point[:values][:invalid_encoding] = "a\255 b"
24
+ end
25
+ point
18
26
  end
19
27
 
20
28
  it 'should escape correctly' do
21
29
  point = InfluxDB::PointValue.new(data)
22
30
  expected = %(1=\\ \\,"\\1,2\\=\\ \\,"\\2=3\\=\\ \\,"\\3 ) +
23
- %(4\\=\\ \\,\\"\\4="5= ,\\"\\5",intval=5i,floatval=7.0,encoding="a b")
31
+ %(4\\=\\ \\,\\"\\4="5= ,\\"\\5",intval=5i,floatval=7.0,invalid_encoding="a b",non_latin="Улан-Удэ")
24
32
  expect(point.dump).to eq(expected)
25
33
  end
26
34
  end
@@ -22,7 +22,7 @@ RSpec.configure do |config|
22
22
  logfile = File.open("tmp/spec.log", File::WRONLY | File::TRUNC | File::CREAT)
23
23
 
24
24
  InfluxDB::Logging.logger = Logger.new(logfile).tap do |logger|
25
- logger.formatter = proc {|severity, _datetime, progname, message|
25
+ logger.formatter = proc { |severity, _datetime, progname, message|
26
26
  "%-5s - %s: %s\n".format severity, progname, message
27
27
  }
28
28
  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.11
4
+ version: 0.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Persen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-12 00:00:00.000000000 Z
11
+ date: 2016-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json