zk 0.8.7 → 0.8.8
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/Rakefile +10 -5
- data/lib/z_k/client/unixisms.rb +1 -1
- data/lib/z_k/exceptions.rb +4 -0
- data/lib/z_k/version.rb +1 -1
- data/spec/z_k/locker_spec.rb +38 -18
- metadata +5 -5
data/Rakefile
CHANGED
@@ -9,12 +9,17 @@
|
|
9
9
|
|
10
10
|
gemset_name = 'zk'
|
11
11
|
|
12
|
-
%w[1.9.3 jruby].each do |rvm_ruby|
|
12
|
+
%w[1.8.7 1.9.2 1.9.3 jruby].each do |rvm_ruby|
|
13
13
|
ruby_with_gemset = "#{rvm_ruby}@#{gemset_name}"
|
14
|
-
|
15
|
-
|
14
|
+
create_gemset_task_name = "mb:#{rvm_ruby}:create_gemset"
|
15
|
+
bundle_task_name = "mb:#{rvm_ruby}:bundle_install"
|
16
|
+
rspec_task_name = "mb:#{rvm_ruby}:run_rspec"
|
16
17
|
|
17
|
-
task
|
18
|
+
task create_gemset_task_name do
|
19
|
+
sh "rvm #{rvm_ruby} do rvm gemset create #{gemset_name}"
|
20
|
+
end
|
21
|
+
|
22
|
+
task bundle_task_name => create_gemset_task_name do
|
18
23
|
rm_f 'Gemfile.lock'
|
19
24
|
sh "rvm #{ruby_with_gemset} do bundle install"
|
20
25
|
end
|
@@ -23,6 +28,6 @@ gemset_name = 'zk'
|
|
23
28
|
sh "rvm #{ruby_with_gemset} do bundle exec rspec spec --fail-fast"
|
24
29
|
end
|
25
30
|
|
26
|
-
task "mb:
|
31
|
+
task "mb:test_all" => rspec_task_name
|
27
32
|
end
|
28
33
|
|
data/lib/z_k/client/unixisms.rb
CHANGED
@@ -25,7 +25,7 @@ module ZK
|
|
25
25
|
rescue Exceptions::NoNode
|
26
26
|
if File.dirname(path) == '/'
|
27
27
|
# ok, we're screwed, blow up
|
28
|
-
raise
|
28
|
+
raise Exceptions::NonExistentRootError, "could not create '/', are you chrooted into a non-existent path?", caller
|
29
29
|
end
|
30
30
|
|
31
31
|
mkdir_p(File.dirname(path))
|
data/lib/z_k/exceptions.rb
CHANGED
@@ -96,6 +96,10 @@ module ZK
|
|
96
96
|
|
97
97
|
# raised when assert_locked_for_share! is called and no shared lock is held
|
98
98
|
class MustBeShareLockedException < ZKError; end
|
99
|
+
|
100
|
+
# raised for certain operations when using a chrooted connection, but the
|
101
|
+
# root doesn't exist.
|
102
|
+
class NonExistentRootError < ZKError; end
|
99
103
|
end
|
100
104
|
end
|
101
105
|
|
data/lib/z_k/version.rb
CHANGED
data/spec/z_k/locker_spec.rb
CHANGED
@@ -393,33 +393,53 @@ describe "ZK::Locker chrooted" do
|
|
393
393
|
let(:chroot_path) { '/_zk_chroot_' }
|
394
394
|
|
395
395
|
let(:zk) { ZK.new("localhost:#{ZK_TEST_PORT}#{chroot_path}") }
|
396
|
-
let(:zk2) { ZK.new("localhost:#{ZK_TEST_PORT}#{chroot_path}") }
|
397
|
-
let(:zk3) { ZK.new("localhost:#{ZK_TEST_PORT}#{chroot_path}") }
|
398
396
|
|
399
|
-
|
397
|
+
describe 'when the chroot exists' do
|
398
|
+
let(:zk2) { ZK.new("localhost:#{ZK_TEST_PORT}#{chroot_path}") }
|
399
|
+
let(:zk3) { ZK.new("localhost:#{ZK_TEST_PORT}#{chroot_path}") }
|
400
400
|
|
401
|
-
|
402
|
-
let(:root_lock_path) { "/_zklocking/#{path}" }
|
401
|
+
let(:connections) { [zk, zk2, zk3] }
|
403
402
|
|
404
|
-
|
405
|
-
|
406
|
-
|
403
|
+
let(:path) { "shlock" }
|
404
|
+
let(:root_lock_path) { "/_zklocking/#{path}" }
|
405
|
+
|
406
|
+
before do
|
407
|
+
ZK.open("localhost:#{ZK_TEST_PORT}") do |zk|
|
408
|
+
zk.mkdir_p(chroot_path)
|
409
|
+
end
|
410
|
+
|
411
|
+
wait_until{ connections.all?(&:connected?) }
|
407
412
|
end
|
408
413
|
|
409
|
-
|
414
|
+
after do
|
415
|
+
connections.each { |c| c.close! }
|
416
|
+
wait_until { !connections.any?(&:connected?) }
|
417
|
+
|
418
|
+
ZK.open("localhost:#{ZK_TEST_PORT}") do |zk|
|
419
|
+
zk.rm_rf(chroot_path)
|
420
|
+
end
|
421
|
+
end
|
422
|
+
|
423
|
+
it_should_behave_like 'SharedLocker'
|
424
|
+
it_should_behave_like 'ExclusiveLocker'
|
425
|
+
it_should_behave_like 'shared-exclusive interaction'
|
410
426
|
end
|
411
427
|
|
412
|
-
|
413
|
-
|
414
|
-
|
428
|
+
describe "when the root doesn't exist" do
|
429
|
+
let(:lock_name) { 'master' }
|
430
|
+
|
431
|
+
it %[should raise a NonExistentRootError] do
|
432
|
+
@got_lock = false
|
433
|
+
|
434
|
+
lambda do
|
435
|
+
zk.with_lock(lock_name) do
|
436
|
+
@got_lock = true
|
437
|
+
end
|
438
|
+
end.should raise_error(ZK::Exceptions::NonExistentRootError)
|
439
|
+
|
415
440
|
|
416
|
-
|
417
|
-
zk.rm_rf(chroot_path)
|
441
|
+
@got_lock.should_not be_true
|
418
442
|
end
|
419
443
|
end
|
420
|
-
|
421
|
-
it_should_behave_like 'SharedLocker'
|
422
|
-
it_should_behave_like 'ExclusiveLocker'
|
423
|
-
it_should_behave_like 'shared-exclusive interaction'
|
424
444
|
end
|
425
445
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 47
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 8
|
10
|
+
version: 0.8.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan D. Simms
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-04-
|
19
|
+
date: 2012-04-13 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: slyphon-zookeeper
|
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
184
|
requirements: []
|
185
185
|
|
186
186
|
rubyforge_project:
|
187
|
-
rubygems_version: 1.8.
|
187
|
+
rubygems_version: 1.8.15
|
188
188
|
signing_key:
|
189
189
|
specification_version: 3
|
190
190
|
summary: A high-level wrapper around the zookeeper driver
|