leafy-metrics 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32f03a451482abd7703260a77742d3e6673fa1f6
4
- data.tar.gz: 353a861b96966a5b6c57103e6342de7360db0ecf
3
+ metadata.gz: 1ac83a37f745307ff29ef7d0e559d89632e7b7bb
4
+ data.tar.gz: 2cc48320d779ba09c1f1bf533ce3108b21e921d2
5
5
  SHA512:
6
- metadata.gz: 4c7af7eebe97349d2c17327efe778fa8d84f078fda748b3258a83284ad33579da965b7429c6cad0b3d8589aa048fd8dec88a8a95da9c92e66f5fd3c76d402376
7
- data.tar.gz: e974467905d84881a2213ede5ccef40bed73de429046080b5a7def0a305ff174ecaceedd8bf6c413801f95ce001dfb05b0fd93d3f12549079cccc5c29dc2ef33
6
+ metadata.gz: 57698bae6c946a20f92414c8971fc172b1a46c8355a0161590e7708860e2be39448fb3e636dba297e2db32200e3d4bc3728d85905b3ea46567421e0e73eb8300
7
+ data.tar.gz: aa163bba6d45bf4c98c3d0f3cf6600744c00f018f5dc1ded730bee8c8af1f69cb71b38c5e51b3a5e8e6172812ff1103d9ced62ce3e8953614fd33a2917f1ca18
data/README.md CHANGED
@@ -111,25 +111,33 @@ in all examples below ```metrics = Leafy::Metrics::Registry.new```
111
111
  ### console reporter
112
112
 
113
113
  require 'leafy/metrics/console_reporter'
114
- reporter = Leafy::Metrics::ConsoleReporter.for_registry( metrics ).build
114
+ reporter = metrics.reporter_builder( Leafy::Metrics::ConsoleReporter ).build
115
115
  reporter.start( 1, Leafy::Metrics::Reporter::SECONDS )
116
116
  ....
117
117
  reporter.stop
118
118
 
119
119
  or with all the possible configuration
120
120
 
121
- reporter = Leafy::Metrics::ConsoleReporter.for_registry( metrics )
121
+ reporter = metrics.reporter_builder( Leafy::Metrics::ConsoleReporter )
122
122
  .convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
123
123
  .convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
124
124
  .output_to( STDERR )
125
125
  .build
126
126
 
127
+ or the config via a block
128
+
129
+ reporter = metrics.reporter_builder( Leafy::Metrics::ConsoleReporter ) do
130
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
131
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
132
+ output_to( STDERR )
133
+ end.build
134
+
127
135
  ### csv reporter
128
136
 
129
137
  for each metric there will be a CSV file inside a given directory
130
138
 
131
139
  require 'leafy/metrics/csv_reporter'
132
- reporter = Leafy::Metrics::CSVReporter.for_registry( metrics )
140
+ reporter = metrics.reporter_builder( Leafy::Metrics::CSVReporter )
133
141
  .build( 'metrics/directory' )
134
142
  reporter.start( 1, Leafy::Metrics::Reporter::SECONDS )
135
143
  ....
@@ -137,11 +145,18 @@ for each metric there will be a CSV file inside a given directory
137
145
 
138
146
  or with all possible configuration
139
147
 
140
- reporter = Leafy::Metrics::CSVReporter.for_registry( metrics )
148
+ reporter = metrics.reporter_builder( Leafy::Metrics::CSVReporter )
141
149
  .convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
142
150
  .convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
143
151
  .build( 'metrics/directory' )
144
152
 
153
+ or configuration via block
154
+
155
+ reporter = metrics.reporter_builder( Leafy::Metrics::CSVReporter ) do
156
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
157
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
158
+ end.build( 'metrics/directory' )
159
+
145
160
  ### graphite reporter
146
161
 
147
162
  there are three targets where to send the data
@@ -153,20 +168,43 @@ there are three targets where to send the data
153
168
  the latter is collecting a few report event and sends them as batch. the ```sender``` is one of the above targets.
154
169
 
155
170
  require 'leafy/metrics/graphite_reporter'
156
- reporter = Leafy::Metrics::GraphiteReporter.for_registry( metrics )
157
- .build( sender )
171
+ reporter = metrics.reporter_builder( Leafy::Metrics::GraphiteReporter )
172
+ .build_tcp( hostname, port )
158
173
  reporter.start( 1, Leafy::Metrics::Reporter::SECONDS )
159
174
  ....
160
175
  reporter.stop
161
176
 
162
177
  or with full configuration
163
178
 
164
- reporter = Leafy::Metrics::GraphiteReporter.for_registry( metrics )
179
+ reporter = metrics.reporter_builder( Leafy::Metrics::GraphiteReporter )
165
180
  .convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
166
181
  .convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
167
182
  .prefixed_with( 'myapp' )
168
183
  .build( sender )
169
184
 
185
+ or with block configuration
186
+
187
+ reporter = metrics.reporter_builder( Leafy::Metrics::GraphiteReporter ) do
188
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
189
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
190
+ prefixed_with( 'myapp' )
191
+ end.build_udp( host, port )
192
+
193
+ ### any third party reporter
194
+
195
+ reporter = metrics.reporter_builder( com.readytalk.metrics.StatsDReporter ) do
196
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
197
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
198
+ end.build( host, port )
199
+
200
+ or using the Java module reference
201
+
202
+ reporter = metrics.reporter_builder( Java::ComReadytalkMetrics::StatsDReporter ) do
203
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
204
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
205
+ prefixed_with( 'app' )
206
+ end.build( host, port )
207
+
170
208
  ## developement
171
209
 
172
210
  get all the gems and jars in place
@@ -20,6 +20,18 @@ module Leafy
20
20
  def build( graphite )
21
21
  Reporter.new( @builder.build( graphite.sender ) )
22
22
  end
23
+
24
+ def build_tcp( host, port )
25
+ build( Leafy::Metrics::Graphite.new_tcp( host, port ) )
26
+ end
27
+
28
+ def build_udp( host, port )
29
+ build( Leafy::Metrics::Graphite.new_udp( host, port ) )
30
+ end
31
+
32
+ def build_pickled( host, port )
33
+ build( Leafy::Metrics::Graphite.new_pickled( host, port ) )
34
+ end
23
35
  end
24
36
 
25
37
  def self.for_registry( metrics )
@@ -91,6 +91,12 @@ module Leafy
91
91
  def remove( name )
92
92
  @metrics.remove( name )
93
93
  end
94
+
95
+ def reporter_builder( clazz, &block )
96
+ r = clazz.for_registry( @metrics )
97
+ r.instance_eval( &block ) if block
98
+ r
99
+ end
94
100
  end
95
101
  end
96
102
  end
@@ -28,7 +28,10 @@ module Leafy
28
28
 
29
29
  class Builder
30
30
  def initialize( reporter_class, metrics )
31
- @builder = reporter_class.for_registry( metrics.metrics )
31
+ # stay backward compatible
32
+ # FIXME remove for first proper release
33
+ metrics = metrics.metrics if metrics.is_a?( Leafy::Metrics::Registry )
34
+ @builder = reporter_class.for_registry( metrics )
32
35
  self
33
36
  end
34
37
 
@@ -1,6 +1,6 @@
1
1
  module Leafy
2
2
  module Metrics
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
6
-
6
+
@@ -13,10 +13,10 @@ describe Leafy::Metrics::ConsoleReporter do
13
13
  bytes = StringIO.new
14
14
  java.lang.System.out = java.io.PrintStream.new( bytes.to_outputstream )
15
15
  begin
16
- reporter = subject.for_registry( metrics ).build
16
+ reporter = metrics.reporter_builder( subject ).build
17
17
  requests.mark
18
18
  reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
19
- sleep 0.01
19
+ sleep 0.02
20
20
  reporter.stop
21
21
  result = bytes.string.gsub( /\n/m, '')
22
22
  expect( result ).to match /count = 1/
@@ -27,10 +27,10 @@ describe Leafy::Metrics::ConsoleReporter do
27
27
  end
28
28
  end
29
29
 
30
- it 'run reporter' do
30
+ it 'run reporter via builder config' do
31
31
  bytes = StringIO.new
32
32
  begin
33
- reporter = subject.for_registry( metrics )
33
+ reporter = metrics.reporter_builder( subject )
34
34
  .convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
35
35
  .convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
36
36
  .output_to( bytes )
@@ -38,8 +38,29 @@ describe Leafy::Metrics::ConsoleReporter do
38
38
 
39
39
  requests.mark
40
40
  reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
41
- sleep 0.01
42
- reporter.stop
41
+ sleep 0.02
42
+ reporter.stop
43
+ result = bytes.string.gsub( /\n/m, '')
44
+ expect( result ).to match /count = 1/
45
+ expect( result ).to match /millisecond/
46
+ ensure
47
+ reporter.stop if reporter
48
+ end
49
+ end
50
+
51
+ it 'run reporter via block config' do
52
+ bytes = StringIO.new
53
+ begin
54
+ reporter = metrics.reporter_builder( subject ) do
55
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
56
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
57
+ output_to( bytes )
58
+ end.build
59
+
60
+ requests.mark
61
+ reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
62
+ sleep 0.02
63
+ reporter.stop
43
64
  result = bytes.string.gsub( /\n/m, '')
44
65
  expect( result ).to match /count = 1/
45
66
  expect( result ).to match /millisecond/
@@ -18,10 +18,10 @@ describe Leafy::Metrics::CSVReporter do
18
18
 
19
19
  it 'run reporter with defaults' do
20
20
  begin
21
- reporter = subject.for_registry( metrics ).build( tmpdir )
21
+ reporter = metrics.reporter_builder( subject ).build( tmpdir )
22
22
  requests.mark
23
23
  reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
24
- sleep 0.01
24
+ sleep 0.02
25
25
  reporter.stop
26
26
  result = File.read( csvfile )
27
27
  expect( result ).to match /t,count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit/
@@ -32,17 +32,37 @@ describe Leafy::Metrics::CSVReporter do
32
32
  end
33
33
  end
34
34
 
35
- it 'run reporter' do
35
+ it 'run reporter via builder config' do
36
36
  begin
37
- reporter = subject.for_registry( metrics )
37
+ reporter = metrics.reporter_builder( subject )
38
38
  .convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
39
39
  .convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
40
40
  .build( tmpdir )
41
41
 
42
42
  requests.mark
43
43
  reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
44
- sleep 0.01
45
- reporter.stop
44
+ sleep 0.02
45
+ reporter.stop
46
+ result = File.read( csvfile )
47
+ expect( result ).to match /t,count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit/
48
+ expect( result ).to match /second/
49
+ ensure
50
+ FileUtils.rm_rf( tmpdir )
51
+ reporter.stop if reporter
52
+ end
53
+ end
54
+
55
+ it 'run reporter via block config' do
56
+ begin
57
+ reporter = metrics.reporter_builder( subject ) do
58
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
59
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
60
+ end.build( tmpdir )
61
+
62
+ requests.mark
63
+ reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
64
+ sleep 0.02
65
+ reporter.stop
46
66
  result = File.read( csvfile )
47
67
  expect( result ).to match /t,count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit/
48
68
  expect( result ).to match /second/
@@ -16,32 +16,53 @@ describe Leafy::Metrics::GraphiteReporter do
16
16
  it 'run reporter with defaults' do
17
17
  log = File.read( logfile )
18
18
  begin
19
- reporter = subject.for_registry( metrics ).build( graphite )
19
+ reporter = metrics.reporter_builder( subject ).build( graphite )
20
20
  requests.mark
21
21
  reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
22
- sleep 0.01
22
+ sleep 0.02
23
23
  reporter.stop
24
24
  result = File.read( logfile )[ (log.size)..-1 ]
25
- expect( result ).to match /metrics-graphite-reporter-.-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
25
+ expect( result ).to match /metrics-graphite-reporter-.+-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
26
26
  ensure
27
27
  reporter.stop if reporter
28
28
  end
29
29
  end
30
30
 
31
- it 'run reporter' do
31
+ it 'run reporter via builder config' do
32
32
  log = File.read( logfile )
33
33
  begin
34
- reporter = subject.for_registry( metrics )
34
+ reporter = metrics.reporter_builder( subject )
35
35
  .convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
36
36
  .convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
37
+ .prefixed_with( 'myapp' )
37
38
  .build( graphite )
38
-
39
+
40
+ requests.mark
41
+ reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
42
+ sleep 0.02
43
+ reporter.stop
44
+ result = File.read( logfile )[ (log.size)..-1 ]
45
+ expect( result ).to match /metrics-graphite-reporter-.+-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
46
+ ensure
47
+ reporter.stop if reporter
48
+ end
49
+ end
50
+
51
+ it 'run reporter via block config' do
52
+ log = File.read( logfile )
53
+ begin
54
+ reporter = metrics.reporter_builder( subject ) do
55
+ convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
56
+ convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
57
+ prefixed_with( 'myapp' )
58
+ end.build( graphite )
59
+
39
60
  requests.mark
40
61
  reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
41
- sleep 0.01
42
- reporter.stop
62
+ sleep 0.02
63
+ reporter.stop
43
64
  result = File.read( logfile )[ (log.size)..-1 ]
44
- expect( result ).to match /metrics-graphite-reporter-.-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
65
+ expect( result ).to match /metrics-graphite-reporter-.+-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
45
66
  ensure
46
67
  reporter.stop if reporter
47
68
  end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leafy-metrics
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
  - christian meier
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-19 00:00:00.000000000 Z
11
+ date: 2015-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: jar-dependencies
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ~>
18
17
  - !ruby/object:Gem::Version
19
18
  version: 0.1.8
20
- type: :runtime
19
+ name: jar-dependencies
21
20
  prerelease: false
21
+ type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.1.8
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ~>
32
31
  - !ruby/object:Gem::Version
33
32
  version: 3.1.0
34
- type: :development
33
+ name: rspec
35
34
  prerelease: false
35
+ type: :development
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: yard
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
44
+ - - ~>
46
45
  - !ruby/object:Gem::Version
47
46
  version: 0.8.7
48
- type: :development
47
+ name: yard
49
48
  prerelease: false
49
+ type: :development
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.8.7
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - "~>"
58
+ - - ~>
60
59
  - !ruby/object:Gem::Version
61
60
  version: '10.2'
62
- type: :development
61
+ name: rake
63
62
  prerelease: false
63
+ type: :development
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.2'
69
69
  description: 'provides an API to register metrics like meters, timers, gauge, counter
@@ -75,7 +75,7 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
- - ".gitignore"
78
+ - .gitignore
79
79
  - Gemfile
80
80
  - LICENSE
81
81
  - README.md
@@ -101,27 +101,28 @@ homepage: https://github.com/lookout/leafy
101
101
  licenses:
102
102
  - MIT
103
103
  metadata: {}
104
- post_install_message:
104
+ post_install_message:
105
105
  rdoc_options: []
106
106
  require_paths:
107
107
  - lib
108
108
  required_ruby_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ">="
110
+ - - '>='
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  requirements:
119
119
  - jar io.dropwizard.metrics:metrics-core, 3.1.0
120
120
  - jar io.dropwizard.metrics:metrics-graphite, 3.1.0
121
121
  - jar org.slf4j, slf4j-simple, 1.7.7, :scope => :test
122
- rubyforge_project:
122
+ rubyforge_project:
123
123
  rubygems_version: 2.4.5
124
- signing_key:
124
+ signing_key:
125
125
  specification_version: 4
126
126
  summary: provide an API to register metrics
127
127
  test_files: []
128
+ has_rdoc: