-
Notifications
You must be signed in to change notification settings - Fork 75
/
c_zookeeper_spec.rb
51 lines (42 loc) · 1.39 KB
/
c_zookeeper_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# tests the CZookeeper, obviously only available when running under MRI
unless defined?(::JRUBY_VERSION)
require 'spec_helper'
describe Zookeeper::CZookeeper do
def pop_all_events
[].tap do |rv|
begin
rv << @event_queue.pop(non_blocking=true)
rescue ThreadError
end
end
end
def wait_until_connected(timeout=2)
wait_until(timeout) { @czk.state == Zookeeper::Constants::ZOO_CONNECTED_STATE }
end
describe do
before do
@event_queue = Zookeeper::Common::QueueWithPipe.new
@czk = Zookeeper::CZookeeper.new(Zookeeper.default_cnx_str, @event_queue)
end
after do
@czk.close rescue Exception
@event_queue.close rescue Exception
end
it %[should be in connected state within a reasonable amount of time] do
wait_until_connected.should be_true
end
describe :after_connected do
before do
wait_until_connected.should be_true
end
it %[should have a connection event after being connected] do
event = wait_until(2) { @event_queue.pop }
event.should be
event[:req_id].should == Zookeeper::Common::ZKRB_GLOBAL_CB_REQ
event[:type].should == Zookeeper::Constants::ZOO_SESSION_EVENT
event[:state].should == Zookeeper::Constants::ZOO_CONNECTED_STATE
end
end
end
end
end