iron_mq 4.0.3 → 4.0.5

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.
@@ -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