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 CHANGED
@@ -1,9 +1,7 @@
1
- source 'http://localhost:50000'
1
+ source ENV['MBOX_BUNDLER_SOURCE'] if ENV['MBOX_BUNDLER_SOURCE']
2
2
  source "http://rubygems.org"
3
3
 
4
-
5
4
  # Specify your gem's dependencies in zk-em.gemspec
6
5
  gemspec
7
6
 
8
-
9
7
  # vim:ft=ruby
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} && rvm gemset create #{gemset_name}"
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
@@ -1,5 +1,5 @@
1
1
  module ZK
2
2
  module ZKEventMachine
3
- VERSION = "0.1.12"
3
+ VERSION = "0.1.13"
4
4
  end
5
5
  end
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
@@ -1,14 +1,19 @@
1
1
  require 'logger'
2
2
 
3
- logger = Logger.new(File.expand_path('../../../test.log', __FILE__)).tap {|l| l.level = Logger::DEBUG}
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
- describe 'Client' do
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 = ::ZK.new
10
- @base_path = '/zk-em-testing'
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(@base_path)
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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 = [@base_path, 'foo'].join('/')
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
 
@@ -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('zk', '~> 0.8.6')
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('slyphon-zookeeper', '~> 0.2.8')
19
- s.add_dependency('eventmachine', '~> 1.0.0.beta.3')
20
- s.add_dependency('deferred', '~> 0.5.3')
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('rspec', '~> 2.5.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.4.1')
27
- s.add_development_dependency('redcarpet', '~> 2.1.0')
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: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 12
10
- version: 0.1.12
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-02-01 00:00:00 Z
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: 51
28
+ hash: 49
29
29
  segments:
30
30
  - 0
31
31
  - 8
32
- - 6
33
- version: 0.8.6
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: 7
44
+ hash: 19
45
45
  segments:
46
46
  - 0
47
- - 2
48
- - 8
49
- version: 0.2.8
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: 62196357
60
+ hash: 62196363
61
61
  segments:
62
62
  - 1
63
63
  - 0
64
64
  - 0
65
65
  - beta
66
- - 3
67
- version: 1.0.0.beta.3
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: 27
94
+ hash: 47
95
95
  segments:
96
96
  - 2
97
- - 5
97
+ - 8
98
98
  - 0
99
- version: 2.5.0
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: 13
158
+ hash: 59
159
159
  segments:
160
160
  - 0
161
- - 4
162
- - 1
163
- version: 0.4.1
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