@@ -1619,8 +1619,64 @@ def test_sqs_event_source_mapping_batch_size_override(
1619
1619
)
1620
1620
1621
1621
assert sum (len (event .get ("Records" , [])) for event in events ) == batch_size
1622
+ assert len (events [0 ].get ("Records" , [])) == batch_size
1622
1623
1623
- rs = aws_client .sqs .receive_message (QueueUrl = queue_url , WaitTimeSeconds = 1 )
1624
+ rs = aws_client .sqs .receive_message (QueueUrl = queue_url )
1625
+ assert rs .get ("Messages" , []) == []
1626
+
1627
+ @markers .aws .only_localstack
1628
+ def test_sqs_event_source_mapping_batching_window_size_override (
1629
+ self ,
1630
+ create_lambda_function ,
1631
+ sqs_create_queue ,
1632
+ sqs_get_queue_arn ,
1633
+ lambda_su_role ,
1634
+ cleanups ,
1635
+ aws_client ,
1636
+ ):
1637
+ function_name = f"lambda_func-{ short_uid ()} "
1638
+ queue_name = f"queue-{ short_uid ()} "
1639
+ mapping_uuid = None
1640
+
1641
+ create_lambda_function (
1642
+ func_name = function_name ,
1643
+ handler_file = TEST_LAMBDA_PYTHON_ECHO ,
1644
+ runtime = Runtime .python3_12 ,
1645
+ role = lambda_su_role ,
1646
+ )
1647
+ queue_url = sqs_create_queue (QueueName = queue_name )
1648
+ queue_arn = sqs_get_queue_arn (queue_url )
1649
+
1650
+ create_event_source_mapping_response = aws_client .lambda_ .create_event_source_mapping (
1651
+ EventSourceArn = queue_arn ,
1652
+ FunctionName = function_name ,
1653
+ MaximumBatchingWindowInSeconds = 30 ,
1654
+ BatchSize = 10_000 ,
1655
+ )
1656
+ mapping_uuid = create_event_source_mapping_response ["UUID" ]
1657
+ cleanups .append (lambda : aws_client .lambda_ .delete_event_source_mapping (UUID = mapping_uuid ))
1658
+ _await_event_source_mapping_enabled (aws_client .lambda_ , mapping_uuid )
1659
+
1660
+ # Send 4 messages and delay their arrival by 5, 10, 15, and 25 seconds respectively
1661
+ for s in [5 , 10 , 15 , 25 ]:
1662
+ aws_client .sqs .send_message (
1663
+ QueueUrl = queue_url ,
1664
+ MessageBody = json .dumps ({"delayed" : f"{ s } " }),
1665
+ )
1666
+
1667
+ events = retry (
1668
+ check_expected_lambda_log_events_length ,
1669
+ retries = 60 ,
1670
+ sleep = 1 ,
1671
+ function_name = function_name ,
1672
+ expected_length = 1 ,
1673
+ logs_client = aws_client .logs ,
1674
+ )
1675
+
1676
+ assert len (events ) == 1
1677
+ assert len (events [0 ].get ("Records" , [])) == 4
1678
+
1679
+ rs = aws_client .sqs .receive_message (QueueUrl = queue_url )
1624
1680
assert rs .get ("Messages" , []) == []
1625
1681
1626
1682
0 commit comments