test/unit/connection_test.rb in m2r-2.0.2 vs test/unit/connection_test.rb in m2r-2.1.0.pre
- old
+ new
@@ -9,21 +9,20 @@
@response_addr = "inproc://#{SecureRandom.hex}"
@push = M2R.zmq_context.socket(ZMQ::PUSH)
assert_equal 0, @push.bind(@request_addr), "Could not bind push socket in tests"
- @sub = M2R.zmq_context.socket(ZMQ::SUB)
- assert_equal 0, @sub.bind(@response_addr), "Could not bind sub socket in tests"
- @sub.setsockopt(ZMQ::SUBSCRIBE, "")
-
-
@request_socket = M2R.zmq_context.socket(ZMQ::PULL)
@request_socket.connect(@request_addr)
@response_socket = M2R.zmq_context.socket(ZMQ::PUB)
- @response_socket.connect(@response_addr)
+ @response_socket.bind(@response_addr)
@response_socket.setsockopt(ZMQ::IDENTITY, @sender_id = SecureRandom.uuid)
+
+ @sub = M2R.zmq_context.socket(ZMQ::SUB)
+ assert_equal 0, @sub.connect(@response_addr), "Could not connect sub socket in tests"
+ @sub.setsockopt(ZMQ::SUBSCRIBE, "")
end
def teardown
@request_socket.close if @request_socket
@response_socket.close if @response_socket
@@ -31,58 +30,94 @@
@sub.close if @sub
end
def test_receive_message
connection = Connection.new(@request_socket, @response_socket)
- @push.send_string(msg = "1c5fd481-1121-49d8-a706-69127975db1a ebb407b2-49aa-48a5-9f96-9db121051484 / 2:{},0:,", ZMQ::NOBLOCK)
+ @push.send_string(msg = "1c5fd481-1121-49d8-a706-69127975db1a ebb407b2-49aa-48a5-9f96-9db121051484 / 2:{},0:,", ZMQ::NonBlocking)
assert_equal msg, connection.receive
end
def test_deliver_message
connection = Connection.new(@request_socket, @response_socket)
connection.deliver('uuid', ['conn1', 'conn2'], 'ddaattaa')
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 11:conn1 conn2, ddaattaa", msg
end
def test_string_reply_non_close
connection = Connection.new(@request_socket, @response_socket)
connection.reply( stub(sender: 'uuid', conn_id: 'conn1', close?: false), 'ddaattaa')
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 5:conn1, ddaattaa", msg
- assert_equal -1, @sub.recv_string(msg = "", ZMQ::NOBLOCK)
+ assert_equal -1, @sub.recv_string(msg = "", ZMQ::NonBlocking)
end
def test_string_reply_close
connection = Connection.new(@request_socket, @response_socket)
connection.reply( stub(sender: 'uuid', conn_id: 'conn1', close?: true), 'ddaattaa')
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 5:conn1, ddaattaa", msg
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 5:conn1, ", msg
end
def test_response_reply_non_close
connection = Connection.new(@request_socket, @response_socket)
connection.reply( stub(sender: 'uuid', conn_id: 'conn1'), mock(to_s: 'ddaattaa', close?: false))
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 5:conn1, ddaattaa", msg
- assert_equal -1, @sub.recv_string(msg = "", ZMQ::NOBLOCK)
+ assert_equal -1, @sub.recv_string(msg = "", ZMQ::NonBlocking)
end
def test_response_reply_close
connection = Connection.new(@request_socket, @response_socket)
connection.reply( stub(sender: 'uuid', conn_id: 'conn1'), mock(to_s: 'ddaattaa', close?: true))
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 5:conn1, ddaattaa", msg
- assert_equal 0, @sub.recv_string(msg = "")
+ assert @sub.recv_string(msg = "") > 0
assert_equal "uuid 5:conn1, ", msg
end
def test_exception_when_receiving
request_socket = mock(:recv_string => -1)
connection = Connection.new request_socket, nil
assert_raises(Connection::Error) { connection.receive }
+ end
+
+ def test_exception_erron_when_receiving
+ request_socket = mock(:recv_string => -1)
+ ZMQ::Util.expects(:errno).at_least_once.returns(4)
+ connection = Connection.new request_socket, nil
+ begin
+ connection.receive
+ flunk "exception expected"
+ rescue => er
+ assert_equal 4, er.errno
+ assert er.signal?
+ end
+ end
+
+ def test_exception_when_deliverying
+ ZMQ::Util.expects(:errno).at_least_once.returns(1)
+ response_socket = mock(:send_string => -1)
+ connection = Connection.new nil, response_socket
+ assert_raises(Connection::Error) { connection.deliver('uuid', ['connection_ids'], 'data') }
+ end
+
+ def test_exception_signal_retry
+ ZMQ::Util.expects(:errno).at_least_once.returns(4)
+ response_socket = mock
+ response_socket.expects(:send_string).times(3).returns(-1)
+ connection = Connection.new nil, response_socket
+ assert_raises(Connection::Error) { connection.deliver('uuid', ['connection_ids'], 'data') }
+ end
+
+ def test_exception_signal_retry_ok
+ ZMQ::Util.expects(:errno).at_least_once.returns(4)
+ response_socket = mock
+ response_socket.expects(:send_string).twice.returns(-1).then.returns(0)
+ connection = Connection.new nil, response_socket
+ assert connection.deliver('uuid', ['connection_ids'], 'data').size > 0
end
def test_exception_when_deliverying
response_socket = mock(:send_string => -1)
connection = Connection.new nil, response_socket