test/test_anonymous.rb in stomp-1.4.5 vs test/test_anonymous.rb in stomp-1.4.6
- old
+ new
@@ -18,33 +18,42 @@
def setup
@conn = get_anonymous_connection()
# Data for multi_thread tests
@max_threads = 20
@max_msgs = 100
+ @tandbg = ENV['TANDBG'] ? true : false
end
def teardown
@conn.disconnect if @conn.open? # allow tests to disconnect
end
# Test basic connection creation.
def test_connection_exists
+ mn = "test_connection_exists" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
assert_not_nil @conn
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test asynchronous polling.
def test_poll_async
- sq = ENV['STOMP_ARTEMIS'] ? "jms.queue.queue.do.not.put.messages.on.this.queue" :
- "/queue/do.not.put.messages.on.this.queue"
+ mn = "test_poll_async" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
+ sq = ENV['STOMP_ARTEMIS'] ? "jms.queue.queue.do.not.put.messages.on.this.queue" :
+ "/queue/do.not.put.messages.on.this.queue"
@conn.subscribe(sq, :id => "a.no.messages.queue")
# If the test 'hangs' here, Connection#poll is broken.
m = @conn.poll
assert m.nil?
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test suppression of content length header.
def test_no_length
+ mn = "test_no_length" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
#
@conn.publish make_destination, "test_stomp#test_no_length",
{ :suppress_content_length => true }
msg = @conn.receive
@@ -53,38 +62,50 @@
@conn.publish make_destination, "test_stomp#test_\000_length",
{ :suppress_content_length => true }
msg2 = @conn.receive
assert_equal "test_stomp#test_", msg2.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end unless ENV['STOMP_RABBIT']
# Test direct / explicit receive.
def test_explicit_receive
+ mn = "test_explicit_receive" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.publish make_destination, "test_stomp#test_explicit_receive"
msg = @conn.receive
assert_equal "test_stomp#test_explicit_receive", msg.body
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test asking for a receipt.
def test_receipt
+ mn = "test_receipt" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination, :receipt => "abc"
msg = @conn.receive
assert_equal "abc", msg.headers['receipt-id']
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test asking for a receipt on disconnect.
def test_disconnect_receipt
+ mn = "test_disconnect_receipt" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
@conn.disconnect :receipt => "abc123"
assert_not_nil(@conn.disconnect_receipt, "should have a receipt")
assert_equal(@conn.disconnect_receipt.headers['receipt-id'],
"abc123", "receipt sent and received should match")
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test ACKs for Stomp 1.0
def test_client_ack_with_symbol_10
+ mn = "test_client_ack_with_symbol_10" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
if @conn.protocol != Stomp::SPL_10
assert true
return
end
queue = make_destination()
@@ -93,14 +114,17 @@
msg = @conn.receive
# ACK has one required header, message-id, which must contain a value
# matching the message-id for the MESSAGE being acknowledged.
@conn.ack msg.headers['message-id']
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test ACKs for Stomp 1.1
def test_client_ack_with_symbol_11
+ mn = "test_client_ack_with_symbol_11" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
if @conn.protocol != Stomp::SPL_11
assert true
return
end
sid = @conn.uuid()
@@ -112,14 +136,17 @@
# matching the message-id for the MESSAGE being acknowledged and
# subscription, which MUST be set to match the value of the subscription's
# id header.
@conn.ack msg.headers['message-id'], :subscription => msg.headers['subscription']
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test ACKs for Stomp 1.2
def test_client_ack_with_symbol_12
+ mn = "test_client_ack_with_symbol_12" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
if @conn.protocol != Stomp::SPL_12
assert true
return
end
sid = @conn.uuid()
@@ -129,37 +156,49 @@
msg = @conn.receive
# The ACK frame MUST include an id header matching the ack header
# of the MESSAGE being acknowledged.
@conn.ack msg.headers['ack']
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test a message with 0x00 embedded in the body.
def test_embedded_null
+ mn = "test_embedded_null" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.publish make_destination, "a\0"
msg = @conn.receive
assert_equal "a\0" , msg.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test connection open checking.
def test_connection_open?
+ mn = "test_connection_open?" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
assert_equal true , @conn.open?
@conn.disconnect
assert_equal false, @conn.open?
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test connection closed checking.
def test_connection_closed?
+ mn = "test_connection_closed?" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
assert_equal false, @conn.closed?
@conn.disconnect
assert_equal true, @conn.closed?
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test that methods detect a closed connection.
def test_closed_checks_conn
+ mn = "test_closed_checks_conn" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
@conn.disconnect
#
assert_raise Stomp::Error::NoCurrentConnection do
@conn.ack("dummy_data")
end
@@ -201,82 +240,104 @@
end
#
assert_raise Stomp::Error::NoCurrentConnection do
_ = @conn.poll
end
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test that we receive a Stomp::Message.
def test_response_is_instance_of_message_class
+ mn = "test_response_is_instance_of_message_class" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.publish make_destination, "a\0"
msg = @conn.receive
assert_instance_of Stomp::Message , msg
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test converting a Message to a string.
def test_message_to_s
+ mn = "test_message_to_s" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.publish make_destination, "a\0"
msg = @conn.receive
assert_match(/^<Stomp::Message headers=/ , msg.to_s)
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test that a connection frame is present.
def test_connection_frame
+ mn = "test_connection_frame" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
assert_not_nil @conn.connection_frame
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test messages with multiple line ends.
def test_messages_with_multipleLine_ends
+ mn = "test_messages_with_multipleLine_ends" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.publish make_destination, "a\n\n"
@conn.publish make_destination, "b\n\na\n\n"
msg_a = @conn.receive
msg_b = @conn.receive
assert_equal "a\n\n", msg_a.body
assert_equal "b\n\na\n\n", msg_b.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test publishing multiple messages.
def test_publish_two_messages
+ mn = "test_publish_two_messages" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.publish make_destination, "a\0"
@conn.publish make_destination, "b\0"
msg_a = @conn.receive
msg_b = @conn.receive
assert_equal "a\0", msg_a.body
assert_equal "b\0", msg_b.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
def test_thread_hang_one
+ mn = "test_thread_hang_one" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
received = nil
Thread.new(@conn) do |amq|
no_rep_error()
while true
received = amq.receive
+ Thread::exit if received
end
end
#
conn_subscribe( make_destination )
message = Time.now.to_s
@conn.publish(make_destination, message)
sleep 1
assert_not_nil received
assert_equal message, received.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test polling with a single thread.
def test_thread_poll_one
+ mn = "test_thread_poll_one" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
received = nil
max_sleep = (RUBY_VERSION =~ /1\.8/) ? 10 : 1
Thread.new(@conn) do |amq|
no_rep_error()
while true
@@ -292,14 +353,17 @@
@conn.publish(make_destination, message)
sleep max_sleep+1
assert_not_nil received
assert_equal message, received.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test receiving with multiple threads.
def test_multi_thread_receive
+ mn = "test_multi_thread_receive" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
lock = Mutex.new
msg_ctr = 0
dest = make_destination
#
1.upto(@max_threads) do |tnum|
@@ -332,14 +396,17 @@
break if total_slept > max_sleep
sleep sleep_incr
end
assert_equal @max_msgs, msg_ctr
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end unless RUBY_ENGINE =~ /jruby/
# Test polling with multiple threads.
def test_multi_thread_poll
+ mn = "test_multi_thread_poll" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
#
lock = Mutex.new
msg_ctr = 0
dest = make_destination
#
@@ -378,24 +445,30 @@
break if total_slept > max_sleep
sleep sleep_incr
end
assert_equal @max_msgs, msg_ctr
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end unless RUBY_ENGINE =~ /jruby/
# Test using a nil body.
def test_nil_body
+ mn = "test_nil_body" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
dest = make_destination
@conn.publish dest, nil
conn_subscribe dest
msg = @conn.receive
assert_equal "", msg.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test transaction message sequencing.
def test_transaction
+ mn = "test_transaction" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
conn_subscribe make_destination
@conn.begin "txA"
@conn.publish make_destination, "txn message", 'transaction' => "txA"
@@ -406,35 +479,44 @@
@conn.commit "txA"
msg = @conn.receive
assert_equal "txn message", msg.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end unless ENV['STOMP_ARTEMIS'] # See Artemis docs for 1.3, page 222
# Test duplicate subscriptions.
def test_duplicate_subscription
+ mn = "test_duplicate_subscription" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
@conn.disconnect # not reliable
@conn = Stomp::Connection.open(nil, nil, host, port, true, nil, nil) # reliable
dest = make_destination
conn_subscribe dest
#
assert_raise Stomp::Error::DuplicateSubscription do
conn_subscribe dest
end
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Test nil 1.1 connection parameters.
def test_nil_connparms
+ mn = "test_nil_connparms" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
@conn.disconnect
#
@conn = Stomp::Connection.open(nil, nil, host, port, false, 5, nil)
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
# Basic NAK test.
def test_nack11p_0010
+ mn = "test_nack11p_0010" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
if @conn.protocol == Stomp::SPL_10
assert_raise Stomp::Error::UnsupportedProtocolError do
@conn.nack "dummy msg-id"
end
else
@@ -463,17 +545,20 @@
sid = @conn.uuid()
@conn.subscribe dest, :ack => :auto, :id => sid
msg2 = @conn.receive
assert_equal smsg, msg2.body
checkEmsg(@conn)
+ p [ "99", mn, "ends" ] if @tandbg
end
end unless (ENV['STOMP_AMQ11'] || ENV['STOMP_ARTEMIS'])
# Test to illustrate Issue #44. Prior to a fix for #44, these tests would
# fail only when connecting to a pure STOMP 1.0 server that does not
# return a 'version' header at all.
def test_conn10_simple
+ mn = "test_conn10_simple" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
@conn.disconnect
#
vhost = ENV['STOMP_RABBIT'] ? "/" : host
hash = { :hosts => [
{:host => host, :port => port, :ssl => false},
@@ -492,18 +577,22 @@
:reliable => false,
}
c = nil
c = Stomp::Connection.new(hash)
c.disconnect if c
+ p [ "99", mn, "ends" ] if @tandbg
end
# test JRuby detection
def test_jruby_presence
+ mn = "test_jruby_presence" if @tandbg
+ p [ "01", mn, "starts" ] if @tandbg
if defined?(RUBY_ENGINE) && RUBY_ENGINE =~ /jruby/
assert @conn.jruby
else
assert !@conn.jruby
end
+ p [ "99", mn, "ends" ] if @tandbg
end
end