rubyperf 1.4.0 → 1.5.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.
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