leafy-metrics 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: 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: