Skip to content

Commit 9b92e00

Browse files
authored
add integration test for start_message_move_task (#1046)
1 parent 1a0e3de commit 9b92e00

File tree

3 files changed

+63
-8
lines changed

3 files changed

+63
-8
lines changed

integration-tests/conf/queue-storage.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ queues {
2424
}
2525
}
2626

27+
queueName2 {
28+
defaultVisibilityTimeout = 1 second
29+
delay = 0 seconds
30+
receiveMessageWait = 0 seconds
31+
deadLettersQueue {
32+
name = "myDLQ"
33+
maxReceiveCount = 3
34+
}
35+
}
36+
2737
myDLQ { }
2838

2939
fifoQueue {

integration-tests/python/test_integration.py

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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")
5659
def message_storage_container():
@@ -67,7 +70,7 @@ def queue_storage_container():
6770
container.stop()
6871

6972
def 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

100103
def 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

132135
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()
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

native-server/src/main/resources/META-INF/native-image/reflect-config.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,16 @@
919919
"allDeclaredFields":true,
920920
"queryAllPublicMethods":true
921921
},
922+
{
923+
"name":"org.elasticmq.rest.sqs.StartMessageMoveTaskActionRequest",
924+
"allDeclaredFields":true,
925+
"queryAllPublicMethods":true
926+
},
927+
{
928+
"name":"org.elasticmq.rest.sqs.StartMessageMoveTaskResponse",
929+
"allDeclaredFields":true,
930+
"queryAllPublicMethods":true
931+
},
922932
{
923933
"name":"org.elasticmq.rest.sqs.TagQueueActionRequest",
924934
"allDeclaredFields":true,

0 commit comments

Comments
 (0)