sidekiq-benchmark 0.3.5 → 0.4.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.
- 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:
|