refilling_queue 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/Appraisals +5 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +8 -4
- data/Rakefile +5 -16
- data/gemfiles/redis2.gemfile +11 -0
- data/gemfiles/redis2.gemfile.lock +34 -0
- data/gemfiles/redis3.gemfile +11 -0
- data/gemfiles/redis3.gemfile.lock +34 -0
- data/lib/refilling_queue/version.rb +1 -1
- data/lib/refilling_queue.rb +1 -1
- data/spec/refilling_queue_spec.rb +28 -25
- data/spec/spec_helper.rb +1 -2
- metadata +9 -4
data/Appraisals
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
refilling_queue (0.0.
|
4
|
+
refilling_queue (0.0.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
+
appraisal (0.5.1)
|
10
|
+
bundler
|
11
|
+
rake
|
12
|
+
bump (0.3.5)
|
9
13
|
diff-lcs (1.1.3)
|
10
|
-
fakeredis (0.4.0)
|
11
|
-
redis (~> 3.0.0)
|
12
14
|
rake (0.9.2)
|
13
15
|
redis (3.0.1)
|
14
16
|
rspec (2.6.0)
|
@@ -24,7 +26,9 @@ PLATFORMS
|
|
24
26
|
ruby
|
25
27
|
|
26
28
|
DEPENDENCIES
|
27
|
-
|
29
|
+
appraisal
|
30
|
+
bump
|
28
31
|
rake
|
32
|
+
redis
|
29
33
|
refilling_queue!
|
30
34
|
rspec (~> 2)
|
data/Rakefile
CHANGED
@@ -1,22 +1,11 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
+
require 'appraisal'
|
3
|
+
require 'bump/tasks'
|
2
4
|
|
3
|
-
task :
|
5
|
+
task :spec do
|
4
6
|
sh "rspec spec/"
|
5
7
|
end
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
sh "git status | grep 'nothing to commit'" # ensure we are not dirty
|
10
|
-
index = ['major', 'minor','patch'].index(t.name.split(':').last)
|
11
|
-
file = 'lib/refilling_queue/version.rb'
|
12
|
-
|
13
|
-
version_file = File.read(file)
|
14
|
-
old_version, *version_parts = version_file.match(/(\d+)\.(\d+)\.(\d+)/).to_a
|
15
|
-
version_parts[index] = version_parts[index].to_i + 1
|
16
|
-
version_parts[2] = 0 if index < 2 # remove patch for minor
|
17
|
-
version_parts[1] = 0 if index < 1 # remove minor for major
|
18
|
-
new_version = version_parts * '.'
|
19
|
-
File.open(file,'w'){|f| f.write(version_file.sub(old_version, new_version)) }
|
20
|
-
|
21
|
-
sh "bundle && git add #{file} Gemfile.lock && git commit -m 'bump version to #{new_version}'"
|
9
|
+
task :default do
|
10
|
+
sh "bundle exec rake appraisal:install && bundle exec rake appraisal spec"
|
22
11
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/mgrosser/code/tools/refilling_queue
|
3
|
+
specs:
|
4
|
+
refilling_queue (0.0.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
appraisal (0.5.1)
|
10
|
+
bundler
|
11
|
+
rake
|
12
|
+
bump (0.3.5)
|
13
|
+
diff-lcs (1.1.3)
|
14
|
+
rake (10.0.2)
|
15
|
+
redis (2.2.2)
|
16
|
+
rspec (2.11.0)
|
17
|
+
rspec-core (~> 2.11.0)
|
18
|
+
rspec-expectations (~> 2.11.0)
|
19
|
+
rspec-mocks (~> 2.11.0)
|
20
|
+
rspec-core (2.11.1)
|
21
|
+
rspec-expectations (2.11.3)
|
22
|
+
diff-lcs (~> 1.1.3)
|
23
|
+
rspec-mocks (2.11.3)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
appraisal
|
30
|
+
bump
|
31
|
+
rake
|
32
|
+
redis (~> 2.0)
|
33
|
+
refilling_queue!
|
34
|
+
rspec (~> 2)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/mgrosser/code/tools/refilling_queue
|
3
|
+
specs:
|
4
|
+
refilling_queue (0.0.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
appraisal (0.5.1)
|
10
|
+
bundler
|
11
|
+
rake
|
12
|
+
bump (0.3.5)
|
13
|
+
diff-lcs (1.1.3)
|
14
|
+
rake (10.0.2)
|
15
|
+
redis (3.0.2)
|
16
|
+
rspec (2.11.0)
|
17
|
+
rspec-core (~> 2.11.0)
|
18
|
+
rspec-expectations (~> 2.11.0)
|
19
|
+
rspec-mocks (~> 2.11.0)
|
20
|
+
rspec-core (2.11.1)
|
21
|
+
rspec-expectations (2.11.3)
|
22
|
+
diff-lcs (~> 1.1.3)
|
23
|
+
rspec-mocks (2.11.3)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
appraisal
|
30
|
+
bump
|
31
|
+
rake
|
32
|
+
redis (~> 3.0)
|
33
|
+
refilling_queue!
|
34
|
+
rspec (~> 2)
|
data/lib/refilling_queue.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'fakeredis'
|
3
2
|
|
4
3
|
describe RefillingQueue do
|
5
4
|
def kill_all_threads
|
6
5
|
Thread.list.each {|thread| thread.exit unless thread == Thread.current }
|
7
6
|
end
|
8
7
|
|
9
|
-
let(:client){
|
8
|
+
let(:client){ Redis.new }
|
10
9
|
|
11
10
|
before do
|
12
11
|
kill_all_threads
|
12
|
+
client.flushdb
|
13
|
+
end
|
14
|
+
|
15
|
+
after :all do
|
16
|
+
`rm -f dump.rdb`
|
13
17
|
end
|
14
18
|
|
15
19
|
it "has a VERSION" do
|
@@ -27,9 +31,9 @@ describe RefillingQueue do
|
|
27
31
|
context "#pop" do
|
28
32
|
it "removes an element" do
|
29
33
|
queue = RefillingQueue.new(client, "x"){ [1,2,3,4] }
|
30
|
-
queue.pop.should == 1
|
31
|
-
queue.pop.should == 2
|
32
|
-
queue.pop.should == 3
|
34
|
+
queue.pop.should == "1"
|
35
|
+
queue.pop.should == "2"
|
36
|
+
queue.pop.should == "3"
|
33
37
|
end
|
34
38
|
|
35
39
|
it "only tries to refill once" do
|
@@ -41,23 +45,23 @@ describe RefillingQueue do
|
|
41
45
|
it "refills itself if queue gets empty" do
|
42
46
|
content = [1]
|
43
47
|
queue = RefillingQueue.new(client, "x"){ content }
|
44
|
-
queue.pop.should == 1
|
48
|
+
queue.pop.should == "1"
|
45
49
|
content.replace [4,5]
|
46
|
-
queue.pop.should == 4
|
47
|
-
queue.pop.should == 5
|
48
|
-
queue.pop.should == 4
|
50
|
+
queue.pop.should == "4"
|
51
|
+
queue.pop.should == "5"
|
52
|
+
queue.pop.should == "4"
|
49
53
|
end
|
50
54
|
|
51
55
|
it "refills itself when it expires" do
|
52
56
|
content = [1,2,3]
|
53
|
-
queue = RefillingQueue.new(client, "x", :refresh_every =>
|
57
|
+
queue = RefillingQueue.new(client, "x", :refresh_every => 1){ content }
|
54
58
|
|
55
|
-
queue.pop.should == 1
|
59
|
+
queue.pop.should == "1"
|
56
60
|
content.replace [4,5]
|
57
|
-
queue.pop.should == 2
|
58
|
-
sleep
|
61
|
+
queue.pop.should == "2"
|
62
|
+
sleep 2
|
59
63
|
|
60
|
-
queue.pop.should == 4
|
64
|
+
queue.pop.should == "4"
|
61
65
|
end
|
62
66
|
end
|
63
67
|
|
@@ -67,23 +71,22 @@ describe RefillingQueue do
|
|
67
71
|
|
68
72
|
# lock-blocker
|
69
73
|
Thread.new do
|
70
|
-
RefillingQueue.new(client, "x"){ sleep 0.
|
74
|
+
RefillingQueue.new(client, "x"){ called << 1; sleep 0.3; called << 2; [] }.pop
|
71
75
|
end
|
72
76
|
sleep 0.1
|
73
77
|
|
74
78
|
# blocked
|
75
79
|
locked = false
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
80
|
+
queue = RefillingQueue.new(client, "x"){ called << 3; [] }
|
81
|
+
begin
|
82
|
+
queue.pop
|
83
|
+
fail
|
84
|
+
rescue RefillingQueue::Locked
|
85
|
+
locked = true
|
83
86
|
end
|
84
87
|
sleep 0.3
|
85
88
|
|
86
|
-
called.should == [1]
|
89
|
+
called.should == [1, 2]
|
87
90
|
locked.should == true
|
88
91
|
end
|
89
92
|
|
@@ -99,9 +102,9 @@ describe RefillingQueue do
|
|
99
102
|
RefillingQueue.new(client, "x", :lock_timeout => 1){ called << 1; [1] }.pop
|
100
103
|
Thread.new do
|
101
104
|
# lock-blocker
|
102
|
-
RefillingQueue.new(client, "x", :lock_timeout => 1){ sleep
|
105
|
+
RefillingQueue.new(client, "x", :lock_timeout => 1){ sleep 3; called << 2; [1] }.pop
|
103
106
|
end
|
104
|
-
sleep
|
107
|
+
sleep 2
|
105
108
|
RefillingQueue.new(client, "x", :lock_timeout => 1){ called << 3; [1] }.pop
|
106
109
|
called.should == [1,3]
|
107
110
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: refilling_queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description:
|
15
15
|
email: michael@grosser.it
|
@@ -18,10 +18,15 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- .travis.yml
|
21
|
+
- Appraisals
|
21
22
|
- Gemfile
|
22
23
|
- Gemfile.lock
|
23
24
|
- Rakefile
|
24
25
|
- Readme.md
|
26
|
+
- gemfiles/redis2.gemfile
|
27
|
+
- gemfiles/redis2.gemfile.lock
|
28
|
+
- gemfiles/redis3.gemfile
|
29
|
+
- gemfiles/redis3.gemfile.lock
|
25
30
|
- lib/refilling_queue.rb
|
26
31
|
- lib/refilling_queue/version.rb
|
27
32
|
- refilling_queue.gemspec
|
@@ -42,7 +47,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
42
47
|
version: '0'
|
43
48
|
segments:
|
44
49
|
- 0
|
45
|
-
hash:
|
50
|
+
hash: 949949052394646117
|
46
51
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
52
|
none: false
|
48
53
|
requirements:
|
@@ -51,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
56
|
version: '0'
|
52
57
|
segments:
|
53
58
|
- 0
|
54
|
-
hash:
|
59
|
+
hash: 949949052394646117
|
55
60
|
requirements: []
|
56
61
|
rubyforge_project:
|
57
62
|
rubygems_version: 1.8.24
|