zk-eventmachine 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -3
- data/Rakefile +2 -2
- data/lib/z_k/z_k_event_machine/version.rb +1 -1
- data/spec/spec_helper.rb +19 -2
- data/spec/support/logging.rb +10 -5
- data/spec/z_k/z_k_event_machine/client_spec.rb +59 -25
- data/zk-eventmachine.gemspec +11 -10
- metadata +35 -21
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -20,7 +20,7 @@ end
|
|
20
20
|
rspec_task_name = "mb:#{rvm_ruby}:run_rspec"
|
21
21
|
|
22
22
|
task create_gemset_name do
|
23
|
-
sh "rvm #{rvm_ruby}
|
23
|
+
sh "rvm #{rvm_ruby} do rvm gemset create #{gemset_name}"
|
24
24
|
end
|
25
25
|
|
26
26
|
task bundle_task_name => create_gemset_name do
|
@@ -29,7 +29,7 @@ end
|
|
29
29
|
end
|
30
30
|
|
31
31
|
task rspec_task_name => bundle_task_name do
|
32
|
-
sh "rvm #{ruby_with_gemset} do bundle exec rspec spec"
|
32
|
+
sh "rvm #{ruby_with_gemset} do bundle exec rspec spec --fail-fast"
|
33
33
|
end
|
34
34
|
|
35
35
|
task 'mb:test_all' => rspec_task_name
|
data/spec/spec_helper.rb
CHANGED
@@ -10,8 +10,6 @@ require 'evented-spec'
|
|
10
10
|
# in spec/support/ and its subdirectories.
|
11
11
|
Dir[File.expand_path("../support/**/*.rb", __FILE__)].each {|f| require f}
|
12
12
|
|
13
|
-
$stderr.sync = true
|
14
|
-
|
15
13
|
case `uname -s`.chomp
|
16
14
|
when 'Linux'
|
17
15
|
$stderr.puts "WARN: setting EM.epoll = true for tests"
|
@@ -21,6 +19,25 @@ when 'Darwin'
|
|
21
19
|
EM.kqueue = true
|
22
20
|
end
|
23
21
|
|
22
|
+
# method to wait until block passed returns true or timeout (default is 2 seconds) is reached
|
23
|
+
def wait_until(timeout=2)
|
24
|
+
time_to_stop = Time.now + timeout
|
25
|
+
|
26
|
+
until yield
|
27
|
+
break if Time.now > time_to_stop
|
28
|
+
Thread.pass
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def wait_while(timeout=2)
|
33
|
+
time_to_stop = Time.now + timeout
|
34
|
+
|
35
|
+
while yield
|
36
|
+
break if Time.now > time_to_stop
|
37
|
+
Thread.pass
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
24
41
|
RSpec.configure do |config|
|
25
42
|
config.mock_with :flexmock
|
26
43
|
end
|
data/spec/support/logging.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
|
-
|
3
|
+
log_file = File.open(File.expand_path('../../../test.log', __FILE__), 'a').tap { |f| f.sync = true }
|
4
4
|
|
5
|
+
Logger.new(log_file).tap do |log|
|
6
|
+
log.level = Logger::DEBUG
|
7
|
+
ZK.logger = log
|
8
|
+
Zookeeper.logger = log
|
9
|
+
end
|
10
|
+
|
11
|
+
# for debugging along with C output uncomment the following
|
12
|
+
#
|
13
|
+
# $stderr.sync = true
|
5
14
|
# logger = Logger.new($stderr).tap { |l| l.level = Logger::DEBUG }
|
6
15
|
# Zookeeper.set_debug_level(4)
|
7
16
|
|
8
|
-
ZK.logger = logger
|
9
|
-
Zookeeper.logger = ZK.logger
|
10
|
-
|
11
|
-
|
12
17
|
def logger
|
13
18
|
ZK.logger
|
14
19
|
end
|
@@ -1,20 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module ZK::ZKEventMachine
|
4
|
-
|
4
|
+
shared_examples_for 'Client' do
|
5
5
|
include EventedSpec::SpecHelper
|
6
6
|
default_timeout 2.0
|
7
7
|
|
8
|
+
let(:base_path) { '/zk-em-testing' }
|
9
|
+
|
8
10
|
before do
|
9
|
-
@zk
|
10
|
-
@base_path
|
11
|
-
@zk.rm_rf(@base_path)
|
12
|
-
@zk.mkdir_p(@base_path)
|
13
|
-
@zkem = ZK::ZKEventMachine::Client.new('localhost:2181')
|
11
|
+
@zk.rm_rf(base_path)
|
12
|
+
@zk.mkdir_p(base_path)
|
14
13
|
end
|
15
14
|
|
16
15
|
after do
|
17
|
-
@zk.rm_rf(
|
16
|
+
@zk.rm_rf(base_path)
|
18
17
|
@zk.close!
|
19
18
|
end
|
20
19
|
|
@@ -54,11 +53,10 @@ module ZK::ZKEventMachine
|
|
54
53
|
end
|
55
54
|
end
|
56
55
|
|
57
|
-
|
58
56
|
describe 'get' do
|
59
57
|
describe 'success' do
|
60
58
|
before do
|
61
|
-
@path = [
|
59
|
+
@path = [base_path, 'foo'].join('/')
|
62
60
|
@data = 'this is data'
|
63
61
|
@zk.create(@path, @data)
|
64
62
|
end
|
@@ -101,7 +99,7 @@ module ZK::ZKEventMachine
|
|
101
99
|
|
102
100
|
describe 'failure' do
|
103
101
|
before do
|
104
|
-
@path = [
|
102
|
+
@path = [base_path, 'foo'].join('/')
|
105
103
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
106
104
|
end
|
107
105
|
|
@@ -139,7 +137,7 @@ module ZK::ZKEventMachine
|
|
139
137
|
describe 'create' do
|
140
138
|
describe 'success' do
|
141
139
|
before do
|
142
|
-
@path = [
|
140
|
+
@path = [base_path, 'foo'].join('/')
|
143
141
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
144
142
|
|
145
143
|
@data = 'this is data'
|
@@ -205,7 +203,7 @@ module ZK::ZKEventMachine
|
|
205
203
|
|
206
204
|
describe 'failure' do
|
207
205
|
before do
|
208
|
-
@path = [
|
206
|
+
@path = [base_path, 'foo'].join('/')
|
209
207
|
@zk.create(@path, '')
|
210
208
|
end
|
211
209
|
|
@@ -242,7 +240,7 @@ module ZK::ZKEventMachine
|
|
242
240
|
describe 'set' do
|
243
241
|
describe 'success' do
|
244
242
|
before do
|
245
|
-
@path = [
|
243
|
+
@path = [base_path, 'foo'].join('/')
|
246
244
|
@data = 'this is data'
|
247
245
|
@new_data = 'this is better data'
|
248
246
|
@zk.create(@path, @data)
|
@@ -292,7 +290,7 @@ module ZK::ZKEventMachine
|
|
292
290
|
|
293
291
|
describe 'failure' do
|
294
292
|
before do
|
295
|
-
@path = [
|
293
|
+
@path = [base_path, 'foo'].join('/')
|
296
294
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
297
295
|
end
|
298
296
|
|
@@ -328,7 +326,7 @@ module ZK::ZKEventMachine
|
|
328
326
|
|
329
327
|
describe 'exists?' do
|
330
328
|
before do
|
331
|
-
@path = [
|
329
|
+
@path = [base_path, 'foo'].join('/')
|
332
330
|
@data = 'this is data'
|
333
331
|
end
|
334
332
|
|
@@ -374,7 +372,7 @@ module ZK::ZKEventMachine
|
|
374
372
|
describe 'stat' do
|
375
373
|
describe 'success' do
|
376
374
|
before do
|
377
|
-
@path = [
|
375
|
+
@path = [base_path, 'foo'].join('/')
|
378
376
|
@data = 'this is data'
|
379
377
|
@zk.create(@path, @data)
|
380
378
|
@orig_stat = @zk.stat(@path)
|
@@ -416,7 +414,7 @@ module ZK::ZKEventMachine
|
|
416
414
|
|
417
415
|
describe 'non-existent node' do
|
418
416
|
before do
|
419
|
-
@path = [
|
417
|
+
@path = [base_path, 'foo'].join('/')
|
420
418
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
421
419
|
end
|
422
420
|
|
@@ -445,7 +443,7 @@ module ZK::ZKEventMachine
|
|
445
443
|
describe 'delete' do
|
446
444
|
describe 'success' do
|
447
445
|
before do
|
448
|
-
@path = [
|
446
|
+
@path = [base_path, 'foo'].join('/')
|
449
447
|
@data = 'this is data'
|
450
448
|
@zk.create(@path, @data)
|
451
449
|
end
|
@@ -483,7 +481,7 @@ module ZK::ZKEventMachine
|
|
483
481
|
|
484
482
|
describe 'failure' do
|
485
483
|
before do
|
486
|
-
@path = [
|
484
|
+
@path = [base_path, 'foo'].join('/')
|
487
485
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
488
486
|
end
|
489
487
|
|
@@ -520,7 +518,7 @@ module ZK::ZKEventMachine
|
|
520
518
|
describe 'children' do
|
521
519
|
describe 'success' do
|
522
520
|
before do
|
523
|
-
@path = [
|
521
|
+
@path = [base_path, 'foo'].join('/')
|
524
522
|
@child_1_path = [@path, 'child_1'].join('/')
|
525
523
|
@child_2_path = [@path, 'child_2'].join('/')
|
526
524
|
|
@@ -574,7 +572,7 @@ module ZK::ZKEventMachine
|
|
574
572
|
|
575
573
|
describe 'failure' do
|
576
574
|
before do
|
577
|
-
@path = [
|
575
|
+
@path = [base_path, 'foo'].join('/')
|
578
576
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
579
577
|
end
|
580
578
|
|
@@ -611,7 +609,7 @@ module ZK::ZKEventMachine
|
|
611
609
|
describe 'get_acl' do
|
612
610
|
describe 'success' do
|
613
611
|
before do
|
614
|
-
@path = [
|
612
|
+
@path = [base_path, 'foo'].join('/')
|
615
613
|
@data = 'this is data'
|
616
614
|
@zk.create(@path, @data)
|
617
615
|
end
|
@@ -655,7 +653,7 @@ module ZK::ZKEventMachine
|
|
655
653
|
|
656
654
|
describe 'failure' do
|
657
655
|
before do
|
658
|
-
@path = [
|
656
|
+
@path = [base_path, 'foo'].join('/')
|
659
657
|
@zk.delete(@path) rescue ZK::Exceptions::NoNode
|
660
658
|
end
|
661
659
|
|
@@ -717,7 +715,6 @@ module ZK::ZKEventMachine
|
|
717
715
|
em do
|
718
716
|
@zkem.session_passwd.should be_nil
|
719
717
|
|
720
|
-
|
721
718
|
@zkem.connect do
|
722
719
|
@zkem.session_passwd.should be_kind_of(String)
|
723
720
|
@zkem.close! { done }
|
@@ -728,7 +725,7 @@ module ZK::ZKEventMachine
|
|
728
725
|
|
729
726
|
describe 'on_connection_lost' do
|
730
727
|
before do
|
731
|
-
@path = [
|
728
|
+
@path = [base_path, 'foo'].join('/')
|
732
729
|
@data = 'this is data'
|
733
730
|
@zk.create(@path, @data)
|
734
731
|
end
|
@@ -816,5 +813,42 @@ module ZK::ZKEventMachine
|
|
816
813
|
end
|
817
814
|
end # on_connecting
|
818
815
|
end # Client
|
816
|
+
|
817
|
+
describe 'regular' do
|
818
|
+
|
819
|
+
before do
|
820
|
+
@zkem = ZK::ZKEventMachine::Client.new('localhost:2181')
|
821
|
+
@zk = ZK.new.tap { |z| wait_until { z.connected? } }
|
822
|
+
@zk.should be_connected
|
823
|
+
end
|
824
|
+
|
825
|
+
it_should_behave_like 'Client'
|
826
|
+
end
|
827
|
+
|
828
|
+
describe 'chrooted' do
|
829
|
+
let(:chroot_path) { '/_zkem_chroot_' }
|
830
|
+
let(:zk_connect_host) { "localhost:2181#{chroot_path}" }
|
831
|
+
|
832
|
+
before :all do
|
833
|
+
ZK.open('localhost:2181') do |z|
|
834
|
+
z.rm_rf(chroot_path)
|
835
|
+
z.mkdir_p(chroot_path)
|
836
|
+
end
|
837
|
+
end
|
838
|
+
|
839
|
+
after :all do
|
840
|
+
ZK.open('localhost:2181') do |z|
|
841
|
+
z.rm_rf(chroot_path)
|
842
|
+
end
|
843
|
+
end
|
844
|
+
|
845
|
+
before do
|
846
|
+
@zkem = ZK::ZKEventMachine::Client.new(zk_connect_host)
|
847
|
+
@zk = ZK.new(zk_connect_host).tap { |z| wait_until { z.connected? } }
|
848
|
+
@zk.should be_connected
|
849
|
+
end
|
850
|
+
|
851
|
+
it_should_behave_like 'Client'
|
852
|
+
end
|
819
853
|
end # ZK::ZKEventMachine
|
820
854
|
|
data/zk-eventmachine.gemspec
CHANGED
@@ -12,19 +12,20 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.summary = %q{ZK client for EventMachine-based (async) applications}
|
13
13
|
s.description = s.description
|
14
14
|
|
15
|
-
s.add_dependency
|
15
|
+
s.add_dependency 'zk', '~> 0.8.7'
|
16
16
|
|
17
17
|
# zk depends on slyphon-zookeeper, but we need at least this version
|
18
|
-
s.add_dependency
|
19
|
-
s.add_dependency
|
20
|
-
s.add_dependency
|
18
|
+
s.add_dependency 'slyphon-zookeeper', '~> 0.3.0'
|
19
|
+
s.add_dependency 'eventmachine', '~> 1.0.0.beta.4'
|
20
|
+
s.add_dependency 'deferred', '~> 0.5.3'
|
21
21
|
|
22
|
-
s.add_development_dependency
|
23
|
-
s.add_development_dependency
|
24
|
-
s.add_development_dependency
|
25
|
-
s.add_development_dependency
|
26
|
-
s.add_development_dependency
|
27
|
-
s.add_development_dependency
|
22
|
+
s.add_development_dependency 'rspec', '~> 2.8.0'
|
23
|
+
s.add_development_dependency 'yard', '~> 0.7.0'
|
24
|
+
s.add_development_dependency 'autotest', '>= 4.4.0'
|
25
|
+
s.add_development_dependency 'flexmock', '~> 0.8.10'
|
26
|
+
s.add_development_dependency 'evented-spec','~> 0.9.0'
|
27
|
+
s.add_development_dependency 'redcarpet', '~> 2.1.0'
|
28
|
+
s.add_development_dependency 'rake'
|
28
29
|
|
29
30
|
s.files = `git ls-files`.split("\n")
|
30
31
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zk-eventmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 13
|
10
|
+
version: 0.1.13
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan D. Simms
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-04-11 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: zk
|
@@ -25,12 +25,12 @@ dependencies:
|
|
25
25
|
requirements:
|
26
26
|
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
hash:
|
28
|
+
hash: 49
|
29
29
|
segments:
|
30
30
|
- 0
|
31
31
|
- 8
|
32
|
-
-
|
33
|
-
version: 0.8.
|
32
|
+
- 7
|
33
|
+
version: 0.8.7
|
34
34
|
type: :runtime
|
35
35
|
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
@@ -41,12 +41,12 @@ dependencies:
|
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
hash:
|
44
|
+
hash: 19
|
45
45
|
segments:
|
46
46
|
- 0
|
47
|
-
-
|
48
|
-
-
|
49
|
-
version: 0.
|
47
|
+
- 3
|
48
|
+
- 0
|
49
|
+
version: 0.3.0
|
50
50
|
type: :runtime
|
51
51
|
version_requirements: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
@@ -57,14 +57,14 @@ dependencies:
|
|
57
57
|
requirements:
|
58
58
|
- - ~>
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
hash:
|
60
|
+
hash: 62196363
|
61
61
|
segments:
|
62
62
|
- 1
|
63
63
|
- 0
|
64
64
|
- 0
|
65
65
|
- beta
|
66
|
-
-
|
67
|
-
version: 1.0.0.beta.
|
66
|
+
- 4
|
67
|
+
version: 1.0.0.beta.4
|
68
68
|
type: :runtime
|
69
69
|
version_requirements: *id003
|
70
70
|
- !ruby/object:Gem::Dependency
|
@@ -91,12 +91,12 @@ dependencies:
|
|
91
91
|
requirements:
|
92
92
|
- - ~>
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
hash:
|
94
|
+
hash: 47
|
95
95
|
segments:
|
96
96
|
- 2
|
97
|
-
-
|
97
|
+
- 8
|
98
98
|
- 0
|
99
|
-
version: 2.
|
99
|
+
version: 2.8.0
|
100
100
|
type: :development
|
101
101
|
version_requirements: *id005
|
102
102
|
- !ruby/object:Gem::Dependency
|
@@ -155,12 +155,12 @@ dependencies:
|
|
155
155
|
requirements:
|
156
156
|
- - ~>
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
hash:
|
158
|
+
hash: 59
|
159
159
|
segments:
|
160
160
|
- 0
|
161
|
-
-
|
162
|
-
-
|
163
|
-
version: 0.
|
161
|
+
- 9
|
162
|
+
- 0
|
163
|
+
version: 0.9.0
|
164
164
|
type: :development
|
165
165
|
version_requirements: *id009
|
166
166
|
- !ruby/object:Gem::Dependency
|
@@ -179,6 +179,20 @@ dependencies:
|
|
179
179
|
version: 2.1.0
|
180
180
|
type: :development
|
181
181
|
version_requirements: *id010
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: rake
|
184
|
+
prerelease: false
|
185
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
hash: 3
|
191
|
+
segments:
|
192
|
+
- 0
|
193
|
+
version: "0"
|
194
|
+
type: :development
|
195
|
+
version_requirements: *id011
|
182
196
|
description: ""
|
183
197
|
email:
|
184
198
|
- slyphon@hp.com
|