efigence-influxdb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rubocop.yml +41 -0
  4. data/.travis.yml +11 -0
  5. data/Gemfile +11 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +362 -0
  8. data/Rakefile +22 -0
  9. data/efigence-influxdb.gemspec +28 -0
  10. data/lib/influxdb.rb +21 -0
  11. data/lib/influxdb/client.rb +77 -0
  12. data/lib/influxdb/client/http.rb +98 -0
  13. data/lib/influxdb/config.rb +60 -0
  14. data/lib/influxdb/errors.rb +40 -0
  15. data/lib/influxdb/logging.rb +22 -0
  16. data/lib/influxdb/max_queue.rb +18 -0
  17. data/lib/influxdb/point_value.rb +31 -0
  18. data/lib/influxdb/query/cluster.rb +17 -0
  19. data/lib/influxdb/query/continuous_query.rb +36 -0
  20. data/lib/influxdb/query/core.rb +109 -0
  21. data/lib/influxdb/query/database.rb +21 -0
  22. data/lib/influxdb/query/series.rb +13 -0
  23. data/lib/influxdb/query/shard.rb +14 -0
  24. data/lib/influxdb/query/shard_space.rb +60 -0
  25. data/lib/influxdb/query/user.rb +38 -0
  26. data/lib/influxdb/version.rb +3 -0
  27. data/lib/influxdb/writer/async.rb +115 -0
  28. data/lib/influxdb/writer/udp.rb +21 -0
  29. data/spec/influxdb/cases/async_client_spec.rb +33 -0
  30. data/spec/influxdb/cases/query_cluster_spec.rb +65 -0
  31. data/spec/influxdb/cases/query_database_spec.rb +58 -0
  32. data/spec/influxdb/cases/query_series_spec.rb +50 -0
  33. data/spec/influxdb/cases/query_shard_spec.rb +43 -0
  34. data/spec/influxdb/cases/query_user_spec.rb +127 -0
  35. data/spec/influxdb/cases/querying_spec.rb +159 -0
  36. data/spec/influxdb/cases/retry_requests_spec.rb +97 -0
  37. data/spec/influxdb/cases/udp_client_spec.rb +21 -0
  38. data/spec/influxdb/cases/write_points_spec.rb +141 -0
  39. data/spec/influxdb/client_spec.rb +58 -0
  40. data/spec/influxdb/config_spec.rb +118 -0
  41. data/spec/influxdb/logging_spec.rb +48 -0
  42. data/spec/influxdb/max_queue_spec.rb +29 -0
  43. data/spec/influxdb/point_value_spec.rb +66 -0
  44. data/spec/influxdb/worker_spec.rb +23 -0
  45. data/spec/spec_helper.rb +8 -0
  46. metadata +192 -0
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe InfluxDB::MaxQueue do
4
+ specify { is_expected.to be_a(Queue) }
5
+
6
+ context "#new" do
7
+ it "allows max_depth to be set" do
8
+ expect(described_class.new(500).max).to eq 500
9
+ end
10
+ end
11
+
12
+ context "#push" do
13
+ let(:queue) { described_class.new(5) }
14
+
15
+ it "allows an item to be added if the queue is not full" do
16
+ expect(queue.size).to be_zero
17
+ queue.push(1)
18
+ expect(queue.size).to eq 1
19
+ end
20
+
21
+ it "doesn't allow items to be added if the queue is full" do
22
+ expect(queue.size).to be_zero
23
+ 5.times { |n| queue.push(n) }
24
+ expect(queue.size).to eq 5
25
+ queue.push(6)
26
+ expect(queue.size).to eq 5
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,66 @@
1
+ require "spec_helper"
2
+
3
+ describe InfluxDB::PointValue do
4
+
5
+ describe "whitespace escaping" do
6
+ it 'should escape series name' do
7
+ point = InfluxDB::PointValue.new(series: "Some Long String", values: {value: 5})
8
+ expect(point.series).to eq("Some\\ Long\\ String")
9
+ end
10
+
11
+ it 'should escape keys of passed value keys' do
12
+ point = InfluxDB::PointValue.new(series: "responses",
13
+ values: {'some string key' => 5})
14
+ expect(point.values.split("=").first).to eq("some\\ string\\ key")
15
+ end
16
+
17
+ it 'should escape passed values' do
18
+ point = InfluxDB::PointValue.new(series: "responses",
19
+ values: {response_time: 0.34343},
20
+ tags: {city: "Twin Peaks"})
21
+ expect(point.tags.split("=").last).to eq("Twin\\ Peaks")
22
+ end
23
+ end
24
+
25
+ describe 'dump' do
26
+
27
+ context "with all possible data passed" do
28
+ let(:expected_value) do
29
+ "responses,region=eu,status=200 value=5,threshold=0.54 1436349652"
30
+ end
31
+ it 'should have proper form' do
32
+ point = InfluxDB::PointValue.new(series: "responses",
33
+ values: {value: 5, threshold: 0.54},
34
+ tags: {region: 'eu', status: 200},
35
+ timestamp: 1436349652)
36
+
37
+ expect(point.dump).to eq(expected_value)
38
+ end
39
+ end
40
+
41
+ context "with no tags" do
42
+ let(:expected_value) do
43
+ "responses value=5,threshold=0.54 1436349652"
44
+ end
45
+ it 'should have proper form' do
46
+ point = InfluxDB::PointValue.new(series: "responses",
47
+ values: {value: 5, threshold: 0.54},
48
+ timestamp: 1436349652)
49
+
50
+ expect(point.dump).to eq(expected_value)
51
+ end
52
+ end
53
+
54
+ context "with values only" do
55
+ let(:expected_value) do
56
+ "responses value=5,threshold=0.54"
57
+ end
58
+ it 'should have proper form' do
59
+ point = InfluxDB::PointValue.new(series: "responses",
60
+ values: {value: 5, threshold: 0.54})
61
+
62
+ expect(point.dump).to eq(expected_value)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+ require 'timeout'
3
+
4
+ describe InfluxDB::Writer::Async::Worker do
5
+ let(:fake_client) { double(stopped?: false) }
6
+ let(:worker) { described_class.new(fake_client, {}) }
7
+
8
+ describe "#push" do
9
+ let(:payload) { "responses,region=eu value=5" }
10
+
11
+ it "writes to the client" do
12
+ queue = Queue.new
13
+ expect(fake_client).to receive(:write).once.with([payload]) do |_data|
14
+ queue.push(:received)
15
+ end
16
+ worker.push(payload)
17
+
18
+ Timeout.timeout(described_class::SLEEP_INTERVAL) do
19
+ queue.pop
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,8 @@
1
+ require "influxdb"
2
+ require "webmock/rspec"
3
+ begin
4
+ require "pry-byebug"
5
+ rescue LoadError
6
+ end
7
+
8
+ InfluxDB::Logging.logger = Logger.new(STDOUT) if ENV['LOG']
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: efigence-influxdb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jacek Grzybowski
8
+ - Todd Persen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-07-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: cause
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.3'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 3.0.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 3.0.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: webmock
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ description: This is a fork of official Ruby library for InfluxDB meant for v0.9.x
99
+ support.
100
+ email:
101
+ - jgrzybowski@efigence.com
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".rubocop.yml"
108
+ - ".travis.yml"
109
+ - Gemfile
110
+ - LICENSE.txt
111
+ - README.md
112
+ - Rakefile
113
+ - efigence-influxdb.gemspec
114
+ - lib/influxdb.rb
115
+ - lib/influxdb/client.rb
116
+ - lib/influxdb/client/http.rb
117
+ - lib/influxdb/config.rb
118
+ - lib/influxdb/errors.rb
119
+ - lib/influxdb/logging.rb
120
+ - lib/influxdb/max_queue.rb
121
+ - lib/influxdb/point_value.rb
122
+ - lib/influxdb/query/cluster.rb
123
+ - lib/influxdb/query/continuous_query.rb
124
+ - lib/influxdb/query/core.rb
125
+ - lib/influxdb/query/database.rb
126
+ - lib/influxdb/query/series.rb
127
+ - lib/influxdb/query/shard.rb
128
+ - lib/influxdb/query/shard_space.rb
129
+ - lib/influxdb/query/user.rb
130
+ - lib/influxdb/version.rb
131
+ - lib/influxdb/writer/async.rb
132
+ - lib/influxdb/writer/udp.rb
133
+ - spec/influxdb/cases/async_client_spec.rb
134
+ - spec/influxdb/cases/query_cluster_spec.rb
135
+ - spec/influxdb/cases/query_database_spec.rb
136
+ - spec/influxdb/cases/query_series_spec.rb
137
+ - spec/influxdb/cases/query_shard_spec.rb
138
+ - spec/influxdb/cases/query_user_spec.rb
139
+ - spec/influxdb/cases/querying_spec.rb
140
+ - spec/influxdb/cases/retry_requests_spec.rb
141
+ - spec/influxdb/cases/udp_client_spec.rb
142
+ - spec/influxdb/cases/write_points_spec.rb
143
+ - spec/influxdb/client_spec.rb
144
+ - spec/influxdb/config_spec.rb
145
+ - spec/influxdb/logging_spec.rb
146
+ - spec/influxdb/max_queue_spec.rb
147
+ - spec/influxdb/point_value_spec.rb
148
+ - spec/influxdb/worker_spec.rb
149
+ - spec/spec_helper.rb
150
+ homepage: https://github.com/efigence/influxdb-ruby/tree/support_v0.9.x
151
+ licenses:
152
+ - MIT
153
+ metadata: {}
154
+ post_install_message:
155
+ rdoc_options: []
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 2.4.8
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: Ruby library for InfluxDB.
174
+ test_files:
175
+ - spec/influxdb/cases/async_client_spec.rb
176
+ - spec/influxdb/cases/query_cluster_spec.rb
177
+ - spec/influxdb/cases/query_database_spec.rb
178
+ - spec/influxdb/cases/query_series_spec.rb
179
+ - spec/influxdb/cases/query_shard_spec.rb
180
+ - spec/influxdb/cases/query_user_spec.rb
181
+ - spec/influxdb/cases/querying_spec.rb
182
+ - spec/influxdb/cases/retry_requests_spec.rb
183
+ - spec/influxdb/cases/udp_client_spec.rb
184
+ - spec/influxdb/cases/write_points_spec.rb
185
+ - spec/influxdb/client_spec.rb
186
+ - spec/influxdb/config_spec.rb
187
+ - spec/influxdb/logging_spec.rb
188
+ - spec/influxdb/max_queue_spec.rb
189
+ - spec/influxdb/point_value_spec.rb
190
+ - spec/influxdb/worker_spec.rb
191
+ - spec/spec_helper.rb
192
+ has_rdoc: