iron_mq 4.0.3 → 4.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -148,7 +148,7 @@ class BeanstalkTests < TestBase
148
148
  assert job.nil?, "job is not nil"
149
149
 
150
150
  # wait for delay to expire
151
- sleep 2
151
+ sleep 3
152
152
  job = reserve(0)
153
153
  assert_not_nil job, "job is nil"
154
154
  assert_equal msg, job.body, "body not the same as message."
@@ -27,9 +27,20 @@ class IronMQTests < TestBase
27
27
  end
28
28
  end
29
29
 
30
+ def test_get
31
+ queue_name = "some_queue_abcj9u23"
32
+ queue = @client.queue(queue_name)
33
+ msg = queue.get
34
+ v = "hello big world"
35
+ queue.post(v)
36
+ msg = queue.get
37
+ msg.delete
38
+ msg = queue.get
39
+
40
+ end
30
41
 
31
42
  def test_basics
32
- queue_name = 'test_basics_7'
43
+ queue_name = 'test_basics_71'
33
44
  clear_queue(queue_name)
34
45
 
35
46
  # NOTE: Kept for backward compatibility checking
@@ -41,7 +52,7 @@ class IronMQTests < TestBase
41
52
  assert res["id"]
42
53
  assert res.id
43
54
  assert res.msg
44
-
55
+ sleep 0.3
45
56
  assert_equal 1, queue.size
46
57
 
47
58
  message = queue.get
@@ -56,7 +67,8 @@ class IronMQTests < TestBase
56
67
  # p res
57
68
  assert_nil res
58
69
 
59
- assert_equal 0, queue.size
70
+ sleep 0.3
71
+ assert_equal 0, queue.reload.size
60
72
 
61
73
  res = queue.post("hello world 2!")
62
74
  # p res
@@ -114,9 +126,28 @@ class IronMQTests < TestBase
114
126
  assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
115
127
  end
116
128
 
129
+ def test_multi_delete
130
+ queue_name = 'test_multi_delete_41'
131
+ clear_queue(queue_name)
132
+
133
+ queue = @client.queue(queue_name)
134
+ ids = []
135
+ 10.times do |i|
136
+ msg = queue.post("hello #{i}")
137
+ ids << msg.id
138
+ end
139
+ sleep 0.5
140
+ assert_equal 10, queue.reload.size
141
+
142
+ queue.delete_messages(ids)
143
+ sleep 1
144
+ assert_equal 0, queue.reload.size
145
+ queue.delete_queue
146
+
147
+ end
117
148
 
118
149
  def test_queues_list
119
- queue_name = 'test_queues_list'
150
+ queue_name = 'test_queues_list_1'
120
151
  clear_queue(queue_name)
121
152
 
122
153
  queue = @client.queue(queue_name)
@@ -141,7 +172,7 @@ class IronMQTests < TestBase
141
172
 
142
173
  # TODO: pass :timeout in post/get messages and test those
143
174
  def test_timeout
144
- queue_name = "test_timeout_6"
175
+ queue_name = "test_timeout_71"
145
176
  clear_queue(queue_name)
146
177
 
147
178
  queue = @client.queue(queue_name)
@@ -157,21 +188,11 @@ class IronMQTests < TestBase
157
188
  # p msg_nil
158
189
  assert_nil msg_nil
159
190
 
160
- tries = MAX_TRIES
161
- while tries > 0
162
- sleep 2
163
- tries -= 1
164
-
165
- new_msg = queue.get
166
- # p new_msg
167
- next if new_msg.nil?
168
-
169
- assert_equal new_msg.id, msg.id
170
-
171
- new_msg.delete
172
- break
173
- end
174
- assert_not_equal tries, 0
191
+ sleep 61 # should be 1 minute timeout by default
192
+ new_msg = queue.get
193
+ assert_not_nil new_msg
194
+ assert_equal new_msg.id, msg.id
195
+ new_msg.delete
175
196
 
176
197
  # now try explicit timeout
177
198
  res = queue.post("hello world timeout2!", :timeout => 30)
@@ -185,25 +206,16 @@ class IronMQTests < TestBase
185
206
  # p msg_nil
186
207
  assert_nil msg_nil
187
208
 
188
- tries = MAX_TRIES
189
- while tries > 0
190
- sleep 2
191
- tries -= 1
192
-
193
- new_msg = queue.get
194
- next if new_msg.nil?
195
-
196
- assert_equal new_msg.id, msg.id
197
-
198
- new_msg.delete
199
- break
200
- end
201
- assert_not_equal tries, 0
209
+ sleep 31
210
+ new_msg = queue.get
211
+ assert_not_nil new_msg
212
+ assert_equal new_msg.id, msg.id
213
+ new_msg.delete
202
214
 
203
215
  # timeout on get
204
216
  res = queue.post("hello world timeout3!")
205
217
  msg = queue.get(:timeout => 30)
206
- puts "MESSAGE IS #{msg.inspect}"
218
+ # puts "MESSAGE IS #{msg.inspect}"
207
219
  assert msg
208
220
  assert_equal msg.timeout, 30
209
221
 
@@ -211,20 +223,11 @@ class IronMQTests < TestBase
211
223
  # p msg_nil
212
224
  assert_nil msg_nil
213
225
 
214
- tries = MAX_TRIES
215
- while tries > 0
216
- sleep 2
217
- tries -= 1
218
-
219
- new_msg = queue.get
220
- next if new_msg.nil?
221
-
222
- assert_equal msg.id, new_msg.id
223
-
224
- new_msg.delete
225
- break
226
- end
227
- assert_not_equal tries, 0
226
+ sleep 31
227
+ new_msg = queue.get
228
+ assert_not_nil new_msg
229
+ assert_equal new_msg.id, msg.id
230
+ new_msg.delete
228
231
 
229
232
  # delete queue on test complete
230
233
  resp = queue.delete_queue
@@ -234,20 +237,21 @@ class IronMQTests < TestBase
234
237
  def test_queues
235
238
  puts 'test_queues'
236
239
 
237
- # Now client library is not provide plain call to API
238
- # But creates Queue object instead
239
- # also added `#new?` method to check is queue exist
240
- #
241
- #assert_raise Rest::HttpError do
242
- # # should raise a 404
243
- # q = @client.queues.get(:name => "some_queue_that_does_not_exist")
244
- #end
245
- queue = @client.queues.get(:name => "some_queue_that_does_not_exist")
246
- assert queue.new?
240
+ qname = "some_queue_that_does_not_exist_1"
241
+ queue = @client.queue(qname)
242
+ # delete it before the test
243
+ queue.delete_queue
244
+
245
+ assert_raise Rest::HttpError do
246
+ # should raise a 404
247
+ m = queue.size
248
+ end
247
249
 
248
250
  # create at least one queue
249
251
  queue.post('create queue message')
250
- assert_equal queue.new?, false, "queue must exist on the service after post message to"
252
+ # queue should exist now
253
+ m = queue.get
254
+ assert_not_nil m
251
255
 
252
256
  res = @client.queues.list
253
257
  # puts "res.size: #{res.size}"
@@ -258,7 +262,7 @@ class IronMQTests < TestBase
258
262
  end
259
263
  assert res.size > 0
260
264
 
261
- res = @client.queues.list(:page => 15)
265
+ res = @client.queues.list(:page => 50)
262
266
  # puts "res.size 2: #{res.size}"
263
267
  # res.each do |q| { p q.name }
264
268
 
@@ -272,32 +276,22 @@ class IronMQTests < TestBase
272
276
  def test_delay
273
277
  puts 'test_delay'
274
278
 
275
- queue_name = "test_delay_6"
279
+ queue_name = "test_delay_61"
276
280
  clear_queue(queue_name)
277
281
 
278
282
  msgTxt = "testMessage-"+Time.now.to_s
279
283
  # puts msgTxt
280
284
  queue = @client.queue(queue_name)
281
- queue.post(msgTxt, {:delay => 5})
285
+ msg_id = queue.post(msgTxt, {:delay => 5}).id
282
286
  msg = queue.get
283
287
  # p msg
284
288
  assert_nil msg
285
289
 
286
- tries = MAX_TRIES
287
- while tries > 0
288
- sleep 0.5
289
- tries -= 1
290
- sleep 1
291
-
292
- msg = queue.get
293
- # p msg
294
- next if msg.nil?
295
-
296
- assert_equal msg.body, msgTxt
297
-
298
- break
299
- end
300
- assert_not_equal tries, 0
290
+ sleep 6
291
+ new_msg = queue.get
292
+ assert_not_nil new_msg
293
+ assert_equal msg_id, new_msg.id
294
+ new_msg.delete
301
295
 
302
296
  # delete queue on test complete
303
297
  resp = queue.delete_queue
@@ -307,7 +301,7 @@ class IronMQTests < TestBase
307
301
  def test_batch
308
302
  puts 'test_batch'
309
303
 
310
- queue_name = "test_batch_6"
304
+ queue_name = "test_batch_61"
311
305
  clear_queue(queue_name)
312
306
 
313
307
  x = []
@@ -325,10 +319,16 @@ class IronMQTests < TestBase
325
319
  msg = queue.get
326
320
  assert msg
327
321
  assert msg['id']
322
+ puts "Deleting message #{msg.id}"
328
323
  msg.delete
324
+ sleep 2
329
325
 
330
326
  msgs = queue.get(:n => 10)
331
327
  assert msgs.is_a?(Array)
328
+ msgs.each do |m|
329
+ puts m.id
330
+ assert_not_equal msg.id, m.id
331
+ end
332
332
  assert msgs.size == 9, "size should be 9, but it's #{msgs.size}"
333
333
  assert msgs[0]["id"]
334
334
 
@@ -345,13 +345,22 @@ class IronMQTests < TestBase
345
345
  def test_peek
346
346
  puts "test_message_peek"
347
347
 
348
- queue_name = "test_msg_peek"
348
+ queue_name = "test_msg_peek_1"
349
349
  clear_queue(queue_name)
350
350
 
351
351
  queue = @client.queue(queue_name)
352
- queue.post([ {:body => "first message"},
353
- {:body => "second message"},
354
- {:body => "third message"} ])
352
+ queue.post("zero message")
353
+ msg = queue.get
354
+ msg.delete
355
+
356
+ msg = queue.peek
357
+ assert_nil msg
358
+
359
+ queue.post("first message")
360
+ sleep 1
361
+ queue.post("second message")
362
+ sleep 1
363
+ queue.post("third message")
355
364
 
356
365
  msg = queue.peek
357
366
  assert_not_nil msg
@@ -390,30 +399,30 @@ class IronMQTests < TestBase
390
399
  end
391
400
 
392
401
  def test_touch
393
- puts "test_message_touch"
402
+ puts "in test_touch"
394
403
 
395
- queue_name = "test_msg_touch"
404
+ queue_name = "test_msg_touch_3"
396
405
  clear_queue(queue_name)
397
406
 
398
407
  queue = @client.queue(queue_name)
399
- queue.post([
400
- {:body => "first message"},
401
- {:body => "second message"},
402
- {:body => "third message"}
403
- ],
404
- {:timeout => 30}) # minimum timeout
408
+ queue.post("first message", :timeout => 30)
409
+ queue.post("second message", :timeout => 30)
410
+ queue.post("third message", :timeout => 30)
411
+
405
412
 
406
413
  # get message
407
414
  msg = queue.get
408
415
  assert_not_nil msg
409
- assert_equal "first message", msg.body, "message body must be 'first message', but it's '#{msg.body}'"
416
+ assert_equal "first message", msg.body, "message body must be 'first message', but it's '#{msg.body}'"
410
417
 
411
418
  sleep 15 # timeout is not passed
412
419
 
413
420
  msgs = queue.peek(:n => 3) # all messages from queue
414
421
  assert_equal Array, msgs.class, "waiting for Array, but got #{msgs.class}"
415
422
  assert_equal 2, msgs.size, "API must return only 2 messages"
416
- msgs.each { |m| assert_not_equal msg.id, m.id, "returned message which must be reserved" }
423
+ msgs.each do |m|
424
+ assert_not_equal msg.id, m.id, "returned a message which must be reserved"
425
+ end
417
426
 
418
427
  sleep 20 # ensure timeout is passed
419
428
 
@@ -421,7 +430,6 @@ class IronMQTests < TestBase
421
430
  msgs = queue.peek(:n => 3)
422
431
  assert_equal Array, msgs.class, "waiting for Array, but got #{msgs.class}"
423
432
  assert_equal 3, msgs.size, "API must return 3 messages"
424
- assert_equal msg.id, msgs[2].id, "released message must be at the end of the queue"
425
433
 
426
434
  msg = queue.get
427
435
  assert_not_nil msg
@@ -463,12 +471,12 @@ class IronMQTests < TestBase
463
471
  queue_name = "test_release_6"
464
472
  clear_queue(queue_name)
465
473
 
466
- msgTxt = "testMessage-"+Time.now.to_s
474
+ msg_txt = "testMessage-"+Time.now.to_s
467
475
  # puts msgTxt
468
476
 
469
477
  queue = @client.queue(queue_name)
470
478
 
471
- msg_id = queue.post(msgTxt, {:timeout => 60*5}).id
479
+ msg_id = queue.post(msg_txt, {:timeout => 60*5}).id
472
480
  # puts "msg_id: #{msg_id}"
473
481
  message = queue.get
474
482
  # p msg
@@ -498,42 +506,20 @@ class IronMQTests < TestBase
498
506
  # p msg
499
507
  assert_nil msgr
500
508
 
501
- tries = MAX_TRIES
502
- while tries > 0
503
- sleep 0.5
504
- tries -= 1
505
- sleep 1
506
-
507
- msg = queue.get
508
- next if msg.nil?
509
-
510
- #p msg
511
- assert_equal msg.id, msg_id
512
-
513
- break
514
- end
515
- assert_not_equal tries, 0
509
+ sleep 11
510
+ msg = queue.get
511
+ assert_not_nil msg
512
+ assert_equal msg_id, msg.id
516
513
 
517
514
  msg.release(:delay => 5)
518
515
  msg = queue.get
519
516
  # p msg
520
517
  assert_nil msg
521
518
 
522
- tries = MAX_TRIES
523
- while tries > 0
524
- sleep 0.5
525
- tries -= 1
526
- sleep 1
527
-
528
- msg = queue.get
529
- next if msg.nil?
530
-
531
- # p msg
532
- assert_equal msg.id, msg_id
533
-
534
- break
535
- end
536
- assert_not_equal tries, 0
519
+ sleep 6
520
+ msg = queue.get
521
+ assert_not_nil msg
522
+ assert_equal msg_id, msg.id
537
523
 
538
524
  # delete queue on test complete
539
525
  resp = queue.delete_queue
@@ -544,21 +530,23 @@ class IronMQTests < TestBase
544
530
  def test_clear
545
531
  puts "test_clear"
546
532
 
547
- queue = @client.queue("test_clear_7")
533
+ queue = @client.queue("test_clear_9")
548
534
  clear_queue(queue.name)
549
535
 
550
536
  val = "hi mr clean"
551
537
  queue.post(val)
552
538
 
553
- sleep 2 # make sure the counter has time to update
554
- assert_equal 1, queue.size
539
+ sleep 0.5 # make sure the counter has time to update
540
+ assert_equal 1, queue.reload.size
555
541
 
556
542
  queue.clear
557
543
 
558
544
  msg = queue.get
559
545
  assert_nil msg
560
546
 
561
- assert_equal 0, queue.size
547
+ sleep 0.5
548
+
549
+ assert_equal 0, queue.reload.size
562
550
 
563
551
  # delete queue on test complete
564
552
  resp = queue.delete_queue
@@ -583,14 +571,6 @@ class IronMQTests < TestBase
583
571
 
584
572
  assert_equal 5, i
585
573
 
586
- tries = MAX_TRIES
587
- while tries > 0
588
- tries -= 1
589
- break if 0 == queue.size
590
- sleep 1
591
- end
592
- assert_not_equal tries, 0
593
-
594
574
  # delete queue on test complete
595
575
  resp = queue.delete_queue
596
576
  assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
@@ -607,9 +587,8 @@ class IronMQTests < TestBase
607
587
 
608
588
  queue.post("hi2")
609
589
  # p queue
610
- q_info = queue.info
611
- assert_not_equal old_id, q_info.id, "old queue ID (#{old_id}) must not be equal to new ID (#{q_info.id})"
612
- assert_equal 1, q_info.size, "queue size must be 1, but got #{q_info.size}"
590
+ assert_not_equal old_id, queue.id, "old queue ID (#{old_id}) must not be equal to new ID (#{queue.id})"
591
+ assert_equal 1, queue.size, "queue size must be 1, but got #{queue.size}"
613
592
 
614
593
  msg = queue.get
615
594
  assert_equal "hi2", msg.body, "message body must be 'hi2', but got '#{msg.body}'"
@@ -640,5 +619,60 @@ class IronMQTests < TestBase
640
619
  assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
641
620
  end
642
621
 
622
+
623
+ def test_queue_params
624
+
625
+ qname = "test_queue_params_1"
626
+
627
+ clear_queue(qname)
628
+ q = @client.queue(qname)
629
+
630
+ q.post("message 1", :timeout => 200, :delay => 0, :expires_in => 2000)
631
+ q.post("message 1", :timeout => 300, :delay => 0, :expires_in => 3000)
632
+
633
+ msgs = q.get(:n => 2)
634
+
635
+ msgs.each do |m|
636
+ puts m.body
637
+ puts "timeout: #{m.timeout}"
638
+ puts "expires_in: #{m.expires_in}"
639
+ puts "delay: #{m.delay}"
640
+ end
641
+
642
+ end
643
+
644
+
645
+ def test_reserved_count
646
+ puts "test_reserved_count"
647
+
648
+ queue_name = "test_reserved_count"
649
+ clear_queue(queue_name)
650
+
651
+ queue = @client.queue(queue_name)
652
+ queue.post("zero message")
653
+ msg = queue.get
654
+ p msg
655
+ puts "id: #{msg.id} reserved_count: #{msg.reserved_count}"
656
+ msg.release
657
+ msg = queue.get
658
+ p msg
659
+ puts "id: #{msg.id} reserved_count: #{msg.reserved_count}"
660
+ msg.release
661
+ msg = queue.get
662
+ p msg
663
+ puts "id: #{msg.id} reserved_count: #{msg.reserved_count}"
664
+
665
+
666
+ end
667
+
668
+ def test_queue_set_info
669
+ qname = "test_queue_set_info"
670
+ clear_queue(qname)
671
+ q = @client.queue(qname)
672
+ q.update_queue(:push_type => 'unicast')
673
+ assert_equal 'unicast', q.push_type
674
+ q.update_queue(:retries => 10)
675
+ assert_equal 'unicast', q.reload.push_type
676
+ end
643
677
  end
644
678