spec/pushpull_spec.rb in ffi-rzmq-0.6.0 vs spec/pushpull_spec.rb in ffi-rzmq-0.7.0
- old
+ new
@@ -8,18 +8,23 @@
let(:string) { "booga-booga" }
before(:each) do
$stdout.flush
- @context = ZMQ::Context.new 1
+ @context = ZMQ::Context.new
@push = @context.socket ZMQ::PUSH
@pull = @context.socket ZMQ::PULL
@link = "tcp://127.0.0.1:#{random_port}"
@pull.connect @link
@push.bind @link
end
-
+
+ after(:each) do
+ @push.close
+ @pull.close
+ end
+
it "should receive an exact copy of the sent message using Message objects directly on one pull socket" do
@push.send_string string
received = @pull.recv_string
received.should == string
end
@@ -32,35 +37,27 @@
sleep 0.1 # give it time for delivery
@pull.recv received_message, ZMQ::NOBLOCK
received_message.copy_out_string.should == string
end
- it "should receive an exact string copy of the message sent when sending in non-blocking mode and using Message objects directly" do
- sent_message = Message.new string
- received_message = Message.new
-
- @push.send sent_message, ZMQ::NOBLOCK
- sleep 0.1 # give it time for delivery
- @pull.recv received_message, ZMQ::NOBLOCK
- received_message.copy_out_string.should == string
- end
-
it "should receive a single message for each message sent on each socket listening, when an equal number pulls to messages" do
received = []
threads = []
count = 4
+ @pull.close # close this one since we aren't going to use it below and we don't want it to receive a message
- count.times {
- threads << Thread.new {
+ count.times do
+ threads << Thread.new do
pull = @context.socket ZMQ::PULL
- pull.connect @link
+ rc = pull.connect @link
received << pull.recv_string
pull.close
- }
- }
+ end
+ sleep 0.001 # give each thread time to spin up
+ end
- count.times { @push.send_string(string); sleep 0.001 }
-
+ count.times { @push.send_string(string) }
+
threads.each {|t| t.join}
received.find_all {|r| r == string}.length.should == count
end