rubycut-metriks 0.9.9.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+ require 'thread_error_handling_tests'
3
+
4
+ require 'metriks/reporter/librato_metrics'
5
+
6
+ class LibratoMetricsReporterTest < Test::Unit::TestCase
7
+ include ThreadErrorHandlingTests
8
+
9
+ def build_reporter(options={})
10
+ Metriks::Reporter::LibratoMetrics.new('user', 'password', { :registry => @registry }.merge(options))
11
+ end
12
+
13
+ def setup
14
+ @registry = Metriks::Registry.new
15
+ @reporter = build_reporter
16
+ end
17
+
18
+ def teardown
19
+ @reporter.stop
20
+ @registry.stop
21
+ end
22
+
23
+ def test_write
24
+ @registry.meter('meter.testing').mark
25
+ @registry.counter('counter.testing').increment
26
+ @registry.timer('timer.testing').update(1.5)
27
+ @registry.histogram('histogram.testing').update(1.5)
28
+ @registry.utilization_timer('utilization_timer.testing').update(1.5)
29
+ @registry.gauge('gauge.testing') { 123 }
30
+
31
+ @reporter.expects(:submit)
32
+
33
+ @reporter.write
34
+ end
35
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+ require 'thread_error_handling_tests'
3
+
4
+ require 'logger'
5
+ require 'metriks/reporter/logger'
6
+
7
+ class LoggerReporterTest < Test::Unit::TestCase
8
+ include ThreadErrorHandlingTests
9
+
10
+ def build_reporter(options={})
11
+ Metriks::Reporter::Logger.new({ :registry => @registry, :logger => @logger }.merge(options))
12
+ end
13
+
14
+ def setup
15
+ @stringio = StringIO.new
16
+ @logger = ::Logger.new(@stringio)
17
+ @registry = Metriks::Registry.new
18
+
19
+ @reporter = build_reporter
20
+
21
+ @registry.meter('meter.testing').mark
22
+ @registry.counter('counter.testing').increment
23
+ @registry.timer('timer.testing').update(1.5)
24
+ @registry.histogram('histogram.testing').update(1.5)
25
+ @registry.utilization_timer('utilization_timer.testing').update(1.5)
26
+ @registry.gauge('gauge.testing').set(123)
27
+ end
28
+
29
+ def teardown
30
+ @reporter.stop
31
+ @registry.stop
32
+ end
33
+
34
+ def test_write
35
+ @reporter.write
36
+
37
+ assert_match /time=\d/, @stringio.string
38
+ assert_match /median=\d/, @stringio.string
39
+ assert_match /value=123/, @stringio.string
40
+ end
41
+
42
+ def test_flush
43
+ @reporter.flush
44
+
45
+ assert_match /time=\d/, @stringio.string
46
+ assert_match /median=\d/, @stringio.string
47
+ assert_match /value=123/, @stringio.string
48
+ end
49
+ end
@@ -0,0 +1,38 @@
1
+ require 'test_helper'
2
+
3
+ require 'metriks/meter'
4
+
5
+ class MeterTest < Test::Unit::TestCase
6
+ include ThreadHelper
7
+
8
+ def setup
9
+ @meter = Metriks::Meter.new
10
+ end
11
+
12
+ def teardown
13
+ @meter.stop
14
+ end
15
+
16
+ def test_meter
17
+ @meter.mark
18
+
19
+ assert_equal 1, @meter.count
20
+ end
21
+
22
+ def test_meter_threaded
23
+ thread 10, :n => 100 do
24
+ @meter.mark
25
+ end
26
+
27
+ assert_equal 1000, @meter.count
28
+ end
29
+
30
+ def test_one_minute_rate
31
+ @meter.mark 1000
32
+
33
+ # Pretend it's been 5 seconds
34
+ @meter.tick
35
+
36
+ assert_equal 200, @meter.one_minute_rate
37
+ end
38
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ class MetriksTest < Test::Unit::TestCase
4
+ def setup
5
+ Metriks::Registry.default.clear
6
+ end
7
+
8
+ def teardown
9
+ Metriks::Registry.default.clear
10
+ end
11
+
12
+ def test_counter
13
+ assert_not_nil Metriks.counter('testing')
14
+ end
15
+
16
+ def test_meter
17
+ assert_not_nil Metriks.meter('testing')
18
+ end
19
+
20
+ def test_timer
21
+ assert_not_nil Metriks.timer('testing')
22
+ end
23
+
24
+ def test_utilization_timer
25
+ assert_not_nil Metriks.utilization_timer('testing')
26
+ end
27
+
28
+ def test_histogram
29
+ assert_not_nil Metriks.histogram('testing')
30
+ end
31
+ end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ require 'metriks/reporter/proc_title'
4
+
5
+ class ProcTitleReporterTest < Test::Unit::TestCase
6
+ def setup
7
+ @reporter = Metriks::Reporter::ProcTitle.new
8
+ @original_proctitle = $0.dup
9
+ end
10
+
11
+ def teardown
12
+ @reporter.stop
13
+ $0 = @original_proctitle
14
+ end
15
+
16
+ def test_generate_title
17
+ @reporter.add 'test', 'sec' do
18
+ 50.333
19
+ end
20
+
21
+ title = @reporter.send(:generate_title)
22
+
23
+ assert_equal 'test: 50.3/sec', title
24
+ end
25
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ require 'metriks/registry'
4
+
5
+ class RegistryTest < Test::Unit::TestCase
6
+ def setup
7
+ @registry = Metriks::Registry.new
8
+ end
9
+
10
+ def teardown
11
+ @registry.stop
12
+ end
13
+
14
+ def test_counter
15
+ assert_not_nil @registry.counter('testing')
16
+ end
17
+
18
+ def test_meter
19
+ assert_not_nil @registry.meter('testing')
20
+ end
21
+
22
+ def test_timer
23
+ assert_not_nil @registry.timer('testing')
24
+ end
25
+
26
+ def test_utilization_timer
27
+ assert_not_nil @registry.utilization_timer('testing')
28
+ end
29
+
30
+ def test_histogram
31
+ assert_not_nil @registry.histogram('testing')
32
+ end
33
+
34
+ def test_mismatched_metrics
35
+ @registry.histogram('histogram')
36
+ assert_raises(RuntimeError) { @registry.timer('histogram') }
37
+
38
+ @registry.timer('timer')
39
+ assert_raises(RuntimeError) { @registry.histogram('timer') }
40
+ end
41
+
42
+ def test_calling_counter_twice
43
+ assert_not_nil @registry.counter('testing')
44
+ end
45
+
46
+ def test_default
47
+ assert_not_nil Metriks::Registry.default
48
+ end
49
+ end
@@ -0,0 +1,88 @@
1
+ require 'test_helper'
2
+ require 'thread_error_handling_tests'
3
+
4
+ require 'metriks/reporter/riemann'
5
+
6
+ class RiemannReporterTest < Test::Unit::TestCase
7
+ include ThreadErrorHandlingTests
8
+
9
+ def build_reporter(options={})
10
+ Metriks::Reporter::Riemann.new({
11
+ :host => "foo",
12
+ :port => 1234,
13
+ :registry => @registry,
14
+ :default_event => {:host => "h"}
15
+ }.merge(options))
16
+ end
17
+
18
+ def setup
19
+ @registry = Metriks::Registry.new
20
+ @reporter = build_reporter
21
+ end
22
+
23
+ def teardown
24
+ @reporter.stop
25
+ @registry.stop
26
+ end
27
+
28
+ def test_init
29
+ assert_equal @reporter.client.host, "foo"
30
+ assert_equal @reporter.client.port, 1234
31
+ end
32
+
33
+ def test_write
34
+ @registry.meter('meter.testing').mark
35
+ @registry.counter('counter.testing').increment
36
+ @registry.timer('timer.testing').update(1.5)
37
+ @registry.histogram('histogram.testing').update(1.5)
38
+ @registry.utilization_timer('utilization_timer.testing').update(1.5)
39
+ @registry.gauge('gauge.testing') { 123 }
40
+
41
+ @reporter.client.expects(:<<).at_least_once
42
+ @reporter.client.expects(:<<).with(
43
+ :host => "h",
44
+ :service => "meter.testing count",
45
+ :metric => 1,
46
+ :tags => ["meter"],
47
+ :ttl => 90
48
+ )
49
+ @reporter.client.expects(:<<).with(
50
+ :host => "h",
51
+ :service => "counter.testing count",
52
+ :metric => 1,
53
+ :tags => ["counter"],
54
+ :ttl => 90
55
+ )
56
+ @reporter.client.expects(:<<).with(
57
+ :host => "h",
58
+ :service => "timer.testing max",
59
+ :metric => 1.5,
60
+ :tags => ["timer"],
61
+ :ttl => 90
62
+ )
63
+ @reporter.client.expects(:<<).with(
64
+ :host => "h",
65
+ :service => "histogram.testing max",
66
+ :metric => 1.5,
67
+ :tags => ["histogram"],
68
+ :ttl => 90
69
+ )
70
+ @reporter.client.expects(:<<).with(
71
+ :host => "h",
72
+ :service => "utilization_timer.testing mean",
73
+ :metric => 1.5,
74
+ :tags => ["utilization_timer"],
75
+ :ttl => 90
76
+ )
77
+
78
+ @reporter.client.expects(:<<).with(
79
+ :host => "h",
80
+ :service => "gauge.testing value",
81
+ :metric => 123,
82
+ :tags => ["gauge"],
83
+ :ttl => 90
84
+ )
85
+
86
+ @reporter.write
87
+ end
88
+ end
@@ -0,0 +1,33 @@
1
+ require 'test/unit'
2
+ require 'pp'
3
+
4
+ require 'mocha'
5
+
6
+ require 'metriks'
7
+
8
+ Thread.abort_on_exception = true
9
+
10
+ module ThreadHelper
11
+ require 'thread'
12
+
13
+ # Run the given block on n threads in parallel. Returns an array of the
14
+ # return values of each thread's last invocation of block. Options:
15
+
16
+ # :n: call block n times per thread. Default 1.
17
+ def thread(threads = 2, opts = {})
18
+ n = opts[:n] || 1
19
+ results = []
20
+
21
+ threads.times.map do |i|
22
+ Thread.new do
23
+ n.times do
24
+ results[i] = yield i
25
+ end
26
+ end
27
+ end.each do |thread|
28
+ thread.join
29
+ end
30
+
31
+ results
32
+ end
33
+ end
@@ -0,0 +1,20 @@
1
+ module ThreadErrorHandlingTests
2
+ def test_passes_errors_in_thread_loop_to_on_error_handler
3
+ rescued_error = nil
4
+ error_handler_called = false
5
+ reporter = build_reporter(:interval => 0.0001, :on_error => lambda { |e|
6
+ error_handler_called = true
7
+ rescued_error = e
8
+ })
9
+
10
+ reporter.stubs(:write).raises(StandardError, "boom")
11
+
12
+ reporter.start
13
+ sleep 0.2
14
+ assert_equal true, error_handler_called
15
+ assert_equal "boom", rescued_error.message
16
+ ensure
17
+ reporter.stop
18
+ end
19
+ end
20
+
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ require 'metriks/timer'
4
+
5
+ class TimerTest < Test::Unit::TestCase
6
+ def setup
7
+ @timer = Metriks::Timer.new
8
+ end
9
+
10
+ def teardown
11
+ @timer.stop
12
+ end
13
+
14
+ def test_timer
15
+ 3.times do
16
+ @timer.time do
17
+ sleep 0.1
18
+ end
19
+ end
20
+
21
+ assert_in_delta 0.1, @timer.mean, 0.01
22
+ assert_in_delta 0.1, @timer.snapshot.median, 0.01
23
+ end
24
+
25
+ def test_timer_without_block
26
+ t = @timer.time
27
+ sleep 0.1
28
+ t.stop
29
+
30
+ assert_in_delta 0.1, @timer.mean, 0.01
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ require 'metriks/utilization_timer'
4
+
5
+ class UtilizationTimerTest < Test::Unit::TestCase
6
+ def setup
7
+ @timer = Metriks::UtilizationTimer.new
8
+ end
9
+
10
+ def teardown
11
+ @timer.stop
12
+ end
13
+
14
+ def test_timer
15
+ 5.times do
16
+ @timer.update(0.10)
17
+ @timer.update(0.15)
18
+ end
19
+
20
+ @timer.instance_variable_get(:@meter).tick
21
+ @timer.instance_variable_get(:@duration_meter).tick
22
+
23
+ assert_in_delta 0.25, @timer.one_minute_utilization, 0.1
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubycut-metriks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.9.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Lindvall
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: atomic
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: hitimes
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.1'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.1'
46
+ - !ruby/object:Gem::Dependency
47
+ name: avl_tree
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.1.2
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: mocha
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '0.10'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.10'
78
+ description: An experimental metrics client.
79
+ email: eric@sevenscale.com
80
+ executables: []
81
+ extensions: []
82
+ extra_rdoc_files:
83
+ - README.md
84
+ - LICENSE
85
+ files:
86
+ - Gemfile
87
+ - LICENSE
88
+ - README.md
89
+ - Rakefile
90
+ - benchmark/samplers.rb
91
+ - lib/metriks.rb
92
+ - lib/metriks/counter.rb
93
+ - lib/metriks/ewma.rb
94
+ - lib/metriks/exponentially_decaying_sample.rb
95
+ - lib/metriks/histogram.rb
96
+ - lib/metriks/meter.rb
97
+ - lib/metriks/registry.rb
98
+ - lib/metriks/reporter/graphite.rb
99
+ - lib/metriks/reporter/librato_metrics.rb
100
+ - lib/metriks/reporter/logger.rb
101
+ - lib/metriks/reporter/proc_title.rb
102
+ - lib/metriks/reporter/riemann.rb
103
+ - lib/metriks/simple_moving_average.rb
104
+ - lib/metriks/snapshot.rb
105
+ - lib/metriks/time_tracker.rb
106
+ - lib/metriks/timer.rb
107
+ - lib/metriks/uniform_sample.rb
108
+ - lib/metriks/utilization_timer.rb
109
+ - metriks.gemspec
110
+ - test/counter_test.rb
111
+ - test/graphite_reporter_test.rb
112
+ - test/histogram_test.rb
113
+ - test/librato_metrics_reporter_test.rb
114
+ - test/logger_reporter_test.rb
115
+ - test/meter_test.rb
116
+ - test/metriks_test.rb
117
+ - test/proc_title_reporter_test.rb
118
+ - test/registry_test.rb
119
+ - test/riemann_reporter_test.rb
120
+ - test/test_helper.rb
121
+ - test/thread_error_handling_tests.rb
122
+ - test/timer_test.rb
123
+ - test/utilization_timer_test.rb
124
+ homepage: https://github.com/eric/metriks
125
+ licenses: []
126
+ post_install_message:
127
+ rdoc_options:
128
+ - --charset=UTF-8
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 1.8.25
146
+ signing_key:
147
+ specification_version: 2
148
+ summary: An experimental metrics client
149
+ test_files:
150
+ - test/counter_test.rb
151
+ - test/graphite_reporter_test.rb
152
+ - test/histogram_test.rb
153
+ - test/librato_metrics_reporter_test.rb
154
+ - test/logger_reporter_test.rb
155
+ - test/meter_test.rb
156
+ - test/metriks_test.rb
157
+ - test/proc_title_reporter_test.rb
158
+ - test/registry_test.rb
159
+ - test/riemann_reporter_test.rb
160
+ - test/timer_test.rb
161
+ - test/utilization_timer_test.rb