@@ -47,10 +47,13 @@ def stop(self):
4747 def get_elasticmq_port (self ):
4848 return self .get_exposed_port (9321 )
4949
50- def create_sqs_client (self ):
50+ def create_sqs_resource (self ):
5151 port = self .get_elasticmq_port ()
52- return boto3 .resource ('sqs' , region_name = 'radom ' , endpoint_url = f'http://localhost:{ port } ' , aws_access_key_id = 'test' , aws_secret_access_key = 'test' )
52+ return boto3 .resource ('sqs' , region_name = 'random ' , endpoint_url = f'http://localhost:{ port } ' , aws_access_key_id = 'test' , aws_secret_access_key = 'test' )
5353
54+ def create_sqs_client (self ):
55+ port = self .get_elasticmq_port ()
56+ return boto3 .client ('sqs' , region_name = 'random' , endpoint_url = f'http://localhost:{ port } ' , aws_access_key_id = 'test' , aws_secret_access_key = 'test' )
5457
5558@pytest .fixture (scope = "function" )
5659def message_storage_container ():
@@ -67,7 +70,7 @@ def queue_storage_container():
6770 container .stop ()
6871
6972def test_messages_storage (message_storage_container ):
70- sqs = message_storage_container .create_sqs_client ()
73+ sqs = message_storage_container .create_sqs_resource ()
7174 queue = sqs .create_queue (QueueName = 'simpleQueue' , Attributes = {'VisibilityTimeout' : '1' })
7275 assert queue is not None
7376 queue .send_message (MessageBody = 'Hello 1' )
@@ -85,7 +88,7 @@ def test_messages_storage(message_storage_container):
8588
8689 message_storage_container .start ()
8790
88- sqs = message_storage_container .create_sqs_client ()
91+ sqs = message_storage_container .create_sqs_resource ()
8992 queue = sqs .get_queue_by_name (QueueName = 'simpleQueue' )
9093 assert queue is not None
9194 queue .send_message (MessageBody = 'Hello 4' )
@@ -98,7 +101,7 @@ def test_messages_storage(message_storage_container):
98101 assert not os .path .exists (os .path .join (os .getcwd (), ".data" , "queues.conf" ))
99102
100103def test_queue_storage (queue_storage_container ):
101- sqs = queue_storage_container .create_sqs_client ()
104+ sqs = queue_storage_container .create_sqs_resource ()
102105 queue = sqs .create_queue (QueueName = 'simpleQueue' , Attributes = {'VisibilityTimeout' : '1' })
103106 assert queue is not None
104107 queue .send_message (MessageBody = 'Hello 1' )
@@ -117,7 +120,7 @@ def test_queue_storage(queue_storage_container):
117120
118121 queue_storage_container .start ()
119122
120- sqs = queue_storage_container .create_sqs_client ()
123+ sqs = queue_storage_container .create_sqs_resource ()
121124 queue = sqs .get_queue_by_name (QueueName = 'simpleQueue' )
122125 assert queue is not None
123126 queue .send_message (MessageBody = 'Hello 4' )
@@ -130,8 +133,40 @@ def test_queue_storage(queue_storage_container):
130133 assert os .path .exists (os .path .join (os .getcwd (), ".data" , "queues.conf" ))
131134
132135def test_list_dead_letter_source_queues (queue_storage_container ):
133- sqs = queue_storage_container .create_sqs_client ()
136+ sqs = queue_storage_container .create_sqs_resource ()
134137 queue = sqs .get_queue_by_name (QueueName = 'myDLQ' )
135138 queues = list (queue .dead_letter_source_queues .all ())
136139 print (queues )
137- assert len (queues ) == 2
140+ assert len (queues ) == 3
141+
142+ def test_message_move_task (queue_storage_container ):
143+ sqs = queue_storage_container .create_sqs_resource ()
144+ queue = sqs .get_queue_by_name (QueueName = 'queueName2' )
145+ dlq = sqs .get_queue_by_name (QueueName = 'myDLQ' )
146+
147+ # populate the queue with 3 messages
148+ queue .send_message (MessageBody = 'Hello 1' )
149+ queue .send_message (MessageBody = 'Hello 2' )
150+ queue .send_message (MessageBody = 'Hello 3' )
151+
152+ # receive from queue maxReceiveCount + 1 to make it move to DLQ
153+ messages1 = queue .receive_messages (MaxNumberOfMessages = 10 )
154+ assert len (messages1 ) == 3
155+ time .sleep (1.5 )
156+ messages2 = queue .receive_messages (MaxNumberOfMessages = 10 )
157+ assert len (messages2 ) == 3
158+ time .sleep (1.5 )
159+ messages3 = queue .receive_messages (MaxNumberOfMessages = 10 )
160+ assert len (messages3 ) == 3
161+ time .sleep (1.5 )
162+ messages4 = queue .receive_messages (MaxNumberOfMessages = 10 )
163+ assert len (messages4 ) == 0
164+
165+ # start the message move task
166+ client = queue_storage_container .create_sqs_client ()
167+ client .start_message_move_task (SourceArn = dlq .attributes ['QueueArn' ])
168+ time .sleep (1 )
169+
170+ # receive again
171+ messages5 = queue .receive_messages (MaxNumberOfMessages = 10 )
172+ assert len (messages5 ) == 3
0 commit comments