resque-metrics 0.0.2 → 0.0.3
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/Gemfile.lock +12 -9
- data/VERSION +1 -1
- data/lib/resque/metrics.rb +37 -3
- data/resque-metrics.gemspec +2 -2
- data/test/test_resque-metrics.rb +6 -0
- metadata +13 -13
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -4,20 +4,22 @@ GEM | |
| 4 4 | 
             
                archive-tar-minitar (0.5.2)
         | 
| 5 5 | 
             
                columnize (0.3.4)
         | 
| 6 6 | 
             
                git (1.2.5)
         | 
| 7 | 
            -
                jeweler (1.6. | 
| 7 | 
            +
                jeweler (1.6.4)
         | 
| 8 8 | 
             
                  bundler (~> 1.0)
         | 
| 9 9 | 
             
                  git (>= 1.2.5)
         | 
| 10 10 | 
             
                  rake
         | 
| 11 11 | 
             
                linecache19 (0.5.12)
         | 
| 12 12 | 
             
                  ruby_core_source (>= 0.1.4)
         | 
| 13 | 
            -
                minitest (2. | 
| 13 | 
            +
                minitest (2.8.0)
         | 
| 14 14 | 
             
                multi_json (1.0.3)
         | 
| 15 | 
            -
                rack (1.3. | 
| 16 | 
            -
                 | 
| 17 | 
            -
             | 
| 15 | 
            +
                rack (1.3.5)
         | 
| 16 | 
            +
                rack-protection (1.1.4)
         | 
| 17 | 
            +
                  rack
         | 
| 18 | 
            +
                rake (0.9.2.2)
         | 
| 19 | 
            +
                redis (2.2.2)
         | 
| 18 20 | 
             
                redis-namespace (1.0.3)
         | 
| 19 21 | 
             
                  redis (< 3.0.0)
         | 
| 20 | 
            -
                resque (1.19.0 | 
| 22 | 
            +
                resque (1.19.0)
         | 
| 21 23 | 
             
                  multi_json (~> 1.0)
         | 
| 22 24 | 
             
                  redis-namespace (~> 1.0.2)
         | 
| 23 25 | 
             
                  sinatra (>= 0.9.2)
         | 
| @@ -32,9 +34,10 @@ GEM | |
| 32 34 | 
             
                  ruby-debug-base19 (>= 0.11.19)
         | 
| 33 35 | 
             
                ruby_core_source (0.1.5)
         | 
| 34 36 | 
             
                  archive-tar-minitar (>= 0.5.2)
         | 
| 35 | 
            -
                sinatra (1. | 
| 36 | 
            -
                  rack (~> 1. | 
| 37 | 
            -
                   | 
| 37 | 
            +
                sinatra (1.3.1)
         | 
| 38 | 
            +
                  rack (>= 1.3.4, ~> 1.3)
         | 
| 39 | 
            +
                  rack-protection (>= 1.1.2, ~> 1.1)
         | 
| 40 | 
            +
                  tilt (>= 1.3.3, ~> 1.3)
         | 
| 38 41 | 
             
                tilt (1.3.3)
         | 
| 39 42 | 
             
                vegas (0.1.8)
         | 
| 40 43 | 
             
                  rack (>= 1.0.0)
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.0. | 
| 1 | 
            +
            0.0.3
         | 
    
        data/lib/resque/metrics.rb
    CHANGED
    
    | @@ -82,12 +82,22 @@ module Resque | |
| 82 82 | 
             
                  run_callback(:on_job_fork, job_class, queue, time)
         | 
| 83 83 | 
             
                end
         | 
| 84 84 |  | 
| 85 | 
            -
                def self.record_job_enqueue(job_class)
         | 
| 85 | 
            +
                def self.record_job_enqueue(job_class, *args)
         | 
| 86 86 | 
             
                  queue = Resque.queue_from_class(job_class)
         | 
| 87 87 | 
             
                  increment_metric "enqueue_count"
         | 
| 88 88 | 
             
                  increment_metric "enqueue_count:job:#{job_class}"
         | 
| 89 89 | 
             
                  increment_metric "enqueue_count:queue:#{queue}"
         | 
| 90 | 
            -
             | 
| 90 | 
            +
             | 
| 91 | 
            +
                  size = Resque.encode(args).length
         | 
| 92 | 
            +
                  redis.multi do
         | 
| 93 | 
            +
                    increment_metric "payload_size", size
         | 
| 94 | 
            +
                    increment_metric "payload_size:queue:#{queue}", size
         | 
| 95 | 
            +
                    increment_metric "payload_size:job:#{job_class}", size
         | 
| 96 | 
            +
                  end
         | 
| 97 | 
            +
                  set_metric "avg_payload_size", total_payload_size / total_enqueue_count
         | 
| 98 | 
            +
                  set_metric "avg_payload_size:queue:#{queue}", total_payload_size_by_queue(queue) / total_enqueue_count_by_queue(queue)
         | 
| 99 | 
            +
                  set_metric "avg_payload_size:job:#{job_class}", total_payload_size_by_job(job_class) / total_enqueue_count_by_job(job_class)
         | 
| 100 | 
            +
                  run_callback(:on_job_enqueue, job_class, queue, size)
         | 
| 91 101 | 
             
                  true
         | 
| 92 102 | 
             
                end
         | 
| 93 103 |  | 
| @@ -167,6 +177,30 @@ module Resque | |
| 167 177 | 
             
                  get_metric "job_count:job:#{job}"
         | 
| 168 178 | 
             
                end
         | 
| 169 179 |  | 
| 180 | 
            +
                def self.total_payload_size
         | 
| 181 | 
            +
                  get_metric "payload_size"
         | 
| 182 | 
            +
                end
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                def self.total_payload_size_by_queue(queue)
         | 
| 185 | 
            +
                  get_metric "payload_size:queue:#{queue}"
         | 
| 186 | 
            +
                end
         | 
| 187 | 
            +
             | 
| 188 | 
            +
                def self.total_payload_size_by_job(job)
         | 
| 189 | 
            +
                  get_metric "payload_size:job:#{job}"
         | 
| 190 | 
            +
                end
         | 
| 191 | 
            +
             | 
| 192 | 
            +
                def self.avg_payload_size
         | 
| 193 | 
            +
                  get_metric "avg_payload_size"
         | 
| 194 | 
            +
                end
         | 
| 195 | 
            +
             | 
| 196 | 
            +
                def self.avg_payload_size_by_queue(queue)
         | 
| 197 | 
            +
                  get_metric "avg_payload_size:queue:#{queue}"
         | 
| 198 | 
            +
                end
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                def self.avg_payload_size_by_job(job)
         | 
| 201 | 
            +
                  get_metric "avg_payload_size:job:#{job}"
         | 
| 202 | 
            +
                end
         | 
| 203 | 
            +
             | 
| 170 204 | 
             
                def self.avg_fork_time
         | 
| 171 205 | 
             
                  get_metric "avg_fork_time"
         | 
| 172 206 | 
             
                end
         | 
| @@ -206,7 +240,7 @@ module Resque | |
| 206 240 | 
             
                module Hooks
         | 
| 207 241 |  | 
| 208 242 | 
             
                  def after_enqueue_metrics(*args)
         | 
| 209 | 
            -
                    Resque::Metrics.record_job_enqueue(self)
         | 
| 243 | 
            +
                    Resque::Metrics.record_job_enqueue(self, *args)
         | 
| 210 244 | 
             
                  end
         | 
| 211 245 |  | 
| 212 246 | 
             
                  def around_perform_metrics(*args)
         | 
    
        data/resque-metrics.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = "resque-metrics"
         | 
| 8 | 
            -
              s.version = "0.0. | 
| 8 | 
            +
              s.version = "0.0.3"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Aaron Quint"]
         | 
| 12 | 
            -
              s.date = "2011- | 
| 12 | 
            +
              s.date = "2011-11-17"
         | 
| 13 13 | 
             
              s.description = "A simple Resque plugin that times and saves some simple metrics for Resque jobs back into redis. Based on this system\nyou could build some simple auto-scaling mechanism based on the speed and ETA of queues. Also includes a hook/callback\nmechanism for recording/sending the metrics to your favorite tool (AKA statsd/graphite).\n"
         | 
| 14 14 | 
             
              s.email = "aaron@quirkey.com"
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
    
        data/test/test_resque-metrics.rb
    CHANGED
    
    | @@ -41,6 +41,12 @@ class TestResqueMetrics < MiniTest::Unit::TestCase | |
| 41 41 | 
             
                assert Resque::Metrics.total_job_count_by_job(SomeJob) > 0
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 | 
            +
              def test_should_record_payload_size
         | 
| 45 | 
            +
                assert Resque::Metrics.total_payload_size > 0
         | 
| 46 | 
            +
                assert Resque::Metrics.total_payload_size_by_queue(:jobs) > 0
         | 
| 47 | 
            +
                assert Resque::Metrics.total_payload_size_by_job(SomeJob) > 0
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 44 50 | 
             
              def test_should_record_avg_job_time
         | 
| 45 51 | 
             
                assert Resque::Metrics.avg_job_time > 0
         | 
| 46 52 | 
             
                assert Resque::Metrics.avg_job_time_by_queue(:jobs) > 0
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: resque-metrics
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.3
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2011- | 
| 12 | 
            +
            date: 2011-11-17 00:00:00.000000000Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: resque
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &70250343371240 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ~>
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '1.19'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *70250343371240
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: ruby-debug19
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &70250343370740 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,10 +32,10 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :development
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *70250343370740
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: minitest
         | 
| 38 | 
            -
              requirement: & | 
| 38 | 
            +
              requirement: &70250343370180 !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                none: false
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 41 | 
             
                - - ! '>='
         | 
| @@ -43,10 +43,10 @@ dependencies: | |
| 43 43 | 
             
                    version: '2'
         | 
| 44 44 | 
             
              type: :development
         | 
| 45 45 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 46 | 
            +
              version_requirements: *70250343370180
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: bundler
         | 
| 49 | 
            -
              requirement: & | 
| 49 | 
            +
              requirement: &70250343369600 !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                none: false
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ~>
         | 
| @@ -54,10 +54,10 @@ dependencies: | |
| 54 54 | 
             
                    version: 1.0.0
         | 
| 55 55 | 
             
              type: :development
         | 
| 56 56 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements: * | 
| 57 | 
            +
              version_requirements: *70250343369600
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: jeweler
         | 
| 60 | 
            -
              requirement: & | 
| 60 | 
            +
              requirement: &70250343368880 !ruby/object:Gem::Requirement
         | 
| 61 61 | 
             
                none: false
         | 
| 62 62 | 
             
                requirements:
         | 
| 63 63 | 
             
                - - ~>
         | 
| @@ -65,7 +65,7 @@ dependencies: | |
| 65 65 | 
             
                    version: 1.6.2
         | 
| 66 66 | 
             
              type: :development
         | 
| 67 67 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements: * | 
| 68 | 
            +
              version_requirements: *70250343368880
         | 
| 69 69 | 
             
            description: ! 'A simple Resque plugin that times and saves some simple metrics for
         | 
| 70 70 | 
             
              Resque jobs back into redis. Based on this system
         | 
| 71 71 |  | 
| @@ -110,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 110 110 | 
             
                  version: '0'
         | 
| 111 111 | 
             
                  segments:
         | 
| 112 112 | 
             
                  - 0
         | 
| 113 | 
            -
                  hash:  | 
| 113 | 
            +
                  hash: -633739306956696608
         | 
| 114 114 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 115 115 | 
             
              none: false
         | 
| 116 116 | 
             
              requirements:
         |