resque-uniq 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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