Class: TestSqs
- Defined in:
- test/sqs_test.rb
Constant Summary collapse
- GRANTEE_EMAIL_ADDRESS =
'[email protected]'- MESSAGE_TEXT =
'Test message'
Instance Method Summary collapse
- #setup ⇒ Object
-
#test_01_create_queue ⇒ Object
————————— Aws::SqsInterface —————————.
- #test_02_list_queues ⇒ Object
- #test_03_set_and_get_queue_attributes ⇒ Object
- #test_06_send_message ⇒ Object
- #test_07_get_queue_length ⇒ Object
- #test_08_receive_message ⇒ Object
- #test_09_delete_message ⇒ Object
- #test_10_clear_and_delete_queue ⇒ Object
-
#test_20_sqs_create_delete_queue ⇒ Object
————————— Aws::Sqs classes —————————.
- #test_21_queue_create ⇒ Object
- #test_22_queue_attributes ⇒ Object
- #test_24_send_size ⇒ Object
- #test_25_message_receive_pop_delete ⇒ Object
- #test_26 ⇒ Object
- #test_27_set_amazon_problems ⇒ Object
- #test_28_check_threading_model ⇒ Object
-
#wait_for_queue_url(queue_name) ⇒ Object
Wait for the queue to appear in the queues list.
Instance Method Details
#setup ⇒ Object
7 8 9 10 11 12 |
# File 'test/sqs_test.rb', line 7 def setup @sqs = Aws::SqsInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key) @queue_name = 'sqs_test_queue' # for classes @s = Aws::Sqs.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key) end |
#test_01_create_queue ⇒ Object
Aws::SqsInterface
35 36 37 38 |
# File 'test/sqs_test.rb', line 35 def test_01_create_queue queue_url = @sqs.create_queue @queue_name assert queue_url[/http.*#{@queue_name}/], 'New queue creation failed' end |
#test_02_list_queues ⇒ Object
40 41 42 43 44 |
# File 'test/sqs_test.rb', line 40 def test_02_list_queues wait_for_queue_url(@queue_name) queues = @sqs.list_queues('sqs_test_') assert queues.size>0, 'Must more that 0 queues in list' end |
#test_03_set_and_get_queue_attributes ⇒ Object
46 47 48 49 50 51 52 |
# File 'test/sqs_test.rb', line 46 def test_03_set_and_get_queue_attributes queue_url = @sqs.queue_url_by_name(@queue_name) assert queue_url[/http.*#{@queue_name}/], "#{@queue_name} must exist!" assert @sqs.set_queue_attributes(queue_url, 'VisibilityTimeout', 111), 'Set_queue_attributes fail' sleep 20 # Amazon needs some time to change attribute assert_equal '111', @sqs.get_queue_attributes(queue_url)['VisibilityTimeout'], 'New VisibilityTimeout must be equal to 111' end |
#test_06_send_message ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'test/sqs_test.rb', line 54 def queue_url = @sqs.queue_url_by_name(@queue_name) # send 5 messages for the tests below assert @sqs.(queue_url, MESSAGE_TEXT) assert @sqs.(queue_url, MESSAGE_TEXT) assert @sqs.(queue_url, MESSAGE_TEXT) assert @sqs.(queue_url, MESSAGE_TEXT) assert @sqs.(queue_url, MESSAGE_TEXT) sleep 5 end |
#test_07_get_queue_length ⇒ Object
65 66 67 68 |
# File 'test/sqs_test.rb', line 65 def test_07_get_queue_length queue_url = @sqs.queue_url_by_name(@queue_name) assert_equal 5, @sqs.get_queue_length(queue_url), 'Queue must have 5 messages' end |
#test_08_receive_message ⇒ Object
70 71 72 73 74 75 |
# File 'test/sqs_test.rb', line 70 def queue_url = @sqs.queue_url_by_name(@queue_name) = @sqs.(queue_url, 1)[0] assert , "Receive returned no message(s), but this is not necessarily incorrect" assert_equal MESSAGE_TEXT, ['Body'], 'Receive message got wrong message text' end |
#test_09_delete_message ⇒ Object
77 78 79 80 81 82 |
# File 'test/sqs_test.rb', line 77 def queue_url = @sqs.queue_url_by_name(@queue_name) = @sqs.(queue_url)[0] assert @sqs.(queue_url, ['ReceiptHandle']), 'Delete_message fail' assert @sqs.(queue_url), 'Pop_message fail' end |
#test_10_clear_and_delete_queue ⇒ Object
84 85 86 87 |
# File 'test/sqs_test.rb', line 84 def test_10_clear_and_delete_queue queue_url = @sqs.queue_url_by_name(@queue_name) assert @sqs.delete_queue(queue_url) end |
#test_20_sqs_create_delete_queue ⇒ Object
Aws::Sqs classes
93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'test/sqs_test.rb', line 93 def test_20_sqs_create_delete_queue assert @s, 'Aws::Sqs must exist' # get queues list queues_size = @s.queues.size # create new queue queue = @s.queue("#{@queue_name}_20", true) # check that it is created assert queue.is_a?(Aws::Sqs::Queue) wait_for_queue_url(@queue_name) # check that amount of queues has increased assert_equal queues_size + 1, @s.queues.size # delete queue assert queue.delete end |
#test_21_queue_create ⇒ Object
108 109 110 111 112 113 114 |
# File 'test/sqs_test.rb', line 108 def test_21_queue_create # create new queue queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_21", true) # check that it is created assert queue.is_a?(Aws::Sqs::Queue) wait_for_queue_url(@queue_name) end |
#test_22_queue_attributes ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'test/sqs_test.rb', line 116 def test_22_queue_attributes queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_21", false) # get a list of attrinutes attributes = queue.get_attribute assert attributes.is_a?(Hash) && attributes.size>0 # get attribute value and increase it by 10 v = (queue.get_attribute('VisibilityTimeout').to_i + 10).to_s # set attribute assert queue.set_attribute('VisibilityTimeout', v) # wait a bit sleep 20 # check that attribute has changed assert_equal v, queue.get_attribute('VisibilityTimeout') # get queue visibility timeout assert_equal v, queue.visibility # change it queue.visibility = queue.visibility.to_i + 10 # make sure that it is changed assert v.to_i + 10, queue.visibility end |
#test_24_send_size ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'test/sqs_test.rb', line 137 def test_24_send_size queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_24", true) # send 5 messages assert queue.push('a1') assert queue.push('a2') assert queue.push('a3') assert queue.push('a4') assert queue.push('a5') # check queue size assert_equal 5, queue.size # send one more assert queue.push('a6') # check queue size again assert_equal 6, queue.size end |
#test_25_message_receive_pop_delete ⇒ Object
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'test/sqs_test.rb', line 153 def queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_24", false) # get queue size size = queue.size # get first message m1 = queue.receive(10) assert m1.is_a?(Aws::Sqs::Message) # pop second message m2 = queue.pop assert m2.is_a?(Aws::Sqs::Message) # make sure that queue size has decreased assert_equal size-1, queue.size # delete messsage assert m1.delete # make sure that queue size has decreased again assert_equal size-2, queue.size end |
#test_26 ⇒ Object
171 172 173 174 175 176 177 178 179 |
# File 'test/sqs_test.rb', line 171 def test_26 queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_24", false) # lock message queue.receive(100) # clear queue assert queue.clear # queue size is greater than zero assert queue.size>0 end |
#test_27_set_amazon_problems ⇒ Object
181 182 183 184 185 186 187 188 189 190 |
# File 'test/sqs_test.rb', line 181 def test_27_set_amazon_problems original_problems = Aws::SqsInterface.amazon_problems assert(original_problems.length > 0) Aws::SqsInterface.amazon_problems= original_problems << "A New Problem" new_problems = Aws::SqsInterface.amazon_problems assert_equal(new_problems, original_problems) Aws::SqsInterface.amazon_problems= nil assert_nil(Aws::SqsInterface.amazon_problems) end |
#test_28_check_threading_model ⇒ Object
192 193 194 195 196 |
# File 'test/sqs_test.rb', line 192 def test_28_check_threading_model assert(!@sqs.multi_thread) newsqs = Aws::SqsInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, {:multi_thread => true}) assert(newsqs.multi_thread) end |
#wait_for_queue_url(queue_name) ⇒ Object
Wait for the queue to appear in the queues list. Amazon needs some time to after the queue creation to place it to the accessible queues list. If we dont want to get the additional faults then wait a bit…
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'test/sqs_test.rb', line 18 def wait_for_queue_url(queue_name) queue_url = nil until queue_url queue_url = @sqs.queue_url_by_name(queue_name) unless queue_url print '-' STDOUT.flush sleep 1 end end queue_url end |