stomp 1.4.5 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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'] ? 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'] ? 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,46 @@ 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
70
85
  conn_subscribe make_destination, :receipt => "abc"
71
86
  msg = @conn.receive
72
87
  assert_equal "abc", msg.headers['receipt-id']
73
88
  checkEmsg(@conn)
89
+ p [ "99", mn, "ends" ] if @tcndbg
74
90
  end
75
91
 
76
92
  # Test asking for a receipt on disconnect.
77
93
  def test_disconnect_receipt
94
+ mn = "test_disconnect_receipt" if @tcndbg
95
+ p [ "01", mn, "starts" ] if @tcndbg
78
96
  @conn.disconnect :receipt => "abc123"
79
97
  assert_not_nil(@conn.disconnect_receipt, "should have a receipt")
80
98
  assert_equal(@conn.disconnect_receipt.headers['receipt-id'],
81
99
  "abc123", "receipt sent and received should match")
100
+ p [ "99", mn, "ends" ] if @tcndbg
82
101
  end
83
102
 
84
103
  # Test ACKs for Stomp 1.0
85
104
  def test_client_ack_with_symbol_10
105
+ mn = "test_client_ack_with_symbol_10" if @tcndbg
106
+ p [ "01", mn, "starts" ] if @tcndbg
86
107
  if @conn.protocol != Stomp::SPL_10
87
108
  assert true
88
109
  return
@@ -95,10 +116,13 @@ class TestConnection < Test::Unit::TestCase
95
116
  # matching the message-id for the MESSAGE being acknowledged.
96
117
  @conn.ack msg.headers['message-id']
97
118
  checkEmsg(@conn)
119
+ p [ "99", mn, "ends" ] if @tcndbg
98
120
  end
99
121
 
100
122
  # Test ACKs for Stomp 1.1
101
123
  def test_client_ack_with_symbol_11
124
+ mn = "test_client_ack_with_symbol_11" if @tcndbg
125
+ p [ "01", mn, "starts" ] if @tcndbg
102
126
  if @conn.protocol != Stomp::SPL_11
103
127
  assert true
104
128
  return
@@ -114,10 +138,13 @@ class TestConnection < Test::Unit::TestCase
114
138
  # id header.
115
139
  @conn.ack msg.headers['message-id'], :subscription => msg.headers['subscription']
116
140
  checkEmsg(@conn)
141
+ p [ "99", mn, "ends" ] if @tcndbg
117
142
  end
118
143
 
119
144
  # Test ACKs for Stomp 1.2
120
145
  def test_client_ack_with_symbol_12
146
+ mn = "test_client_ack_with_symbol_12" if @tcndbg
147
+ p [ "01", mn, "starts" ] if @tcndbg
121
148
  if @conn.protocol != Stomp::SPL_12
122
149
  assert true
123
150
  return
@@ -131,33 +158,45 @@ class TestConnection < Test::Unit::TestCase
131
158
  # of the MESSAGE being acknowledged.
132
159
  @conn.ack msg.headers['ack']
133
160
  checkEmsg(@conn)
161
+ p [ "99", mn, "ends" ] if @tcndbg
134
162
  end
135
163
 
136
164
  # Test a message with 0x00 embedded in the body.
137
165
  def test_embedded_null
166
+ mn = "test_embedded_null" if @tcndbg
167
+ p [ "01", mn, "starts" ] if @tcndbg
138
168
  conn_subscribe make_destination
139
169
  @conn.publish make_destination, "a\0"
140
170
  msg = @conn.receive
141
171
  assert_equal "a\0" , msg.body
142
172
  checkEmsg(@conn)
173
+ p [ "99", mn, "ends" ] if @tcndbg
143
174
  end
144
175
 
145
176
  # Test connection open checking.
146
177
  def test_connection_open?
178
+ mn = "test_connection_open?" if @tcndbg
179
+ p [ "01", mn, "starts" ] if @tcndbg
147
180
  assert_equal true , @conn.open?
148
181
  @conn.disconnect
149
182
  assert_equal false, @conn.open?
183
+ p [ "99", mn, "ends" ] if @tcndbg
150
184
  end
151
185
 
152
186
  # Test connection closed checking.
153
187
  def test_connection_closed?
188
+ mn = "test_connection_closed?" if @tcndbg
189
+ p [ "01", mn, "starts" ] if @tcndbg
154
190
  assert_equal false, @conn.closed?
155
191
  @conn.disconnect
156
192
  assert_equal true, @conn.closed?
193
+ p [ "99", mn, "ends" ] if @tcndbg
157
194
  end
158
195
 
159
196
  # Test that methods detect a closed connection.
160
197
  def test_closed_checks_conn
198
+ mn = "test_closed_checks_conn" if @tcndbg
199
+ p [ "01", mn, "starts" ] if @tcndbg
161
200
  @conn.disconnect
162
201
  #
163
202
  assert_raise Stomp::Error::NoCurrentConnection do
@@ -203,33 +242,45 @@ class TestConnection < Test::Unit::TestCase
203
242
  assert_raise Stomp::Error::NoCurrentConnection do
204
243
  _ = @conn.poll
205
244
  end
245
+ p [ "99", mn, "ends" ] if @tcndbg
206
246
  end
207
247
 
208
248
  # Test that we receive a Stomp::Message.
209
249
  def test_response_is_instance_of_message_class
250
+ mn = "test_response_is_instance_of_message_class" if @tcndbg
251
+ p [ "01", mn, "starts" ] if @tcndbg
210
252
  conn_subscribe make_destination
211
253
  @conn.publish make_destination, "a\0"
212
254
  msg = @conn.receive
213
255
  assert_instance_of Stomp::Message , msg
214
256
  checkEmsg(@conn)
257
+ p [ "99", mn, "ends" ] if @tcndbg
215
258
  end
216
259
 
217
260
  # Test converting a Message to a string.
218
261
  def test_message_to_s
262
+ mn = "test_message_to_s" if @tcndbg
263
+ p [ "01", mn, "starts" ] if @tcndbg
219
264
  conn_subscribe make_destination
220
265
  @conn.publish make_destination, "a\0"
221
266
  msg = @conn.receive
222
267
  assert_match(/^<Stomp::Message headers=/ , msg.to_s)
223
268
  checkEmsg(@conn)
269
+ p [ "99", mn, "ends" ] if @tcndbg
224
270
  end
225
271
 
226
272
  # Test that a connection frame is present.
227
273
  def test_connection_frame
274
+ mn = "test_connection_frame" if @tcndbg
275
+ p [ "01", mn, "starts" ] if @tcndbg
228
276
  assert_not_nil @conn.connection_frame
277
+ p [ "99", mn, "ends" ] if @tcndbg
229
278
  end
230
279
 
231
280
  # Test messages with multiple line ends.
232
281
  def test_messages_with_multipleLine_ends
282
+ mn = "test_messages_with_multipleLine_ends" if @tcndbg
283
+ p [ "01", mn, "starts" ] if @tcndbg
233
284
  conn_subscribe make_destination
234
285
  @conn.publish make_destination, "a\n\n"
235
286
  @conn.publish make_destination, "b\n\na\n\n"
@@ -240,10 +291,13 @@ class TestConnection < Test::Unit::TestCase
240
291
  assert_equal "a\n\n", msg_a.body
241
292
  assert_equal "b\n\na\n\n", msg_b.body
242
293
  checkEmsg(@conn)
294
+ p [ "99", mn, "ends" ] if @tcndbg
243
295
  end
244
296
 
245
297
  # Test publishing multiple messages.
246
298
  def test_publish_two_messages
299
+ mn = "test_publish_two_messages" if @tcndbg
300
+ p [ "01", mn, "starts" ] if @tcndbg
247
301
  conn_subscribe make_destination
248
302
  @conn.publish make_destination, "a\0"
249
303
  @conn.publish make_destination, "b\0"
@@ -253,14 +307,18 @@ class TestConnection < Test::Unit::TestCase
253
307
  assert_equal "a\0", msg_a.body
254
308
  assert_equal "b\0", msg_b.body
255
309
  checkEmsg(@conn)
310
+ p [ "99", mn, "ends" ] if @tcndbg
256
311
  end
257
312
 
258
313
  def test_thread_hang_one
314
+ mn = "test_thread_hang_one" if @tcndbg
315
+ p [ "01", mn, "starts" ] if @tcndbg
259
316
  received = nil
260
317
  Thread.new(@conn) do |amq|
261
318
  no_rep_error()
262
319
  while true
263
320
  received = amq.receive
321
+ Thread::exit if received
264
322
  end
265
323
  end
266
324
  #
@@ -271,10 +329,13 @@ class TestConnection < Test::Unit::TestCase
271
329
  assert_not_nil received
272
330
  assert_equal message, received.body
273
331
  checkEmsg(@conn)
332
+ p [ "99", mn, "ends" ] if @tcndbg
274
333
  end
275
334
 
276
335
  # Test polling with a single thread.
277
336
  def test_thread_poll_one
337
+ mn = "test_thread_poll_one" if @tcndbg
338
+ p [ "01", mn, "starts" ] if @tcndbg
278
339
  received = nil
279
340
  max_sleep = (RUBY_VERSION =~ /1\.8/) ? 10 : 1
280
341
  Thread.new(@conn) do |amq|
@@ -294,10 +355,13 @@ class TestConnection < Test::Unit::TestCase
294
355
  assert_not_nil received
295
356
  assert_equal message, received.body
296
357
  checkEmsg(@conn)
358
+ p [ "99", mn, "ends" ] if @tcndbg
297
359
  end
298
360
 
299
361
  # Test receiving with multiple threads.
300
362
  def test_multi_thread_receive
363
+ mn = "test_multi_thread_receive" if @tcndbg
364
+ p [ "01", mn, "starts" ] if @tcndbg
301
365
  lock = Mutex.new
302
366
  msg_ctr = 0
303
367
  dest = make_destination
@@ -334,10 +398,13 @@ class TestConnection < Test::Unit::TestCase
334
398
  end
335
399
  assert_equal @max_msgs, msg_ctr
336
400
  checkEmsg(@conn)
401
+ p [ "99", mn, "ends" ] if @tcndbg
337
402
  end unless RUBY_ENGINE =~ /jruby/
338
403
 
339
404
  # Test polling with multiple threads.
340
405
  def test_multi_thread_poll
406
+ mn = "test_multi_thread_poll" if @tcndbg
407
+ p [ "01", mn, "starts" ] if @tcndbg
341
408
  #
342
409
  lock = Mutex.new
343
410
  msg_ctr = 0
@@ -380,20 +447,26 @@ class TestConnection < Test::Unit::TestCase
380
447
  end
381
448
  assert_equal @max_msgs, msg_ctr
382
449
  checkEmsg(@conn)
450
+ p [ "99", mn, "ends" ] if @tcndbg
383
451
  end unless RUBY_ENGINE =~ /jruby/
384
452
 
385
453
  # Test using a nil body.
386
454
  def test_nil_body
455
+ mn = "test_nil_body" if @tcndbg
456
+ p [ "01", mn, "starts" ] if @tcndbg
387
457
  dest = make_destination
388
458
  @conn.publish dest, nil
389
459
  conn_subscribe dest
390
460
  msg = @conn.receive
391
461
  assert_equal "", msg.body
392
462
  checkEmsg(@conn)
463
+ p [ "99", mn, "ends" ] if @tcndbg
393
464
  end
394
465
 
395
466
  # Test transaction message sequencing.
396
467
  def test_transaction
468
+ mn = "test_transaction" if @tcndbg
469
+ p [ "01", mn, "starts" ] if @tcndbg
397
470
  conn_subscribe make_destination
398
471
 
399
472
  @conn.begin "txA"
@@ -408,10 +481,13 @@ class TestConnection < Test::Unit::TestCase
408
481
  msg = @conn.receive
409
482
  assert_equal "txn message", msg.body
410
483
  checkEmsg(@conn)
484
+ p [ "99", mn, "ends" ] if @tcndbg
411
485
  end unless ENV['STOMP_ARTEMIS'] # See Artemis docs for 1.3, page 222
412
486
 
413
487
  # Test duplicate subscriptions.
414
488
  def test_duplicate_subscription
489
+ mn = "test_duplicate_subscription" if @tcndbg
490
+ p [ "01", mn, "starts" ] if @tcndbg
415
491
  @conn.disconnect # not reliable
416
492
  @conn = Stomp::Connection.open(user, passcode, host, port, true) # reliable
417
493
  dest = make_destination
@@ -421,18 +497,24 @@ class TestConnection < Test::Unit::TestCase
421
497
  conn_subscribe dest
422
498
  end
423
499
  checkEmsg(@conn)
500
+ p [ "99", mn, "ends" ] if @tcndbg
424
501
  end
425
502
 
426
503
  # Test nil 1.1 connection parameters.
427
504
  def test_nil_connparms
505
+ mn = "test_nil_connparms" if @tcndbg
506
+ p [ "01", mn, "starts" ] if @tcndbg
428
507
  @conn.disconnect
429
508
  #
430
509
  @conn = Stomp::Connection.open(user, passcode, host, port, false, 5, nil)
431
510
  checkEmsg(@conn)
511
+ p [ "99", mn, "ends" ] if @tcndbg
432
512
  end
433
513
 
434
514
  # Basic NAK test.
435
515
  def test_nack11p_0010
516
+ mn = "test_nack11p_0010" if @tcndbg
517
+ p [ "01", mn, "starts" ] if @tcndbg
436
518
  if @conn.protocol == Stomp::SPL_10
437
519
  assert_raise Stomp::Error::UnsupportedProtocolError do
438
520
  @conn.nack "dummy msg-id"
@@ -465,6 +547,7 @@ class TestConnection < Test::Unit::TestCase
465
547
  msg2 = @conn.receive
466
548
  assert_equal smsg, msg2.body
467
549
  checkEmsg(@conn)
550
+ p [ "99", mn, "ends" ] if @tcndbg
468
551
  end
469
552
  end unless (ENV['STOMP_AMQ11'] || ENV['STOMP_ARTEMIS'])
470
553
 
@@ -472,6 +555,8 @@ class TestConnection < Test::Unit::TestCase
472
555
  # fail only when connecting to a pure STOMP 1.0 server that does not
473
556
  # return a 'version' header at all.
474
557
  def test_conn10_simple
558
+ mn = "test_conn10_simple" if @tcndbg
559
+ p [ "01", mn, "starts" ] if @tcndbg
475
560
  @conn.disconnect
476
561
  #
477
562
  vhost = ENV['STOMP_RABBIT'] ? "/" : host
@@ -494,19 +579,25 @@ class TestConnection < Test::Unit::TestCase
494
579
  c = nil
495
580
  c = Stomp::Connection.new(hash)
496
581
  c.disconnect if c
582
+ p [ "99", mn, "ends" ] if @tcndbg
497
583
  end
498
584
 
499
585
  # test JRuby detection
500
586
  def test_jruby_presence
587
+ mn = "test_jruby_presence" if @tcndbg
588
+ p [ "01", mn, "starts" ] if @tcndbg
501
589
  if defined?(RUBY_ENGINE) && RUBY_ENGINE =~ /jruby/
502
590
  assert @conn.jruby
503
591
  else
504
592
  assert !@conn.jruby
505
593
  end
594
+ p [ "99", mn, "ends" ] if @tcndbg
506
595
  end
507
596
 
508
597
  # Test that methods detect an empty header key.
509
598
  def test_empty_header_key
599
+ mn = "test_empty_header_key" if @tcndbg
600
+ p [ "01", mn, "starts" ] if @tcndbg
510
601
  #
511
602
  bad_headers = {"a" => "11", "" => "emptykey", :c => "ccc"}
512
603
  #
@@ -545,11 +636,14 @@ class TestConnection < Test::Unit::TestCase
545
636
  assert_raise Stomp::Error::ProtocolErrorEmptyHeaderKey do
546
637
  @conn.disconnect(bad_headers)
547
638
  end
639
+ p [ "99", mn, "ends" ] if @tcndbg
548
640
  end
549
641
 
550
642
  # Test that methods detect an empty header value.
551
643
  # STOMP 1.0 only.
552
644
  def test_empty_header_value
645
+ mn = "test_empty_header_value" if @tcndbg
646
+ p [ "01", mn, "starts" ] if @tcndbg
553
647
  if @conn.protocol != Stomp::SPL_10
554
648
  assert true
555
649
  return
@@ -592,10 +686,13 @@ class TestConnection < Test::Unit::TestCase
592
686
  assert_raise Stomp::Error::ProtocolErrorEmptyHeaderValue do
593
687
  @conn.disconnect(bad_headers)
594
688
  end
689
+ p [ "99", mn, "ends" ] if @tcndbg
595
690
  end
596
691
 
597
692
  # test issue99, OK values
598
693
  def test_con_iss99_ok
694
+ mn = "test_con_iss99_ok" if @tcndbg
695
+ p [ "01", mn, "starts" ] if @tcndbg
599
696
  return unless host() == "localhost" && port() == 61613
600
697
  #
601
698
  ok_vals = dflt_data_ok()
@@ -603,24 +700,34 @@ class TestConnection < Test::Unit::TestCase
603
700
  conn = Stomp::Connection.new(hsv)
604
701
  conn.disconnect
605
702
  end
703
+ p [ "99", mn, "ends" ] if @tcndbg
606
704
  end
607
705
 
608
706
  def test_conn_nodest_sub
707
+ mn = "test_conn_nodest_sub" if @tcndbg
708
+ p [ "01", mn, "starts" ] if @tcndbg
609
709
  assert_raise Stomp::Error::DestinationRequired do
610
710
  @conn.subscribe(nil)
611
711
  end
712
+ p [ "99", mn, "ends" ] if @tcndbg
612
713
  end
613
714
 
614
715
  def test_conn_nodest_unsub
716
+ mn = "test_conn_nodest_unsub" if @tcndbg
717
+ p [ "01", mn, "starts" ] if @tcndbg
615
718
  assert_raise Stomp::Error::DestinationRequired do
616
719
  @conn.unsubscribe(nil)
617
720
  end
721
+ p [ "99", mn, "ends" ] if @tcndbg
618
722
  end
619
723
 
620
724
  def test_conn_nodest_pub
725
+ mn = "test_conn_nodest_pub" if @tcndbg
726
+ p [ "01", mn, "starts" ] if @tcndbg
621
727
  assert_raise Stomp::Error::DestinationRequired do
622
728
  @conn.publish(nil, "msg")
623
729
  end
730
+ p [ "99", mn, "ends" ] if @tcndbg
624
731
  end
625
732
 
626
733
  end