@@ -47,10 +47,13 @@ def stop(self):
47
47
def get_elasticmq_port (self ):
48
48
return self .get_exposed_port (9321 )
49
49
50
- def create_sqs_client (self ):
50
+ def create_sqs_resource (self ):
51
51
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' )
53
53
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' )
54
57
55
58
@pytest .fixture (scope = "function" )
56
59
def message_storage_container ():
@@ -67,7 +70,7 @@ def queue_storage_container():
67
70
container .stop ()
68
71
69
72
def test_messages_storage (message_storage_container ):
70
- sqs = message_storage_container .create_sqs_client ()
73
+ sqs = message_storage_container .create_sqs_resource ()
71
74
queue = sqs .create_queue (QueueName = 'simpleQueue' , Attributes = {'VisibilityTimeout' : '1' })
72
75
assert queue is not None
73
76
queue .send_message (MessageBody = 'Hello 1' )
@@ -85,7 +88,7 @@ def test_messages_storage(message_storage_container):
85
88
86
89
message_storage_container .start ()
87
90
88
- sqs = message_storage_container .create_sqs_client ()
91
+ sqs = message_storage_container .create_sqs_resource ()
89
92
queue = sqs .get_queue_by_name (QueueName = 'simpleQueue' )
90
93
assert queue is not None
91
94
queue .send_message (MessageBody = 'Hello 4' )
@@ -98,7 +101,7 @@ def test_messages_storage(message_storage_container):
98
101
assert not os .path .exists (os .path .join (os .getcwd (), ".data" , "queues.conf" ))
99
102
100
103
def test_queue_storage (queue_storage_container ):
101
- sqs = queue_storage_container .create_sqs_client ()
104
+ sqs = queue_storage_container .create_sqs_resource ()
102
105
queue = sqs .create_queue (QueueName = 'simpleQueue' , Attributes = {'VisibilityTimeout' : '1' })
103
106
assert queue is not None
104
107
queue .send_message (MessageBody = 'Hello 1' )
@@ -117,7 +120,7 @@ def test_queue_storage(queue_storage_container):
117
120
118
121
queue_storage_container .start ()
119
122
120
- sqs = queue_storage_container .create_sqs_client ()
123
+ sqs = queue_storage_container .create_sqs_resource ()
121
124
queue = sqs .get_queue_by_name (QueueName = 'simpleQueue' )
122
125
assert queue is not None
123
126
queue .send_message (MessageBody = 'Hello 4' )
@@ -130,8 +133,40 @@ def test_queue_storage(queue_storage_container):
130
133
assert os .path .exists (os .path .join (os .getcwd (), ".data" , "queues.conf" ))
131
134
132
135
def 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 ()
134
137
queue = sqs .get_queue_by_name (QueueName = 'myDLQ' )
135
138
queues = list (queue .dead_letter_source_queues .all ())
136
139
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