tremolo 0.1.0 → 0.2.0

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: 8cd301464b545211094d14f81fb7f5fabae6ee2b
4
- data.tar.gz: 3f00b4c4eef1277501e6ba5107c4a87a0a7ae07c
3
+ metadata.gz: ac99676944c67bc64c93a2297aa481518119d8cf
4
+ data.tar.gz: a4f670b8c599a4f4ea57208f4647a82cbc77cd6e
5
5
  SHA512:
6
- metadata.gz: bfb314678ffd0ac4ce31be0cb679c6153f02ef1bed74665a7870bfaa0a02bc585e2b0138d8d6d807f1905db0277e014dab2a71913a6b03c00da6ea043e18ba69
7
- data.tar.gz: 0eb35699d48509e6d2d363b87683d50d7c6591ee1193cf76cb3c6a6dc1070aa770fbe510e7446d3bcf7c50d53072cd2e30e80a16daf45d18569186b38eb1954c
6
+ metadata.gz: 13ea2e22c5062d2c91626b90776126ee8fd15272197ea03621128b04ede7903acedfd0503fc9d85715ad12a264638d18bd9fbb153d0c23fb5dda768302bba993
7
+ data.tar.gz: 606d586a2bc999e0c7cc5e276609421bf449265f0e89fbabeb4d7115508c58b86bab5885d5feb95b7877f4321358efbd0e70c64d6ce860d68a14db6ca855b2de
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Tremolo 0.2.0 ##
2
+
3
+ * Adds tags to `Tracker` and `Series`
4
+
5
+ *Tony Pitale*
6
+
1
7
  ## Tremolo 0.1.0 ##
2
8
 
3
9
  * Wireline compatibility with Influxdb 0.9 series
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
@@ -1,27 +1,51 @@
1
1
  module Tremolo
2
2
  class DataPoint
3
- attr_accessor :series_name, :data, :time
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
- def values
12
- @data.map {|h| h.map {|k,v| "#{k}=#{cast(v)}" }.join(',')}
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 line
20
- @line ||= lambda {|values| [series_name, values, time].compact.join(' ')}
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 lines
24
- values.map {|v| line.call(v)}.join("\n")
47
+ def value_mapper
48
+ lambda { |k,v| "#{k}=#{cast(v)}" }
25
49
  end
26
50
  end
27
51
  end
@@ -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
@@ -7,17 +7,17 @@ module Tremolo
7
7
  @socket.connect(host, port) # client
8
8
  end
9
9
 
10
- def write_points(series_name, data)
10
+ def write_points(series_name, values, tags = {})
11
11
  begin
12
- @socket.send(prepare(series_name, data), 0)
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, data)
20
- DataPoint.new(series_name, data).lines
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
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Tremolo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.1.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-03 00:00:00.000000000 Z
11
+ date: 2015-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid-io