forked from alanpeabody/resque-job-stats
/
test_job_stats.rb
73 lines (61 loc) · 1.6 KB
/
test_job_stats.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
require 'helper'
class BaseJob
@queue = :test
def self.perform(sleep_time=0.01)
sleep sleep_time
end
end
class SimpleJob < BaseJob
extend Resque::Plugins::JobStats
@queue = :test
end
class FailJob < BaseJob
extend Resque::Plugins::JobStats::Failed
@queue = :test
def self.perform(*payload)
raise 'fail'
end
end
class TestResqueJobStats < MiniTest::Unit::TestCase
def setup
@worker = Resque::Worker.new(:test)
end
def test_lint
Resque::Plugin.lint(Resque::Plugins::JobStats)
assert_equal true, true
rescue => e
assert_equal false, e
end
def test_jobs_performed
assert_equal 'stats:jobs:SimpleJob:performed', SimpleJob.jobs_performed_key
SimpleJob.jobs_performed = 0
3.times do
Resque.enqueue(SimpleJob)
@worker.work(0)
end
assert_equal 3, SimpleJob.jobs_performed
end
def test_jobs_failed
assert_equal 'stats:jobs:FailJob:failed', FailJob.jobs_failed_key
FailJob.jobs_failed = 0
3.times do
Resque.enqueue(FailJob)
@worker.work(0)
end
assert_equal 3, FailJob.jobs_failed
end
def test_duration
assert_equal 'stats:jobs:SimpleJob:duration', SimpleJob.jobs_duration_key
SimpleJob.reset_job_durations
3.times do |i|
d = (i + 1)/10.0
Resque.enqueue(SimpleJob,d)
@worker.work(0)
end
assert_in_delta 0.3, SimpleJob.job_durations[0], 0.01
assert_in_delta 0.2, SimpleJob.job_durations[1], 0.01
assert_in_delta 0.1, SimpleJob.job_durations[2], 0.01
assert_in_delta 0.3, SimpleJob.longest_job, 0.01
assert_in_delta 0.2, SimpleJob.job_rolling_avg, 0.01
end
end