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