right_support 2.8.7 → 2.8.8
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 +1 -1
- data/lib/right_support/net/request_balancer.rb +2 -0
- data/lib/right_support/stats/activity.rb +21 -3
- data/right_support.gemspec +2 -2
- data/spec/stats/activity_spec.rb +33 -0
- metadata +4 -4
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2.8. | 
| 1 | 
            +
            2.8.8
         | 
| @@ -69,14 +69,13 @@ module RightSupport::Stats | |
| 69 69 | 
             
                # Ignore the update if its type contains "stats"
         | 
| 70 70 | 
             
                #
         | 
| 71 71 | 
             
                # @param type [String, Symbol] Type of activity, with anything that is not a symbol, true, or false
         | 
| 72 | 
            -
                #   automatically converted to a String and truncated to MAX_TYPE_SIZE characters | 
| 73 | 
            -
                #   defaults to nil
         | 
| 72 | 
            +
                #   automatically converted to a String and truncated to MAX_TYPE_SIZE characters; defaults to nil
         | 
| 74 73 | 
             
                # @param id [String] Unique identifier associated with this activity
         | 
| 75 74 | 
             
                #
         | 
| 76 75 | 
             
                # @return [Time] Update time
         | 
| 77 76 | 
             
                def update(type = nil, id = nil)
         | 
| 78 77 | 
             
                  now = Time.now
         | 
| 79 | 
            -
                  if type.nil? ||  | 
| 78 | 
            +
                  if type.nil? || type !~ /stats/
         | 
| 80 79 | 
             
                    @interval = average(@interval, now - @last_start_time) if @measure_rate
         | 
| 81 80 | 
             
                    @last_start_time = now
         | 
| 82 81 | 
             
                    @total += 1
         | 
| @@ -108,6 +107,25 @@ module RightSupport::Stats | |
| 108 107 | 
             
                  duration
         | 
| 109 108 | 
             
                end
         | 
| 110 109 |  | 
| 110 | 
            +
                # Update activity and measure its duration
         | 
| 111 | 
            +
                #
         | 
| 112 | 
            +
                # @param type [String, Symbol] Type of activity, with anything that is not a symbol, true, or false
         | 
| 113 | 
            +
                #   automatically converted to a String and truncated to MAX_TYPE_SIZE characters; defaults to nil
         | 
| 114 | 
            +
                # @param id [String] Unique identifier associated with this activity
         | 
| 115 | 
            +
                #
         | 
| 116 | 
            +
                # @yield [] required block being measured
         | 
| 117 | 
            +
                #
         | 
| 118 | 
            +
                # @return [Object] Result from yield
         | 
| 119 | 
            +
                #
         | 
| 120 | 
            +
                # @raise [ArgumentError] block missing
         | 
| 121 | 
            +
                def measure(type, id)
         | 
| 122 | 
            +
                  raise ArgumentError, "block missing" unless block_given?
         | 
| 123 | 
            +
                  start_time = update(type, id)
         | 
| 124 | 
            +
                  result = yield
         | 
| 125 | 
            +
                  finish(start_time, id)
         | 
| 126 | 
            +
                  result
         | 
| 127 | 
            +
                end
         | 
| 128 | 
            +
             | 
| 111 129 | 
             
                # Convert average interval to average rate
         | 
| 112 130 | 
             
                #
         | 
| 113 131 | 
             
                # @return [Float, NilClass] Recent average rate, or nil if total is 0
         | 
    
        data/right_support.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = "right_support"
         | 
| 8 | 
            -
              s.version = "2.8. | 
| 8 | 
            +
              s.version = "2.8.8"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Tony Spataro", "Sergey Sergyenko", "Ryan Williamson", "Lee Kirchhoff", "Alexey Karpik", "Scott Messier"]
         | 
| 12 | 
            -
              s.date = " | 
| 12 | 
            +
              s.date = "2014-01-09"
         | 
| 13 13 | 
             
              s.description = "A toolkit of useful, reusable foundation code created by RightScale."
         | 
| 14 14 | 
             
              s.email = "support@rightscale.com"
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
    
        data/spec/stats/activity_spec.rb
    CHANGED
    
    | @@ -120,6 +120,11 @@ describe RightSupport::Stats::Activity do | |
| 120 120 | 
             
                  @stats.instance_variable_get(:@total).should == 1
         | 
| 121 121 | 
             
                  @stats.instance_variable_get(:@count_per_type).should == {}
         | 
| 122 122 | 
             
                end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                it "tracks the id associated with the update" do
         | 
| 125 | 
            +
                  @stats.update("test", "id")
         | 
| 126 | 
            +
                  @stats.instance_variable_get(:@last_id).should == "id"
         | 
| 127 | 
            +
                end
         | 
| 123 128 | 
             
              end
         | 
| 124 129 |  | 
| 125 130 | 
             
              context :finish do
         | 
| @@ -146,6 +151,34 @@ describe RightSupport::Stats::Activity do | |
| 146 151 | 
             
                end
         | 
| 147 152 | 
             
              end
         | 
| 148 153 |  | 
| 154 | 
            +
              context :measure do
         | 
| 155 | 
            +
                it "updates and finishes the activity" do
         | 
| 156 | 
            +
                  flexmock(Time).should_receive(:now).and_return(1000010, 1000020)
         | 
| 157 | 
            +
                  @stats.measure("test", "id") { }
         | 
| 158 | 
            +
                  @stats.instance_variable_get(:@interval).should == 1.0
         | 
| 159 | 
            +
                  @stats.instance_variable_get(:@last_start_time).should == @now + 10
         | 
| 160 | 
            +
                  @stats.instance_variable_get(:@total).should == 1
         | 
| 161 | 
            +
                  @stats.instance_variable_get(:@count_per_type).should == {"test" => 1}
         | 
| 162 | 
            +
                  @stats.instance_variable_get(:@last_id).should == 0
         | 
| 163 | 
            +
                  @stats.instance_variable_get(:@avg_duration).should == 1.0
         | 
| 164 | 
            +
                end
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                it "yields to the block" do
         | 
| 167 | 
            +
                  called = 0
         | 
| 168 | 
            +
                  flexmock(Time).should_receive(:now).and_return(1000010, 1000030)
         | 
| 169 | 
            +
                  @stats.measure("test", "id") { called += 1}
         | 
| 170 | 
            +
                  called.should == 1
         | 
| 171 | 
            +
                end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                it "returns the result of the yield" do
         | 
| 174 | 
            +
                  @stats.measure("test", "id") { 99 }.should == 99
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                it "raises exception if block is missing" do
         | 
| 178 | 
            +
                  lambda { @stats.measure("test", "id") }.should raise_error(ArgumentError, "block missing")
         | 
| 179 | 
            +
                end
         | 
| 180 | 
            +
              end
         | 
| 181 | 
            +
             | 
| 149 182 | 
             
              context :avg_rate do
         | 
| 150 183 | 
             
                it "converts interval to rate" do
         | 
| 151 184 | 
             
                  flexmock(Time).should_receive(:now).and_return(1000020)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: right_support
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 63
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 2
         | 
| 8 8 | 
             
              - 8
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 2.8. | 
| 9 | 
            +
              - 8
         | 
| 10 | 
            +
              version: 2.8.8
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Tony Spataro
         | 
| @@ -20,7 +20,7 @@ autorequire: | |
| 20 20 | 
             
            bindir: bin
         | 
| 21 21 | 
             
            cert_chain: []
         | 
| 22 22 |  | 
| 23 | 
            -
            date:  | 
| 23 | 
            +
            date: 2014-01-09 00:00:00 Z
         | 
| 24 24 | 
             
            dependencies: 
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 26 26 | 
             
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         |