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 CHANGED
@@ -1,6 +1,8 @@
1
1
  source :rubygems
2
2
 
3
+ gem "redis"
3
4
  gem "resque"
5
+ gem 'yajl-ruby', :require => 'yajl/json_gem'
4
6
 
5
7
  group :development do
6
8
  gem "rake"
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
@@ -1,3 +1,3 @@
1
1
  module ResqueUniq
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
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