hotseat 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
data/hotseat.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "hotseat"
8
- s.version = "0.6.0"
8
+ s.version = "0.7.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Elad Kehat"]
12
- s.date = "2012-02-27"
12
+ s.date = "2012-10-09"
13
13
  s.email = "eladkehat@gmail.com"
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
data/lib/hotseat/queue.rb CHANGED
@@ -126,6 +126,11 @@ module Hotseat
126
126
  @db.bulk_save docs, use_uuids=false
127
127
  end
128
128
 
129
+ def create_and_add_bulk(docs)
130
+ docs.each {|doc| patch doc }
131
+ @db.bulk_save docs
132
+ end
133
+
129
134
  def num_pending
130
135
  @db.view(pending_view_name, :limit => 0)['total_rows']
131
136
  end
@@ -179,6 +184,11 @@ module Hotseat
179
184
  }
180
185
  end
181
186
 
187
+ def unlease_all
188
+ doc_ids = db.view(locked_view_name)['rows'].map {|doc| doc['id'] }
189
+ unlease_bulk doc_ids
190
+ end
191
+
182
192
  def remove(doc_id, opts={})
183
193
  @db.update_doc(doc_id) do |doc|
184
194
  raise(QueueError, "Document was already removed") unless locked?(doc)
@@ -20,6 +20,13 @@ module Hotseat
20
20
  (1..n).map {|i| DB.save_doc(sample_doc(i))['id'] }
21
21
  end
22
22
 
23
+ # Returns unsaved new docs
24
+ def create_new_docs(n=3)
25
+ docs=[]
26
+ (1..n).each {|i| docs<<sample_doc(i)}
27
+ docs
28
+ end
29
+
23
30
  def enqueue(doc_ids)
24
31
  @q.add_bulk doc_ids
25
32
  end
@@ -168,6 +175,17 @@ module Hotseat
168
175
  end
169
176
  end
170
177
 
178
+ describe "#create_and_add_bulk" do
179
+ it "should add multiple documents in bulk, given multiple new docs" do
180
+ reset_test_queue!
181
+ docs = create_new_docs
182
+ result=@q.create_and_add_bulk docs
183
+ result.each do |row|
184
+ DB.get(row["id"]).should have_key(@q.config[:object_name])
185
+ end
186
+ end
187
+ end
188
+
171
189
  describe "#num_pending" do
172
190
  it "should return the number of documents available for lease" do
173
191
  reset_test_queue!
@@ -353,6 +371,24 @@ module Hotseat
353
371
  end
354
372
  end
355
373
 
374
+ describe "#unlease_all" do
375
+ before(:each) do
376
+ reset_test_queue!
377
+ enqueue( create_some_docs(10) )
378
+ @leased = @q.lease 8
379
+ @doc_ids = @leased.map{|doc| doc['_id'] }
380
+ end
381
+
382
+ it "should unlock all leased documents" do
383
+ @q.unlease_all
384
+ docs = DB.get_bulk(@doc_ids)['rows'].map{|row| row['doc']}
385
+ docs.each do |doc|
386
+ doc.should have_key(@q.config[:object_name])
387
+ doc[@q.config[:object_name]].should_not have_key('lock')
388
+ end
389
+ end
390
+ end
391
+
356
392
  describe "#remove" do
357
393
  before(:each) do
358
394
  reset_test_queue!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hotseat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-27 00:00:00.000000000Z
12
+ date: 2012-10-09 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: couchrest
16
- requirement: &76050580 !ruby/object:Gem::Requirement
16
+ requirement: &90001930 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *76050580
24
+ version_requirements: *90001930
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &76049460 !ruby/object:Gem::Requirement
27
+ requirement: &90001300 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *76049460
35
+ version_requirements: *90001300
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yard
38
- requirement: &76048250 !ruby/object:Gem::Requirement
38
+ requirement: &90000720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *76048250
46
+ version_requirements: *90000720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &76030030 !ruby/object:Gem::Requirement
49
+ requirement: &90000220 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *76030030
57
+ version_requirements: *90000220
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &76028720 !ruby/object:Gem::Requirement
60
+ requirement: &89999350 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *76028720
68
+ version_requirements: *89999350
69
69
  description:
70
70
  email: eladkehat@gmail.com
71
71
  executables: []
@@ -103,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  segments:
105
105
  - 0
106
- hash: -832976563
106
+ hash: -933448753
107
107
  required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements: