sidekiq-benchmark 0.3.5 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +12 -4
- data/.travis.yml +1 -0
- data/README.md +10 -0
- data/lib/sidekiq-benchmark.rb +0 -1
- data/lib/sidekiq-benchmark/version.rb +1 -1
- data/lib/sidekiq-benchmark/worker.rb +31 -15
- data/test/lib/testing.rb +4 -0
- data/test/lib/web_test.rb +1 -1
- data/test/lib/worker_test.rb +8 -0
- data/test/test_helper.rb +8 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
|
-
metadata.gz:
|
4
|
-
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZThkMDFhZjE3ZThiNmZiMzcyYzNlYTczYmNkNDk5M2UzM2JjMmExZQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OTNiNGJkMzZlNjhkMDU0NDJkZGNhNTEwN2FiNDg2MWZmYmExNTY0Zg==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NTQzY2QxODYxNjQwMDUwNTQ5NGFlMGM5NzFhY2U1MTk2NDQ5NGJkOGNlYzBj
|
10
|
+
MTQwZTg3NjdiZjlhMTQ5MjY5NGE5Zjk1MDA3ZmQxYjFjYjBkZTZiZWMxZmIy
|
11
|
+
Yjk5MGIzMzMwMmY1NWVhMTMxNzk1MWU2NTU1YmQwOTE2NDUxNTQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NmE3OTY0ZGUxMDcyMTc3Yjk2YzkyYmYwYjdhOGQ3YWNkMDNlNTgyNDIxZTkz
|
14
|
+
OTA2ZGIzMDk2ZjBlZTAyNDQ0YjVmNDFhNDc4MzhjNTFlMGU3MTQwZGIxYjI1
|
15
|
+
NGM4NjcyODg2ZGY4ZDFhOTU2YWIwMmY3YTEyODQ4M2ZkNDFmMjg=
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -71,6 +71,16 @@ end
|
|
71
71
|
|
72
72
|
[Heroku App](http://sidekiq-benchmark.herokuapp.com/benchmarks)
|
73
73
|
|
74
|
+
## Testing sidekiq workers
|
75
|
+
|
76
|
+
When you use [Sidekiq::Testing](https://github.com/mperham/sidekiq/wiki/Testing) you
|
77
|
+
must load `sidekiq-benchmark/testing` to stop saving benchmark data to redis.
|
78
|
+
Just add next code to your test or spec helper:
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
require 'sidekiq-benchmark/testing'
|
82
|
+
```
|
83
|
+
|
74
84
|
## Contributing
|
75
85
|
|
76
86
|
1. Fork it
|
data/lib/sidekiq-benchmark.rb
CHANGED
@@ -3,7 +3,7 @@ module Sidekiq
|
|
3
3
|
module Worker
|
4
4
|
|
5
5
|
def benchmark(options = {})
|
6
|
-
@benchmark ||= Benchmark.new
|
6
|
+
@benchmark ||= Benchmark.new self, benchmark_redis_type_key, options
|
7
7
|
|
8
8
|
if block_given?
|
9
9
|
yield @benchmark
|
@@ -22,34 +22,51 @@ module Sidekiq
|
|
22
22
|
|
23
23
|
attr_reader :metrics, :start_time, :finish_time, :redis_key
|
24
24
|
|
25
|
-
def initialize(
|
25
|
+
def initialize(worker, redis_key, options)
|
26
26
|
@metrics = {}
|
27
|
+
@worker = worker
|
27
28
|
@options = options
|
28
|
-
@start_time =
|
29
|
+
@start_time = Time.now
|
29
30
|
|
30
31
|
@redis_key = "#{REDIS_NAMESPACE}:#{redis_key}"
|
31
32
|
set_redis_key redis_key
|
32
33
|
end
|
33
34
|
|
34
35
|
def finish
|
35
|
-
@finish_time = Time.now
|
36
|
-
|
36
|
+
@finish_time = Time.now
|
37
|
+
self[:job_time] = finish_time - start_time
|
37
38
|
save
|
38
39
|
end
|
39
40
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
41
|
+
def measure(name)
|
42
|
+
t0 = Time.now
|
43
|
+
ret = yield
|
44
|
+
|
45
|
+
self[name] = Time.now - t0
|
46
|
+
|
47
|
+
ret
|
48
|
+
end
|
49
|
+
alias_method :bm, :measure
|
43
50
|
|
44
|
-
|
51
|
+
def call(name, *args)
|
52
|
+
measure(name) { @worker.send(name, *args) }
|
53
|
+
end
|
45
54
|
|
46
|
-
|
47
|
-
|
55
|
+
def []=(name, value)
|
56
|
+
@metrics[name] = value.to_f
|
57
|
+
end
|
58
|
+
|
59
|
+
def [](name)
|
60
|
+
@metrics[name]
|
61
|
+
end
|
62
|
+
|
63
|
+
def method_missing(name, *args, &block)
|
64
|
+
if block_given?
|
65
|
+
measure(name, &block)
|
66
|
+
self[name]
|
48
67
|
else
|
49
|
-
|
68
|
+
self[name] = args[0]
|
50
69
|
end
|
51
|
-
|
52
|
-
@metrics[name] = value
|
53
70
|
end
|
54
71
|
|
55
72
|
def set_redis_key(key)
|
@@ -70,7 +87,6 @@ module Sidekiq
|
|
70
87
|
conn.hincrby "#{redis_key}:stats", job_time_key, 1
|
71
88
|
|
72
89
|
conn.hsetnx "#{redis_key}:total", "start_time", start_time
|
73
|
-
conn.hincrbyfloat "#{redis_key}:total", "job_time", @metrics[:job_time]
|
74
90
|
conn.hset "#{redis_key}:total", "finish_time", finish_time
|
75
91
|
end
|
76
92
|
end
|
data/test/lib/testing.rb
CHANGED
data/test/lib/web_test.rb
CHANGED
data/test/lib/worker_test.rb
CHANGED
@@ -59,6 +59,14 @@ module Sidekiq
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
+
it "should allow benchmark methods" do
|
63
|
+
worker = AlterWorkerMock.new
|
64
|
+
value = worker.benchmark.call(:multiply, 4, 4)
|
65
|
+
|
66
|
+
value.must_equal 16
|
67
|
+
worker.benchmark.metrics[:multiply].wont_be_nil
|
68
|
+
end
|
69
|
+
|
62
70
|
end
|
63
71
|
end
|
64
72
|
end
|
data/test/test_helper.rb
CHANGED
@@ -25,16 +25,18 @@ module Sidekiq
|
|
25
25
|
include Sidekiq::Worker
|
26
26
|
include Sidekiq::Benchmark::Worker
|
27
27
|
|
28
|
-
attr_reader :bm_obj, :metric_names, :assigned_metric
|
28
|
+
attr_reader :bm_obj, :metric_names, :assigned_metric, :counter
|
29
29
|
|
30
30
|
def initialize
|
31
31
|
@assigned_metric = 0.1
|
32
|
+
@counter = 0
|
32
33
|
|
33
34
|
benchmark do |bm|
|
34
35
|
bm.test_metric do
|
35
36
|
2.times do |i|
|
36
37
|
bm.send("nested_test_metric_#{i}") do
|
37
|
-
100500.times do |
|
38
|
+
100500.times do |j|
|
39
|
+
@counter += 1
|
38
40
|
end
|
39
41
|
end
|
40
42
|
end
|
@@ -62,6 +64,10 @@ module Sidekiq
|
|
62
64
|
@metric_names = [:test_metric, :other_metric]
|
63
65
|
end
|
64
66
|
|
67
|
+
def multiply(a, b)
|
68
|
+
a * b
|
69
|
+
end
|
70
|
+
|
65
71
|
def finish
|
66
72
|
benchmark.finish
|
67
73
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-benchmark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Kosmatov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chartkick
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
167
|
version: '0'
|
168
168
|
requirements: []
|
169
169
|
rubyforge_project:
|
170
|
-
rubygems_version: 2.
|
170
|
+
rubygems_version: 2.2.2
|
171
171
|
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: Adds benchmarking methods to Sidekiq workers, keeps metrics and adds tab
|
@@ -177,3 +177,4 @@ test_files:
|
|
177
177
|
- test/lib/web_test.rb
|
178
178
|
- test/lib/worker_test.rb
|
179
179
|
- test/test_helper.rb
|
180
|
+
has_rdoc:
|