barney 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +5 -0
- data/README.md +7 -3
- data/lib/barney/share.rb +2 -1
- data/lib/barney.rb +1 -1
- data/test/suite/lib/barney/share#fork.rb +2 -0
- data/test/suite/lib/barney/share#history.rb +7 -5
- data/test/suite/lib/barney/share#initialize.rb +9 -3
- data/test/suite/lib/barney/share#shared.rb +19 -0
- data/test/suite/lib/barney/share#synchronize.rb +51 -38
- data/test/suite/lib/barney/share#unshare.rb +29 -12
- metadata +3 -1
data/ChangeLog
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
2011-04-19 Robert Gleeson <rob@flowof.info> v0.8.1
|
2
|
+
|
3
|
+
* Don't call #to_sym when it isn't required.
|
4
|
+
* Don't allow @variables be populated with duplicates. (bugfix)
|
5
|
+
|
1
6
|
2011-04-19 Robert Gleeson <rob@flowof.info> v0.8.0
|
2
7
|
|
3
8
|
* Remove "seq" attribute from StreamPair.
|
data/README.md
CHANGED
@@ -43,10 +43,12 @@ Okay, now that we've got that out of the way, let's see what using Barney is lik
|
|
43
43
|
|
44
44
|
## Install
|
45
45
|
|
46
|
-
RubyGems.org
|
46
|
+
RubyGems.org
|
47
|
+
|
47
48
|
gem install barney
|
48
49
|
|
49
|
-
Github
|
50
|
+
Github
|
51
|
+
|
50
52
|
git clone git://github.com/robgleeson/barney.git
|
51
53
|
cd barney
|
52
54
|
gem build *.gemspec
|
@@ -59,11 +61,13 @@ I'm following the [Semantic Versioning](http://www.semver.org) policy.
|
|
59
61
|
**API**
|
60
62
|
|
61
63
|
* [master (git)](http://rubydoc.info/github/robgleeson/Barney/master/)
|
64
|
+
* [0.8.1](http://rubydoc.info/gems/barney/0.8.1/)
|
65
|
+
* [0.8.0](http://rubydoc.info/gems/barney/0.8.0/)
|
62
66
|
* [0.7.0](http://rubydoc.info/gems/barney/0.7.0)
|
63
67
|
* [0.6.0](http://rubydoc.info/gems/barney/0.6.0)
|
64
68
|
* [0.5.0](http://rubydoc.info/gems/barney/0.5.0)
|
65
69
|
* [0.4.1](http://rubydoc.info/gems/barney/0.4.1)
|
66
|
-
* [0.4.0](http://rubydoc.info/gems/barney/0.4.0)
|
70
|
+
* [0.4.0](http://rubydoc.info/gems/barney/0.4.0)
|
67
71
|
* …
|
68
72
|
|
69
73
|
|
data/lib/barney/share.rb
CHANGED
@@ -51,6 +51,7 @@ module Barney
|
|
51
51
|
# @return [Array<Symbol>] Returns a list of all variables that are being shared.
|
52
52
|
def share *variables
|
53
53
|
@variables.push *variables.map(&:to_sym)
|
54
|
+
@variables.uniq!
|
54
55
|
end
|
55
56
|
|
56
57
|
# Serves as a method to remove a variable or constant from being shared between two processes.
|
@@ -99,7 +100,7 @@ module Barney
|
|
99
100
|
Barney::Share.value = Marshal.load stream.in.read
|
100
101
|
stream.in.close
|
101
102
|
value = eval "#{variable} = Barney::Share.value", @context
|
102
|
-
@history.push HistoryItem.new variable
|
103
|
+
@history.push HistoryItem.new variable, value
|
103
104
|
end
|
104
105
|
end
|
105
106
|
end
|
data/lib/barney.rb
CHANGED
@@ -1,22 +1,24 @@
|
|
1
1
|
describe Barney::Share do
|
2
|
+
|
2
3
|
describe '#history' do
|
3
4
|
|
4
5
|
it 'should provide the correct history.' do
|
5
6
|
object = Barney::Share.new
|
6
|
-
object.share :
|
7
|
-
|
7
|
+
object.share :message
|
8
|
+
message = ""
|
8
9
|
|
9
|
-
%w(a b c).each do |
|
10
|
-
pid = object.fork {
|
10
|
+
%w(a b c).each do |letter|
|
11
|
+
pid = object.fork { message << letter }
|
11
12
|
Process.wait pid
|
12
13
|
end
|
13
14
|
|
14
15
|
object.sync
|
15
16
|
|
16
17
|
history = object.history
|
17
|
-
assert_equal true, history.all? { |item| item.variable == :
|
18
|
+
assert_equal true, history.all? { |item| item.variable == :message }
|
18
19
|
assert_equal "abc", history.map { |item| item.value }.join
|
19
20
|
end
|
20
21
|
|
21
22
|
end
|
23
|
+
|
22
24
|
end
|
@@ -1,11 +1,17 @@
|
|
1
1
|
describe Barney::Share do
|
2
|
+
|
2
3
|
describe '#initialize' do
|
3
4
|
|
4
5
|
it 'should take a block' do
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
called = false
|
7
|
+
|
8
|
+
Barney::Share.new do |obj|
|
9
|
+
called = true
|
10
|
+
end
|
11
|
+
|
12
|
+
assert_equal true, called
|
8
13
|
end
|
9
14
|
|
10
15
|
end
|
16
|
+
|
11
17
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
describe Barney::Share do
|
2
|
+
|
3
|
+
describe '#share' do
|
4
|
+
|
5
|
+
it "should assert duplicates aren't stored." do
|
6
|
+
instance = Barney::Share.new
|
7
|
+
instance.share :a, :a, :a, :a
|
8
|
+
instance.variables == [:a]
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should assert variable names are stored as Symbols" do
|
12
|
+
instance = Barney::Share.new
|
13
|
+
instance.share "a", "b"
|
14
|
+
instance.variables == [:a, :b]
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -1,51 +1,63 @@
|
|
1
1
|
describe Barney::Share do
|
2
|
+
|
2
3
|
describe '#sync' do
|
3
4
|
|
4
5
|
before do
|
5
|
-
@
|
6
|
+
@instance = Barney::Share.new
|
6
7
|
end
|
7
8
|
|
8
|
-
it 'should
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
it 'should assert a variable can be synced.' do
|
10
|
+
x = 5
|
11
|
+
|
12
|
+
@instance.share :x
|
13
|
+
pid = @instance.fork do
|
14
|
+
x = 6
|
15
|
+
end
|
12
16
|
Process.wait pid
|
13
|
-
@
|
14
|
-
|
17
|
+
@instance.sync
|
18
|
+
|
19
|
+
assert_equal 6, x
|
15
20
|
end
|
16
21
|
|
17
|
-
it 'should
|
18
|
-
|
19
|
-
|
20
|
-
|
22
|
+
it 'should assert a variable can be synced after mutation' do
|
23
|
+
message = 'foo'
|
24
|
+
|
25
|
+
@instance.share :message
|
26
|
+
pid = @instance.fork { message.sub! 'foo','bar' }
|
21
27
|
Process.wait pid
|
22
|
-
@
|
23
|
-
|
28
|
+
@instance.sync
|
29
|
+
|
30
|
+
assert_equal 'bar', message
|
24
31
|
end
|
25
32
|
|
26
|
-
it 'should
|
27
|
-
|
28
|
-
|
29
|
-
|
33
|
+
it 'should assert two variables can be synced.' do
|
34
|
+
x = 10
|
35
|
+
y = 20
|
36
|
+
|
37
|
+
@instance.share :x, :y
|
38
|
+
pid = @instance.fork do
|
39
|
+
x -= 1
|
40
|
+
y -= 1
|
41
|
+
end
|
30
42
|
Process.wait pid
|
31
|
-
@
|
43
|
+
@instance.sync
|
32
44
|
|
33
|
-
assert_equal
|
34
|
-
assert_equal
|
45
|
+
assert_equal 9 , x
|
46
|
+
assert_equal 19, y
|
35
47
|
end
|
36
48
|
|
37
49
|
it 'should fix Github Issue #1' do
|
38
50
|
$times = 2
|
39
|
-
@
|
51
|
+
@instance.share :$times
|
40
52
|
|
41
|
-
pid
|
42
|
-
pid2 = @
|
43
|
-
pid3 = @
|
53
|
+
pid = @instance.fork { $times = 4 }
|
54
|
+
pid2 = @instance.fork { $times = 5 }
|
55
|
+
pid3 = @instance.fork { $times = 6 }
|
44
56
|
|
45
57
|
Process.wait pid
|
46
58
|
Process.wait pid2
|
47
59
|
Process.wait pid3
|
48
|
-
@
|
60
|
+
@instance.sync
|
49
61
|
|
50
62
|
assert_equal 6, $times
|
51
63
|
end
|
@@ -54,30 +66,31 @@ describe Barney::Share do
|
|
54
66
|
x = 4
|
55
67
|
y = 5
|
56
68
|
|
57
|
-
@
|
58
|
-
@
|
59
|
-
Process.wait @
|
69
|
+
@instance.share :x
|
70
|
+
@instance.fork { }
|
71
|
+
Process.wait @instance.pid
|
60
72
|
|
61
|
-
@
|
62
|
-
@
|
63
|
-
Process.wait @
|
73
|
+
@instance.share :y
|
74
|
+
@instance.fork { b = 6 }
|
75
|
+
Process.wait @instance.pid
|
64
76
|
|
65
|
-
@
|
77
|
+
@instance.sync # will raise NoMethodError if fails.
|
66
78
|
end
|
67
79
|
|
68
80
|
it 'should fix GitHub Issue #3' do
|
69
81
|
x = 4
|
70
82
|
y = 5
|
71
83
|
|
72
|
-
@
|
73
|
-
@
|
74
|
-
Process.wait @
|
75
|
-
@
|
84
|
+
@instance.share :x, :y
|
85
|
+
@instance.fork { }
|
86
|
+
Process.wait @instance.pid
|
87
|
+
@instance.sync
|
76
88
|
|
77
|
-
assert_equal 4, @
|
78
|
-
assert_equal 5, @
|
89
|
+
assert_equal 4, @instance.history[0].value
|
90
|
+
assert_equal 5, @instance.history[1].value
|
79
91
|
end
|
80
92
|
|
81
93
|
end
|
94
|
+
|
82
95
|
end
|
83
96
|
|
@@ -1,27 +1,44 @@
|
|
1
1
|
describe Barney::Share do
|
2
|
+
|
2
3
|
describe '#unshare' do
|
3
4
|
|
4
5
|
before do
|
5
|
-
@
|
6
|
-
@object = Barney::Share.new
|
6
|
+
@instance = Barney::Share.new
|
7
7
|
end
|
8
8
|
|
9
|
-
it 'should
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
it 'should assert a variable can be unshared before a subprocess is spawned.' do
|
10
|
+
x = 5
|
11
|
+
|
12
|
+
@instance.share :x
|
13
|
+
@instance.unshare :x
|
14
|
+
pid = @instance.fork do
|
15
|
+
x = 6
|
16
|
+
end
|
13
17
|
Process.wait pid
|
14
|
-
@
|
18
|
+
@instance.sync
|
15
19
|
|
16
|
-
assert_equal 5,
|
20
|
+
assert_equal 5, x
|
17
21
|
end
|
18
22
|
|
19
|
-
it 'should
|
20
|
-
|
21
|
-
@
|
22
|
-
|
23
|
+
it 'should assert a shared variable is removed from #variables.' do
|
24
|
+
x = 5
|
25
|
+
@instance.share :x
|
26
|
+
@instance.unshare :x
|
27
|
+
assert_equal true, @instance.variables.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should assert a shared variable is removed from @shared' do
|
31
|
+
x = 5
|
32
|
+
@instance.share :x
|
33
|
+
@instance.fork { }
|
34
|
+
assert true, @instance.instance_variable_get(:@shared).has_key?(:x)
|
35
|
+
|
36
|
+
@instance.unshare :x
|
37
|
+
@instance.fork { }
|
38
|
+
assert true, @instance.instance_variable_get(:@shared).empty?
|
23
39
|
end
|
24
40
|
|
25
41
|
end
|
42
|
+
|
26
43
|
end
|
27
44
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: barney
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.8.
|
5
|
+
version: 0.8.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Robert Gleeson
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- test/suite/lib/barney/share#fork.rb
|
56
56
|
- test/suite/lib/barney/share#history.rb
|
57
57
|
- test/suite/lib/barney/share#initialize.rb
|
58
|
+
- test/suite/lib/barney/share#shared.rb
|
58
59
|
- test/suite/lib/barney/share#synchronize.rb
|
59
60
|
- test/suite/lib/barney/share#unshare.rb
|
60
61
|
has_rdoc: true
|
@@ -89,5 +90,6 @@ test_files:
|
|
89
90
|
- test/suite/lib/barney/share#fork.rb
|
90
91
|
- test/suite/lib/barney/share#history.rb
|
91
92
|
- test/suite/lib/barney/share#initialize.rb
|
93
|
+
- test/suite/lib/barney/share#shared.rb
|
92
94
|
- test/suite/lib/barney/share#synchronize.rb
|
93
95
|
- test/suite/lib/barney/share#unshare.rb
|