resque-uniq 0.0.3 → 0.0.4
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 +2 -0
- data/Rakefile +12 -0
- data/lib/resque-uniq/version.rb +1 -1
- data/test/unique_job_test.rb +56 -0
- metadata +6 -5
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,2 +1,14 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
task :default => :test
|
6
|
+
|
7
|
+
desc "Run tests"
|
8
|
+
task :test do
|
9
|
+
Rake::TestTask.new do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = false
|
13
|
+
end
|
14
|
+
end
|
data/lib/resque-uniq/version.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'resque'
|
3
|
+
require 'resque/plugins/unique_job'
|
4
|
+
|
5
|
+
class UniqueJobTest < Test::Unit::TestCase
|
6
|
+
class Job
|
7
|
+
extend Resque::Plugins::UniqueJob
|
8
|
+
@queue = :job_test
|
9
|
+
def self.perform(param) ; end
|
10
|
+
end
|
11
|
+
|
12
|
+
class AutoexpireLockJob
|
13
|
+
extend Resque::Plugins::UniqueJob
|
14
|
+
@queue = :job_test
|
15
|
+
@unique_lock_autoexpire = 1
|
16
|
+
def self.perform(param) ; end
|
17
|
+
end
|
18
|
+
|
19
|
+
def setup
|
20
|
+
Resque.remove_queue(Resque.queue_from_class(Job))
|
21
|
+
Resque.redis.keys('*:UniqueJobTest::*').each {|k| Resque.redis.del(k) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_no_more_than_one_job_instance
|
25
|
+
queue = Resque.queue_from_class(Job)
|
26
|
+
|
27
|
+
3.times { Resque.enqueue(Job, "hello") }
|
28
|
+
assert_equal 1, Resque.size(queue)
|
29
|
+
|
30
|
+
3.times { Resque.enqueue(Job, "bye") }
|
31
|
+
assert_equal 2, Resque.size(queue)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_lock_is_removed_after_job_run
|
35
|
+
queue = Resque.queue_from_class(Job)
|
36
|
+
Resque.enqueue(Job, "hello")
|
37
|
+
assert_equal 1, Resque.size(queue)
|
38
|
+
|
39
|
+
worker = Resque::Worker.new(queue)
|
40
|
+
job = worker.reserve
|
41
|
+
worker.perform(job)
|
42
|
+
assert_equal 0, Resque.size(queue)
|
43
|
+
|
44
|
+
Resque.enqueue(Job, "hello")
|
45
|
+
assert_equal 1, Resque.size(queue)
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def test_autoexpire_lock
|
50
|
+
Resque.enqueue(AutoexpireLockJob, 123)
|
51
|
+
sleep 2
|
52
|
+
Resque.enqueue(AutoexpireLockJob, 123)
|
53
|
+
assert_equal 2, Resque.size(Resque.queue_from_class(AutoexpireLockJob))
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-uniq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Trung Duc Tran
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/resque-uniq/version.rb
|
38
38
|
- lib/resque/plugins/unique_job.rb
|
39
39
|
- resque-uniq.gemspec
|
40
|
+
- test/unique_job_test.rb
|
40
41
|
homepage: http://github.com/tdtran/resque-uniq
|
41
42
|
licenses: []
|
42
43
|
|
@@ -70,5 +71,5 @@ rubygems_version: 1.8.24
|
|
70
71
|
signing_key:
|
71
72
|
specification_version: 3
|
72
73
|
summary: A Resque plugin to ensure only one job instance is queued or running at a time.
|
73
|
-
test_files:
|
74
|
-
|
74
|
+
test_files:
|
75
|
+
- test/unique_job_test.rb
|