stomp 1.4.5 → 1.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,7 @@ class TestCodec < Test::Unit::TestCase
20
20
  # Data for multi_thread tests
21
21
  @max_threads = 20
22
22
  @max_msgs = 100
23
+ @tcodbg = ENV['TCODBG'] || ENV['TDBGALL'] ? true : false
23
24
  end
24
25
 
25
26
  def teardown
@@ -28,6 +29,9 @@ class TestCodec < Test::Unit::TestCase
28
29
 
29
30
  # Test that the codec does nothing to strings that do not need encoding.
30
31
  def test_1000_check_notneeded
32
+ mn = "test_1000_check_notneeded" if @tcodbg
33
+ p [ "01", mn, "starts" ] if @tcodbg
34
+
31
35
  test_data = [
32
36
  "a",
33
37
  "abcdefghijklmnopqrstuvwxyz",
@@ -46,10 +50,14 @@ class TestCodec < Test::Unit::TestCase
46
50
  assert_equal s_decoded_a, s_reencoded, "Sanity check reencode: #{s_decoded_a} | #{s_reencoded}"
47
51
  #
48
52
  end
53
+ p [ "99", mn, "ends" ] if @tcodbg
49
54
  end
50
55
 
51
56
  # Test the basic encoding / decoding requirements.
52
57
  def test_1010_basic_encode_decode
58
+ mn = "test_1010_basic_encode_decode" if @tcodbg
59
+ p [ "01", mn, "starts" ] if @tcodbg
60
+
53
61
  test_data = [
54
62
  [ "\\\\\\\\", "\\\\" ], # [encoded, decoded]
55
63
  [ "\\\\", "\\" ], # [encoded, decoded]
@@ -84,10 +92,14 @@ class TestCodec < Test::Unit::TestCase
84
92
  s_encoded_b = Stomp::HeaderCodec::encode(s_decoded_a)
85
93
  assert_equal encoded_orig, s_encoded_b, "Sanity check 2 encode: #{encoded_orig} | #{s_encoded_b}"
86
94
  end
95
+ p [ "99", mn, "ends" ] if @tcodbg
87
96
  end
88
97
 
89
98
  # Test more complex strings with the codec.
90
99
  def test_1020_fancier
100
+ mn = "test_1020_fancier" if @tcodbg
101
+ p [ "01", mn, "starts" ] if @tcodbg
102
+
91
103
  test_data = [
92
104
  [ "a\\\\b", "a\\b" ], # [encoded, decoded]
93
105
  [ "\\\\\\n\\c", "\\\n:" ],
@@ -113,6 +125,7 @@ class TestCodec < Test::Unit::TestCase
113
125
  s_encoded_b = Stomp::HeaderCodec::encode(s_decoded_a)
114
126
  assert_equal encoded_orig, s_encoded_b, "Sanity check 2 encode: #{encoded_orig} | #{s_encoded_b}"
115
127
  end
128
+ p [ "99", mn, "ends" ] if @tcodbg
116
129
  end
117
130
 
118
131
  end # of class
@@ -20,6 +20,7 @@ class TestConnection < Test::Unit::TestCase
20
20
  # Data for multi_thread tests
21
21
  @max_threads = 20
22
22
  @max_msgs = 100
23
+ @tcndbg = ENV['TCNDBG'] || ENV['TDBGALL'] ? true : false
23
24
  end
24
25
 
25
26
  def teardown
@@ -28,21 +29,29 @@ class TestConnection < Test::Unit::TestCase
28
29
 
29
30
  # Test basic connection creation.
30
31
  def test_connection_exists
32
+ mn = "test_connection_exists" if @tcndbg
33
+ p [ "01", mn, "starts" ] if @tcndbg
31
34
  assert_not_nil @conn
35
+ p [ "99", mn, "ends" ] if @tcndbg
32
36
  end
33
37
 
34
38
  # Test asynchronous polling.
35
39
  def test_poll_async
40
+ mn = "test_poll_async" if @tcndbg
41
+ p [ "01", mn, "starts" ] if @tcndbg
36
42
  sq = ENV['STOMP_ARTEMIS'] ? "jms.queue.queue.do.not.put.messages.on.this.queue" :
37
43
  "/queue/do.not.put.messages.on.this.queue"
38
44
  @conn.subscribe(sq, :id => "a.no.messages.queue")
39
45
  # If the test 'hangs' here, Connection#poll is broken.
40
46
  m = @conn.poll
41
47
  assert m.nil?
48
+ p [ "99", mn, "ends" ] if @tcndbg
42
49
  end
43
50
 
44
51
  # Test suppression of content length header.
45
52
  def test_no_length
53
+ mn = "test_no_length" if @tcndbg
54
+ p [ "01", mn, "starts" ] if @tcndbg
46
55
  conn_subscribe make_destination
47
56
  #
48
57
  @conn.publish make_destination, "test_stomp#test_no_length",
@@ -55,34 +64,51 @@ class TestConnection < Test::Unit::TestCase
55
64
  msg2 = @conn.receive
56
65
  assert_equal "test_stomp#test_", msg2.body
57
66
  checkEmsg(@conn)
67
+ p [ "99", mn, "ends" ] if @tcndbg
58
68
  end unless ENV['STOMP_RABBIT']
59
69
 
60
70
  # Test direct / explicit receive.
61
71
  def test_explicit_receive
72
+ mn = "test_explicit_receive" if @tcndbg
73
+ p [ "01", mn, "starts" ] if @tcndbg
62
74
  conn_subscribe make_destination
63
75
  @conn.publish make_destination, "test_stomp#test_explicit_receive"
64
76
  msg = @conn.receive
65
77
  assert_equal "test_stomp#test_explicit_receive", msg.body
78
+ p [ "99", mn, "ends" ] if @tcndbg
66
79
  end
67
80
 
68
81
  # Test asking for a receipt.
69
82
  def test_receipt
83
+ mn = "test_receipt" if @tcndbg
84
+ p [ "01", mn, "starts" ] if @tcndbg
85
+ p [ "02", @conn.protocol ] if @tcndbg
70
86
  conn_subscribe make_destination, :receipt => "abc"
71
87
  msg = @conn.receive
72
- assert_equal "abc", msg.headers['receipt-id']
88
+ p [ "05", msg.headers['receipt-id'].class, msg.headers['receipt-id'].is_a?(Array) ] if @tcndbg
89
+ #
90
+ tval = msg.headers['receipt-id']
91
+ tval = msg.headers['receipt-id'][0] if msg.headers['receipt-id'].is_a?(Array)
92
+ assert_equal "abc", tval
73
93
  checkEmsg(@conn)
94
+ p [ "99", mn, "ends" ] if @tcndbg
74
95
  end
75
96
 
76
97
  # Test asking for a receipt on disconnect.
77
98
  def test_disconnect_receipt
99
+ mn = "test_disconnect_receipt" if @tcndbg
100
+ p [ "01", mn, "starts" ] if @tcndbg
78
101
  @conn.disconnect :receipt => "abc123"
79
102
  assert_not_nil(@conn.disconnect_receipt, "should have a receipt")
80
103
  assert_equal(@conn.disconnect_receipt.headers['receipt-id'],
81
104
  "abc123", "receipt sent and received should match")
105
+ p [ "99", mn, "ends" ] if @tcndbg
82
106
  end
83
107
 
84
108
  # Test ACKs for Stomp 1.0
85
109
  def test_client_ack_with_symbol_10
110
+ mn = "test_client_ack_with_symbol_10" if @tcndbg
111
+ p [ "01", mn, "starts" ] if @tcndbg
86
112
  if @conn.protocol != Stomp::SPL_10
87
113
  assert true
88
114
  return
@@ -95,10 +121,13 @@ class TestConnection < Test::Unit::TestCase
95
121
  # matching the message-id for the MESSAGE being acknowledged.
96
122
  @conn.ack msg.headers['message-id']
97
123
  checkEmsg(@conn)
124
+ p [ "99", mn, "ends" ] if @tcndbg
98
125
  end
99
126
 
100
127
  # Test ACKs for Stomp 1.1
101
128
  def test_client_ack_with_symbol_11
129
+ mn = "test_client_ack_with_symbol_11" if @tcndbg
130
+ p [ "01", mn, "starts" ] if @tcndbg
102
131
  if @conn.protocol != Stomp::SPL_11
103
132
  assert true
104
133
  return
@@ -114,10 +143,13 @@ class TestConnection < Test::Unit::TestCase
114
143
  # id header.
115
144
  @conn.ack msg.headers['message-id'], :subscription => msg.headers['subscription']
116
145
  checkEmsg(@conn)
146
+ p [ "99", mn, "ends" ] if @tcndbg
117
147
  end
118
148
 
119
149
  # Test ACKs for Stomp 1.2
120
150
  def test_client_ack_with_symbol_12
151
+ mn = "test_client_ack_with_symbol_12" if @tcndbg
152
+ p [ "01", mn, "starts" ] if @tcndbg
121
153
  if @conn.protocol != Stomp::SPL_12
122
154
  assert true
123
155
  return
@@ -131,33 +163,45 @@ class TestConnection < Test::Unit::TestCase
131
163
  # of the MESSAGE being acknowledged.
132
164
  @conn.ack msg.headers['ack']
133
165
  checkEmsg(@conn)
166
+ p [ "99", mn, "ends" ] if @tcndbg
134
167
  end
135
168
 
136
169
  # Test a message with 0x00 embedded in the body.
137
170
  def test_embedded_null
171
+ mn = "test_embedded_null" if @tcndbg
172
+ p [ "01", mn, "starts" ] if @tcndbg
138
173
  conn_subscribe make_destination
139
174
  @conn.publish make_destination, "a\0"
140
175
  msg = @conn.receive
141
176
  assert_equal "a\0" , msg.body
142
177
  checkEmsg(@conn)
178
+ p [ "99", mn, "ends" ] if @tcndbg
143
179
  end
144
180
 
145
181
  # Test connection open checking.
146
182
  def test_connection_open?
183
+ mn = "test_connection_open?" if @tcndbg
184
+ p [ "01", mn, "starts" ] if @tcndbg
147
185
  assert_equal true , @conn.open?
148
186
  @conn.disconnect
149
187
  assert_equal false, @conn.open?
188
+ p [ "99", mn, "ends" ] if @tcndbg
150
189
  end
151
190
 
152
191
  # Test connection closed checking.
153
192
  def test_connection_closed?
193
+ mn = "test_connection_closed?" if @tcndbg
194
+ p [ "01", mn, "starts" ] if @tcndbg
154
195
  assert_equal false, @conn.closed?
155
196
  @conn.disconnect
156
197
  assert_equal true, @conn.closed?
198
+ p [ "99", mn, "ends" ] if @tcndbg
157
199
  end
158
200
 
159
201
  # Test that methods detect a closed connection.
160
202
  def test_closed_checks_conn
203
+ mn = "test_closed_checks_conn" if @tcndbg
204
+ p [ "01", mn, "starts" ] if @tcndbg
161
205
  @conn.disconnect
162
206
  #
163
207
  assert_raise Stomp::Error::NoCurrentConnection do
@@ -203,33 +247,45 @@ class TestConnection < Test::Unit::TestCase
203
247
  assert_raise Stomp::Error::NoCurrentConnection do
204
248
  _ = @conn.poll
205
249
  end
250
+ p [ "99", mn, "ends" ] if @tcndbg
206
251
  end
207
252
 
208
253
  # Test that we receive a Stomp::Message.
209
254
  def test_response_is_instance_of_message_class
255
+ mn = "test_response_is_instance_of_message_class" if @tcndbg
256
+ p [ "01", mn, "starts" ] if @tcndbg
210
257
  conn_subscribe make_destination
211
258
  @conn.publish make_destination, "a\0"
212
259
  msg = @conn.receive
213
260
  assert_instance_of Stomp::Message , msg
214
261
  checkEmsg(@conn)
262
+ p [ "99", mn, "ends" ] if @tcndbg
215
263
  end
216
264
 
217
265
  # Test converting a Message to a string.
218
266
  def test_message_to_s
267
+ mn = "test_message_to_s" if @tcndbg
268
+ p [ "01", mn, "starts" ] if @tcndbg
219
269
  conn_subscribe make_destination
220
270
  @conn.publish make_destination, "a\0"
221
271
  msg = @conn.receive
222
272
  assert_match(/^<Stomp::Message headers=/ , msg.to_s)
223
273
  checkEmsg(@conn)
274
+ p [ "99", mn, "ends" ] if @tcndbg
224
275
  end
225
276
 
226
277
  # Test that a connection frame is present.
227
278
  def test_connection_frame
279
+ mn = "test_connection_frame" if @tcndbg
280
+ p [ "01", mn, "starts" ] if @tcndbg
228
281
  assert_not_nil @conn.connection_frame
282
+ p [ "99", mn, "ends" ] if @tcndbg
229
283
  end
230
284
 
231
285
  # Test messages with multiple line ends.
232
286
  def test_messages_with_multipleLine_ends
287
+ mn = "test_messages_with_multipleLine_ends" if @tcndbg
288
+ p [ "01", mn, "starts" ] if @tcndbg
233
289
  conn_subscribe make_destination
234
290
  @conn.publish make_destination, "a\n\n"
235
291
  @conn.publish make_destination, "b\n\na\n\n"
@@ -240,10 +296,13 @@ class TestConnection < Test::Unit::TestCase
240
296
  assert_equal "a\n\n", msg_a.body
241
297
  assert_equal "b\n\na\n\n", msg_b.body
242
298
  checkEmsg(@conn)
299
+ p [ "99", mn, "ends" ] if @tcndbg
243
300
  end
244
301
 
245
302
  # Test publishing multiple messages.
246
303
  def test_publish_two_messages
304
+ mn = "test_publish_two_messages" if @tcndbg
305
+ p [ "01", mn, "starts" ] if @tcndbg
247
306
  conn_subscribe make_destination
248
307
  @conn.publish make_destination, "a\0"
249
308
  @conn.publish make_destination, "b\0"
@@ -253,14 +312,18 @@ class TestConnection < Test::Unit::TestCase
253
312
  assert_equal "a\0", msg_a.body
254
313
  assert_equal "b\0", msg_b.body
255
314
  checkEmsg(@conn)
315
+ p [ "99", mn, "ends" ] if @tcndbg
256
316
  end
257
317
 
258
318
  def test_thread_hang_one
319
+ mn = "test_thread_hang_one" if @tcndbg
320
+ p [ "01", mn, "starts" ] if @tcndbg
259
321
  received = nil
260
322
  Thread.new(@conn) do |amq|
261
323
  no_rep_error()
262
324
  while true
263
325
  received = amq.receive
326
+ Thread::exit if received
264
327
  end
265
328
  end
266
329
  #
@@ -271,10 +334,13 @@ class TestConnection < Test::Unit::TestCase
271
334
  assert_not_nil received
272
335
  assert_equal message, received.body
273
336
  checkEmsg(@conn)
337
+ p [ "99", mn, "ends" ] if @tcndbg
274
338
  end
275
339
 
276
340
  # Test polling with a single thread.
277
341
  def test_thread_poll_one
342
+ mn = "test_thread_poll_one" if @tcndbg
343
+ p [ "01", mn, "starts" ] if @tcndbg
278
344
  received = nil
279
345
  max_sleep = (RUBY_VERSION =~ /1\.8/) ? 10 : 1
280
346
  Thread.new(@conn) do |amq|
@@ -294,10 +360,13 @@ class TestConnection < Test::Unit::TestCase
294
360
  assert_not_nil received
295
361
  assert_equal message, received.body
296
362
  checkEmsg(@conn)
363
+ p [ "99", mn, "ends" ] if @tcndbg
297
364
  end
298
365
 
299
366
  # Test receiving with multiple threads.
300
367
  def test_multi_thread_receive
368
+ mn = "test_multi_thread_receive" if @tcndbg
369
+ p [ "01", mn, "starts" ] if @tcndbg
301
370
  lock = Mutex.new
302
371
  msg_ctr = 0
303
372
  dest = make_destination
@@ -334,10 +403,13 @@ class TestConnection < Test::Unit::TestCase
334
403
  end
335
404
  assert_equal @max_msgs, msg_ctr
336
405
  checkEmsg(@conn)
406
+ p [ "99", mn, "ends" ] if @tcndbg
337
407
  end unless RUBY_ENGINE =~ /jruby/
338
408
 
339
409
  # Test polling with multiple threads.
340
410
  def test_multi_thread_poll
411
+ mn = "test_multi_thread_poll" if @tcndbg
412
+ p [ "01", mn, "starts" ] if @tcndbg
341
413
  #
342
414
  lock = Mutex.new
343
415
  msg_ctr = 0
@@ -380,20 +452,26 @@ class TestConnection < Test::Unit::TestCase
380
452
  end
381
453
  assert_equal @max_msgs, msg_ctr
382
454
  checkEmsg(@conn)
455
+ p [ "99", mn, "ends" ] if @tcndbg
383
456
  end unless RUBY_ENGINE =~ /jruby/
384
457
 
385
458
  # Test using a nil body.
386
459
  def test_nil_body
460
+ mn = "test_nil_body" if @tcndbg
461
+ p [ "01", mn, "starts" ] if @tcndbg
387
462
  dest = make_destination
388
463
  @conn.publish dest, nil
389
464
  conn_subscribe dest
390
465
  msg = @conn.receive
391
466
  assert_equal "", msg.body
392
467
  checkEmsg(@conn)
468
+ p [ "99", mn, "ends" ] if @tcndbg
393
469
  end
394
470
 
395
471
  # Test transaction message sequencing.
396
472
  def test_transaction
473
+ mn = "test_transaction" if @tcndbg
474
+ p [ "01", mn, "starts" ] if @tcndbg
397
475
  conn_subscribe make_destination
398
476
 
399
477
  @conn.begin "txA"
@@ -408,10 +486,13 @@ class TestConnection < Test::Unit::TestCase
408
486
  msg = @conn.receive
409
487
  assert_equal "txn message", msg.body
410
488
  checkEmsg(@conn)
489
+ p [ "99", mn, "ends" ] if @tcndbg
411
490
  end unless ENV['STOMP_ARTEMIS'] # See Artemis docs for 1.3, page 222
412
491
 
413
492
  # Test duplicate subscriptions.
414
493
  def test_duplicate_subscription
494
+ mn = "test_duplicate_subscription" if @tcndbg
495
+ p [ "01", mn, "starts" ] if @tcndbg
415
496
  @conn.disconnect # not reliable
416
497
  @conn = Stomp::Connection.open(user, passcode, host, port, true) # reliable
417
498
  dest = make_destination
@@ -421,18 +502,24 @@ class TestConnection < Test::Unit::TestCase
421
502
  conn_subscribe dest
422
503
  end
423
504
  checkEmsg(@conn)
505
+ p [ "99", mn, "ends" ] if @tcndbg
424
506
  end
425
507
 
426
508
  # Test nil 1.1 connection parameters.
427
509
  def test_nil_connparms
510
+ mn = "test_nil_connparms" if @tcndbg
511
+ p [ "01", mn, "starts" ] if @tcndbg
428
512
  @conn.disconnect
429
513
  #
430
514
  @conn = Stomp::Connection.open(user, passcode, host, port, false, 5, nil)
431
515
  checkEmsg(@conn)
516
+ p [ "99", mn, "ends" ] if @tcndbg
432
517
  end
433
518
 
434
519
  # Basic NAK test.
435
520
  def test_nack11p_0010
521
+ mn = "test_nack11p_0010" if @tcndbg
522
+ p [ "01", mn, "starts" ] if @tcndbg
436
523
  if @conn.protocol == Stomp::SPL_10
437
524
  assert_raise Stomp::Error::UnsupportedProtocolError do
438
525
  @conn.nack "dummy msg-id"
@@ -465,6 +552,7 @@ class TestConnection < Test::Unit::TestCase
465
552
  msg2 = @conn.receive
466
553
  assert_equal smsg, msg2.body
467
554
  checkEmsg(@conn)
555
+ p [ "99", mn, "ends" ] if @tcndbg
468
556
  end
469
557
  end unless (ENV['STOMP_AMQ11'] || ENV['STOMP_ARTEMIS'])
470
558
 
@@ -472,6 +560,8 @@ class TestConnection < Test::Unit::TestCase
472
560
  # fail only when connecting to a pure STOMP 1.0 server that does not
473
561
  # return a 'version' header at all.
474
562
  def test_conn10_simple
563
+ mn = "test_conn10_simple" if @tcndbg
564
+ p [ "01", mn, "starts" ] if @tcndbg
475
565
  @conn.disconnect
476
566
  #
477
567
  vhost = ENV['STOMP_RABBIT'] ? "/" : host
@@ -494,19 +584,25 @@ class TestConnection < Test::Unit::TestCase
494
584
  c = nil
495
585
  c = Stomp::Connection.new(hash)
496
586
  c.disconnect if c
587
+ p [ "99", mn, "ends" ] if @tcndbg
497
588
  end
498
589
 
499
590
  # test JRuby detection
500
591
  def test_jruby_presence
592
+ mn = "test_jruby_presence" if @tcndbg
593
+ p [ "01", mn, "starts" ] if @tcndbg
501
594
  if defined?(RUBY_ENGINE) && RUBY_ENGINE =~ /jruby/
502
595
  assert @conn.jruby
503
596
  else
504
597
  assert !@conn.jruby
505
598
  end
599
+ p [ "99", mn, "ends" ] if @tcndbg
506
600
  end
507
601
 
508
602
  # Test that methods detect an empty header key.
509
603
  def test_empty_header_key
604
+ mn = "test_empty_header_key" if @tcndbg
605
+ p [ "01", mn, "starts" ] if @tcndbg
510
606
  #
511
607
  bad_headers = {"a" => "11", "" => "emptykey", :c => "ccc"}
512
608
  #
@@ -545,11 +641,14 @@ class TestConnection < Test::Unit::TestCase
545
641
  assert_raise Stomp::Error::ProtocolErrorEmptyHeaderKey do
546
642
  @conn.disconnect(bad_headers)
547
643
  end
644
+ p [ "99", mn, "ends" ] if @tcndbg
548
645
  end
549
646
 
550
647
  # Test that methods detect an empty header value.
551
648
  # STOMP 1.0 only.
552
649
  def test_empty_header_value
650
+ mn = "test_empty_header_value" if @tcndbg
651
+ p [ "01", mn, "starts" ] if @tcndbg
553
652
  if @conn.protocol != Stomp::SPL_10
554
653
  assert true
555
654
  return
@@ -592,10 +691,13 @@ class TestConnection < Test::Unit::TestCase
592
691
  assert_raise Stomp::Error::ProtocolErrorEmptyHeaderValue do
593
692
  @conn.disconnect(bad_headers)
594
693
  end
694
+ p [ "99", mn, "ends" ] if @tcndbg
595
695
  end
596
696
 
597
697
  # test issue99, OK values
598
698
  def test_con_iss99_ok
699
+ mn = "test_con_iss99_ok" if @tcndbg
700
+ p [ "01", mn, "starts" ] if @tcndbg
599
701
  return unless host() == "localhost" && port() == 61613
600
702
  #
601
703
  ok_vals = dflt_data_ok()
@@ -603,24 +705,34 @@ class TestConnection < Test::Unit::TestCase
603
705
  conn = Stomp::Connection.new(hsv)
604
706
  conn.disconnect
605
707
  end
708
+ p [ "99", mn, "ends" ] if @tcndbg
606
709
  end
607
710
 
608
711
  def test_conn_nodest_sub
712
+ mn = "test_conn_nodest_sub" if @tcndbg
713
+ p [ "01", mn, "starts" ] if @tcndbg
609
714
  assert_raise Stomp::Error::DestinationRequired do
610
715
  @conn.subscribe(nil)
611
716
  end
717
+ p [ "99", mn, "ends" ] if @tcndbg
612
718
  end
613
719
 
614
720
  def test_conn_nodest_unsub
721
+ mn = "test_conn_nodest_unsub" if @tcndbg
722
+ p [ "01", mn, "starts" ] if @tcndbg
615
723
  assert_raise Stomp::Error::DestinationRequired do
616
724
  @conn.unsubscribe(nil)
617
725
  end
726
+ p [ "99", mn, "ends" ] if @tcndbg
618
727
  end
619
728
 
620
729
  def test_conn_nodest_pub
730
+ mn = "test_conn_nodest_pub" if @tcndbg
731
+ p [ "01", mn, "starts" ] if @tcndbg
621
732
  assert_raise Stomp::Error::DestinationRequired do
622
733
  @conn.publish(nil, "msg")
623
734
  end
735
+ p [ "99", mn, "ends" ] if @tcndbg
624
736
  end
625
737
 
626
738
  end