rubyperf 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.5.0
@@ -79,6 +79,12 @@ module Perf
79
79
  @factory_options.merge!(options)
80
80
  end
81
81
 
82
+ # Clear factory options.
83
+
84
+ def clear_factory_options!
85
+ @factory_options.clear
86
+ end
87
+
82
88
  # If you use set_new_meters_options, or if you pass options to Perf::MeterFactory.get, you are setting options
83
89
  # only for if the meter is created. For this reason you might need to find out if the meter already exist.
84
90
 
@@ -116,5 +122,13 @@ module Perf
116
122
  @perf_meters.clear
117
123
  end
118
124
 
125
+ # Used by ProductionMeterFactory to return the instance ensuring that no Perf::Meters will be created if they
126
+ # do not exist.
127
+
128
+ def no_op_instance
129
+ @factory_options[:noop] = true
130
+ self
131
+ end
132
+
119
133
  end
120
134
  end
@@ -0,0 +1,11 @@
1
+ require "rubyperf"
2
+
3
+ module Perf
4
+ class ProductionMeterFactory
5
+
6
+ def self.instance
7
+ Perf::MeterFactory.instance.no_op_instance
8
+ end
9
+
10
+ end
11
+ end
@@ -5,6 +5,7 @@
5
5
  require 'perf/measure'
6
6
  require 'perf/meter'
7
7
  require 'perf/meter_factory'
8
+ require 'perf/production_meter_factory'
8
9
  require 'perf/no_op_meter'
9
10
  require 'perf/report_format'
10
11
  require 'perf/report_format_simple'
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rubyperf}
8
- s.version = "1.4.0"
8
+ s.version = "1.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["lpasqualis"]
12
- s.date = %q{2012-01-19}
12
+ s.date = %q{2012-01-22}
13
13
  s.description = %q{Used to easily measure the performance of blocks of Ruby code, expressions and methods; provides reporting in various formats}
14
14
  s.email = %q{lpasqualis@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "lib/perf/meter.rb",
28
28
  "lib/perf/meter_factory.rb",
29
29
  "lib/perf/no_op_meter.rb",
30
+ "lib/perf/production_meter_factory.rb",
30
31
  "lib/perf/report_format.rb",
31
32
  "lib/perf/report_format_html.rb",
32
33
  "lib/perf/report_format_list_of_measures.rb",
@@ -12,14 +12,14 @@ class PerfTestExample
12
12
  end
13
13
 
14
14
  def test_with_measure
15
- Perf::MeterFactory.get.measure(:test_with_measure_block) do
15
+ Perf::MeterFactory.instance.get.measure(:test_with_measure_block) do
16
16
  test(1,2,3)
17
17
  PerfTestExample.static_method
18
18
  end
19
19
  end
20
20
 
21
21
  def test_with_measure_static
22
- Perf::MeterFactory.get.measure(:test_with_measure_block) do
22
+ Perf::MeterFactory.instance.get.measure(:test_with_measure_block) do
23
23
  static_method
24
24
  end
25
25
  end
@@ -11,11 +11,12 @@ class TestMeterFactory < Test::Unit::TestCase
11
11
 
12
12
  def setup()
13
13
  Perf::MeterFactory.instance.clear_all!
14
+ Perf::MeterFactory.instance.clear_factory_options!
14
15
  end
15
16
 
16
17
  def teardown()
17
18
  Perf::MeterFactory.instance.clear_all!
18
- Perf::MeterFactory.instance.set_factory_options(:noop=>false)
19
+ Perf::MeterFactory.instance.clear_factory_options!
19
20
  end
20
21
 
21
22
  def test_noop
@@ -28,6 +29,28 @@ class TestMeterFactory < Test::Unit::TestCase
28
29
  assert m1.report_simple.nil?
29
30
  end
30
31
 
32
+ def test_production_meter_factory
33
+ # If we get the production factory first, the :noop option is set so the first get returns a NoOpMeter
34
+ m=Perf::ProductionMeterFactory.instance.get
35
+ assert m.is_a? Perf::NoOpMeter
36
+
37
+ # The second get, even with the MeterFactory, still returns a NoOpMeter
38
+ m=Perf::MeterFactory.instance.get
39
+ assert m.is_a? Perf::NoOpMeter
40
+
41
+ # If we clean everything up...
42
+ Perf::MeterFactory.instance.clear_all!
43
+ Perf::MeterFactory.instance.clear_factory_options!
44
+
45
+ # And we use MeterFactory as first get, we get a normal meter
46
+ m=Perf::MeterFactory.instance.get
47
+ assert m.is_a? Perf::Meter
48
+
49
+ # At this point ProductionFactory also gets a normal meter.
50
+ m=Perf::ProductionMeterFactory.instance.get
51
+ assert m.is_a? Perf::Meter
52
+ end
53
+
31
54
  def test_meter
32
55
  m=Perf::MeterFactory.instance.meter
33
56
  assert m.is_a? Perf::NoOpMeter
@@ -153,8 +153,8 @@ class TestPerfMeter < Test::Unit::TestCase
153
153
  end
154
154
 
155
155
  def test_methods_with_measure
156
- Perf::MeterFactory.clear_all!
157
- m=Perf::MeterFactory.get
156
+ Perf::MeterFactory.instance.clear_all!
157
+ m=Perf::MeterFactory.instance.get
158
158
  m.method_meters(PerfTestExample,[:test,:test_np,:test_with_measure],[:static_method]) do
159
159
  a=PerfTestExample.new
160
160
  a.test(1,2,3)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyperf
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 4
8
+ - 5
9
9
  - 0
10
- version: 1.4.0
10
+ version: 1.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - lpasqualis
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-19 00:00:00 -08:00
18
+ date: 2012-01-22 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -98,6 +98,7 @@ files:
98
98
  - lib/perf/meter.rb
99
99
  - lib/perf/meter_factory.rb
100
100
  - lib/perf/no_op_meter.rb
101
+ - lib/perf/production_meter_factory.rb
101
102
  - lib/perf/report_format.rb
102
103
  - lib/perf/report_format_html.rb
103
104
  - lib/perf/report_format_list_of_measures.rb