tremolo 0.1.0 → 0.2.0
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/CHANGELOG.md +6 -0
- data/README.md +8 -0
- data/lib/tremolo/data_point.rb +32 -8
- data/lib/tremolo/noop_tracker.rb +6 -6
- data/lib/tremolo/sender.rb +4 -4
- data/lib/tremolo/series.rb +12 -12
- data/lib/tremolo/tracker.rb +12 -12
- data/lib/tremolo/version.rb +1 -1
- data/spec/lib/tremolo/noop_tracker_spec.rb +6 -0
- data/spec/lib/tremolo/series_spec.rb +5 -5
- data/spec/lib/tremolo/tracker_spec.rb +15 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac99676944c67bc64c93a2297aa481518119d8cf
|
4
|
+
data.tar.gz: a4f670b8c599a4f4ea57208f4647a82cbc77cd6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13ea2e22c5062d2c91626b90776126ee8fd15272197ea03621128b04ede7903acedfd0503fc9d85715ad12a264638d18bd9fbb153d0c23fb5dda768302bba993
|
7
|
+
data.tar.gz: 606d586a2bc999e0c7cc5e276609421bf449265f0e89fbabeb4d7115508c58b86bab5885d5feb95b7877f4321358efbd0e70c64d6ce860d68a14db6ca855b2de
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -70,6 +70,14 @@ series = tracker.series('timing.series-name')
|
|
70
70
|
value = series.time { Net::HTTP.get(URI('http://google.com')) }
|
71
71
|
```
|
72
72
|
|
73
|
+
## Tags ##
|
74
|
+
|
75
|
+
A Hash of `tags` data can be passed to `increment`, `decrement`, `timing`, and `time`, and `write_point`, as the last argument.
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
series.write_point({:value => 18}, {:otherdata => 1986})
|
79
|
+
```
|
80
|
+
|
73
81
|
## Databases, Namespace and Series names
|
74
82
|
|
75
83
|
Since version 0.7.1 of InfluxDB, multiple databases can be configured for different UDP ports. All
|
data/lib/tremolo/data_point.rb
CHANGED
@@ -1,27 +1,51 @@
|
|
1
1
|
module Tremolo
|
2
2
|
class DataPoint
|
3
|
-
attr_accessor :series_name, :
|
3
|
+
attr_accessor :series_name, :tags, :values, :time
|
4
4
|
|
5
5
|
def initialize(series_name, data, time=nil)
|
6
6
|
self.series_name = series_name
|
7
|
-
self.data = data
|
8
7
|
self.time = time.nil? ? nil : time.to_i
|
8
|
+
|
9
|
+
self.tags = data.fetch(:tags, {})
|
10
|
+
self.values = data.fetch(:values, [])
|
11
|
+
end
|
12
|
+
|
13
|
+
# key/value pairs of tag data
|
14
|
+
def tag_values
|
15
|
+
tags.map(&value_mapper).join(',')
|
9
16
|
end
|
10
17
|
|
11
|
-
|
12
|
-
|
18
|
+
# join the series name and tag values
|
19
|
+
def measurement_and_tags
|
20
|
+
[series_name, tag_values].delete_if {|v| v.to_s.length == 0}.join(',')
|
21
|
+
end
|
22
|
+
|
23
|
+
# join lines for each value
|
24
|
+
def lines
|
25
|
+
values.map(&line_format).join("\n")
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def fields
|
30
|
+
values.map {|point| point.map(&value_mapper)}.join(',')
|
13
31
|
end
|
14
32
|
|
15
33
|
def cast(value)
|
16
34
|
value
|
17
35
|
end
|
18
36
|
|
19
|
-
def
|
20
|
-
@line ||= lambda
|
37
|
+
def line_format
|
38
|
+
@line ||= lambda do |values|
|
39
|
+
[
|
40
|
+
measurement_and_tags,
|
41
|
+
fields,
|
42
|
+
time
|
43
|
+
].compact.join(' ')
|
44
|
+
end
|
21
45
|
end
|
22
46
|
|
23
|
-
def
|
24
|
-
|
47
|
+
def value_mapper
|
48
|
+
lambda { |k,v| "#{k}=#{cast(v)}" }
|
25
49
|
end
|
26
50
|
end
|
27
51
|
end
|
data/lib/tremolo/noop_tracker.rb
CHANGED
@@ -7,13 +7,13 @@ module Tremolo
|
|
7
7
|
Series.new(self, series_name)
|
8
8
|
end
|
9
9
|
|
10
|
-
def increment(series_name);end
|
11
|
-
def decrement(series_name);end
|
12
|
-
def timing(series_name, value);end
|
13
|
-
def time(series_name, &block)
|
10
|
+
def increment(series_name, tags = {});end
|
11
|
+
def decrement(series_name, tags = {});end
|
12
|
+
def timing(series_name, value, tags = {});end
|
13
|
+
def time(series_name, tags = {}, &block)
|
14
14
|
block.call
|
15
15
|
end
|
16
|
-
def write_point(series_name, data);end
|
17
|
-
def write_points(series_name, data);end
|
16
|
+
def write_point(series_name, data, tags = {});end
|
17
|
+
def write_points(series_name, data, tags = {});end
|
18
18
|
end
|
19
19
|
end
|
data/lib/tremolo/sender.rb
CHANGED
@@ -7,17 +7,17 @@ module Tremolo
|
|
7
7
|
@socket.connect(host, port) # client
|
8
8
|
end
|
9
9
|
|
10
|
-
def write_points(series_name,
|
10
|
+
def write_points(series_name, values, tags = {})
|
11
11
|
begin
|
12
|
-
@socket.send(prepare(series_name,
|
12
|
+
@socket.send(prepare(series_name, values, tags), 0)
|
13
13
|
rescue Errno::ECONNREFUSED
|
14
14
|
nil
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
|
-
def prepare(series_name,
|
20
|
-
DataPoint.new(series_name,
|
19
|
+
def prepare(series_name, values, tags = {})
|
20
|
+
DataPoint.new(series_name, {:values => values, :tags => tags}).lines
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/lib/tremolo/series.rb
CHANGED
@@ -8,28 +8,28 @@ module Tremolo
|
|
8
8
|
@tracker, @series_name = tracker, series_name
|
9
9
|
end
|
10
10
|
|
11
|
-
def increment
|
12
|
-
write_point({value: 1})
|
11
|
+
def increment(tags = {})
|
12
|
+
write_point({value: 1}, tags)
|
13
13
|
end
|
14
14
|
|
15
|
-
def decrement
|
16
|
-
write_point({value: -1})
|
15
|
+
def decrement(tags = {})
|
16
|
+
write_point({value: -1}, tags)
|
17
17
|
end
|
18
18
|
|
19
|
-
def timing(value)
|
20
|
-
write_point({value: value})
|
19
|
+
def timing(value, tags = {})
|
20
|
+
write_point({value: value}, tags)
|
21
21
|
end
|
22
22
|
|
23
|
-
def time(&block)
|
24
|
-
tracker.time(series_name, &block)
|
23
|
+
def time(tags = {}, &block)
|
24
|
+
tracker.time(series_name, tags, &block)
|
25
25
|
end
|
26
26
|
|
27
|
-
def write_point(data)
|
28
|
-
write_points([data])
|
27
|
+
def write_point(data, tags = {})
|
28
|
+
write_points([data], tags)
|
29
29
|
end
|
30
30
|
|
31
|
-
def write_points(data)
|
32
|
-
tracker.write_points(series_name, data)
|
31
|
+
def write_points(data, tags = {})
|
32
|
+
tracker.write_points(series_name, data, tags)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
data/lib/tremolo/tracker.rb
CHANGED
@@ -16,32 +16,32 @@ module Tremolo
|
|
16
16
|
Series.new(self, series_name)
|
17
17
|
end
|
18
18
|
|
19
|
-
def increment(series_name)
|
20
|
-
write_point(series_name, {value: 1})
|
19
|
+
def increment(series_name, tags = {})
|
20
|
+
write_point(series_name, {value: 1}, tags)
|
21
21
|
end
|
22
22
|
|
23
|
-
def decrement(series_name)
|
24
|
-
write_point(series_name, {value: -1})
|
23
|
+
def decrement(series_name, tags = {})
|
24
|
+
write_point(series_name, {value: -1}, tags)
|
25
25
|
end
|
26
26
|
|
27
|
-
def timing(series_name, value)
|
28
|
-
write_point(series_name, {value: value})
|
27
|
+
def timing(series_name, value, tags = {})
|
28
|
+
write_point(series_name, {value: value}, tags)
|
29
29
|
end
|
30
30
|
|
31
|
-
def time(series_name, &block)
|
31
|
+
def time(series_name, tags = {}, &block)
|
32
32
|
start = Time.now
|
33
33
|
block.call.tap do |_|
|
34
34
|
value = ((Time.now-start)*1000).round
|
35
|
-
timing(series_name, value)
|
35
|
+
timing(series_name, value, tags)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
def write_point(series_name, data)
|
40
|
-
write_points(series_name, [data])
|
39
|
+
def write_point(series_name, data, tags = {})
|
40
|
+
write_points(series_name, [data], tags)
|
41
41
|
end
|
42
42
|
|
43
|
-
def write_points(series_name, data)
|
44
|
-
sender.async.write_points([namespace, series_name].compact.join('.'), data)
|
43
|
+
def write_points(series_name, data, tags = {})
|
44
|
+
sender.async.write_points([namespace, series_name].compact.join('.'), data, tags)
|
45
45
|
end
|
46
46
|
|
47
47
|
private
|
data/lib/tremolo/version.rb
CHANGED
@@ -20,6 +20,12 @@ describe Tremolo::NoopTracker do
|
|
20
20
|
expect(socket).to have_received(:send).never
|
21
21
|
end
|
22
22
|
|
23
|
+
it 'does not send single point with value 1 and tags' do
|
24
|
+
tracker.increment('accounts.created', {associated_id: 81102})
|
25
|
+
|
26
|
+
expect(socket).to have_received(:send).never
|
27
|
+
end
|
28
|
+
|
23
29
|
it 'does not send single point with value -1' do
|
24
30
|
tracker.decrement('accounts.created')
|
25
31
|
|
@@ -16,7 +16,7 @@ describe Tremolo::Series do
|
|
16
16
|
|
17
17
|
line = 'accounts.created value=111,associated_id=81102'
|
18
18
|
|
19
|
-
sleep 0.
|
19
|
+
sleep 0.01
|
20
20
|
expect(socket).to have_received(:send).with(line, 0)
|
21
21
|
end
|
22
22
|
|
@@ -25,7 +25,7 @@ describe Tremolo::Series do
|
|
25
25
|
|
26
26
|
line = 'accounts.created value=1'
|
27
27
|
|
28
|
-
sleep 0.
|
28
|
+
sleep 0.01
|
29
29
|
expect(socket).to have_received(:send).with(line, 0)
|
30
30
|
end
|
31
31
|
|
@@ -34,7 +34,7 @@ describe Tremolo::Series do
|
|
34
34
|
|
35
35
|
line = 'accounts.created value=-1'
|
36
36
|
|
37
|
-
sleep 0.
|
37
|
+
sleep 0.01
|
38
38
|
expect(socket).to have_received(:send).with(line, 0)
|
39
39
|
end
|
40
40
|
|
@@ -43,7 +43,7 @@ describe Tremolo::Series do
|
|
43
43
|
|
44
44
|
line = 'accounts.created value=89'
|
45
45
|
|
46
|
-
sleep 0.
|
46
|
+
sleep 0.01
|
47
47
|
expect(socket).to have_received(:send).with(line, 0)
|
48
48
|
end
|
49
49
|
|
@@ -62,7 +62,7 @@ describe Tremolo::Series do
|
|
62
62
|
|
63
63
|
line = 'accounts.created value=1050'
|
64
64
|
|
65
|
-
sleep 0.
|
65
|
+
sleep 0.01
|
66
66
|
expect(returned).to eq('returning another thing')
|
67
67
|
expect(socket).to have_received(:send).with(line, 0)
|
68
68
|
end
|
@@ -15,7 +15,16 @@ describe Tremolo::Tracker do
|
|
15
15
|
|
16
16
|
line = 'accounts.created value=111,associated_id=81102'
|
17
17
|
|
18
|
-
sleep 0.
|
18
|
+
sleep 0.01
|
19
|
+
expect(socket).to have_received(:send).with(line, 0)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'sends tags formatted for InfluxDB', :celluloid => true do
|
23
|
+
tracker.write_point('accounts.created', {value: 111}, {associated_id: 81102})
|
24
|
+
|
25
|
+
line = 'accounts.created,associated_id=81102 value=111'
|
26
|
+
|
27
|
+
sleep 0.01
|
19
28
|
expect(socket).to have_received(:send).with(line, 0)
|
20
29
|
end
|
21
30
|
|
@@ -24,7 +33,7 @@ describe Tremolo::Tracker do
|
|
24
33
|
|
25
34
|
line = 'accounts.created value=1'
|
26
35
|
|
27
|
-
sleep 0.
|
36
|
+
sleep 0.01
|
28
37
|
expect(socket).to have_received(:send).with(line, 0)
|
29
38
|
end
|
30
39
|
|
@@ -33,7 +42,7 @@ describe Tremolo::Tracker do
|
|
33
42
|
|
34
43
|
line = 'accounts.created value=-1'
|
35
44
|
|
36
|
-
sleep 0.
|
45
|
+
sleep 0.01
|
37
46
|
expect(socket).to have_received(:send).with(line, 0)
|
38
47
|
end
|
39
48
|
|
@@ -42,7 +51,7 @@ describe Tremolo::Tracker do
|
|
42
51
|
|
43
52
|
line = 'timing.accounts.created value=89'
|
44
53
|
|
45
|
-
sleep 0.
|
54
|
+
sleep 0.01
|
46
55
|
expect(socket).to have_received(:send).with(line, 0)
|
47
56
|
end
|
48
57
|
|
@@ -61,7 +70,7 @@ describe Tremolo::Tracker do
|
|
61
70
|
|
62
71
|
line = 'timing.accounts.created value=1014'
|
63
72
|
|
64
|
-
sleep 0.
|
73
|
+
sleep 0.01
|
65
74
|
expect(returned).to eq('returning a thing')
|
66
75
|
expect(socket).to have_received(:send).with(line, 0)
|
67
76
|
end
|
@@ -74,7 +83,7 @@ describe Tremolo::Tracker do
|
|
74
83
|
|
75
84
|
line = 'alf.timing.accounts.created value=14'
|
76
85
|
|
77
|
-
sleep 0.
|
86
|
+
sleep 0.01
|
78
87
|
expect(socket).to have_received(:send).with(line, 0)
|
79
88
|
end
|
80
89
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tremolo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Pitale
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: celluloid-io
|