@@ -414,7 +414,8 @@ def test_batch_processor_middleware_with_failure(sqs_event_factory, record_handl
414
414
# GIVEN
415
415
first_record = SQSRecord (sqs_event_factory ("fail" ))
416
416
second_record = SQSRecord (sqs_event_factory ("success" ))
417
- event = {"Records" : [first_record .raw_event , second_record .raw_event ]}
417
+ third_record = SQSRecord (sqs_event_factory ("fail" ))
418
+ event = {"Records" : [first_record .raw_event , second_record .raw_event , third_record .raw_event ]}
418
419
419
420
processor = BatchProcessor (event_type = EventType .SQS )
420
421
@@ -426,7 +427,7 @@ def lambda_handler(event, context):
426
427
result = lambda_handler (event , {})
427
428
428
429
# THEN
429
- assert len (result ["batchItemFailures" ]) == 1
430
+ assert len (result ["batchItemFailures" ]) == 2
430
431
431
432
432
433
def test_batch_processor_context_success_only (sqs_event_factory , record_handler ):
@@ -453,7 +454,8 @@ def test_batch_processor_context_with_failure(sqs_event_factory, record_handler)
453
454
# GIVEN
454
455
first_record = SQSRecord (sqs_event_factory ("failure" ))
455
456
second_record = SQSRecord (sqs_event_factory ("success" ))
456
- records = [first_record .raw_event , second_record .raw_event ]
457
+ third_record = SQSRecord (sqs_event_factory ("fail" ))
458
+ records = [first_record .raw_event , second_record .raw_event , third_record .raw_event ]
457
459
processor = BatchProcessor (event_type = EventType .SQS )
458
460
459
461
# WHEN
@@ -462,8 +464,10 @@ def test_batch_processor_context_with_failure(sqs_event_factory, record_handler)
462
464
463
465
# THEN
464
466
assert processed_messages [1 ] == ("success" , second_record .body , second_record .raw_event )
465
- assert len (batch .fail_messages ) == 1
466
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record .message_id }]}
467
+ assert len (batch .fail_messages ) == 2
468
+ assert batch .response () == {
469
+ "batchItemFailures" : [{"itemIdentifier" : first_record .message_id }, {"itemIdentifier" : third_record .message_id }]
470
+ }
467
471
468
472
469
473
def test_batch_processor_kinesis_context_success_only (kinesis_event_factory , kinesis_record_handler ):
@@ -491,8 +495,9 @@ def test_batch_processor_kinesis_context_with_failure(kinesis_event_factory, kin
491
495
# GIVEN
492
496
first_record = KinesisStreamRecord (kinesis_event_factory ("failure" ))
493
497
second_record = KinesisStreamRecord (kinesis_event_factory ("success" ))
498
+ third_record = KinesisStreamRecord (kinesis_event_factory ("failure" ))
494
499
495
- records = [first_record .raw_event , second_record .raw_event ]
500
+ records = [first_record .raw_event , second_record .raw_event , third_record . raw_event ]
496
501
processor = BatchProcessor (event_type = EventType .KinesisDataStreams )
497
502
498
503
# WHEN
@@ -501,15 +506,21 @@ def test_batch_processor_kinesis_context_with_failure(kinesis_event_factory, kin
501
506
502
507
# THEN
503
508
assert processed_messages [1 ] == ("success" , b64_to_str (second_record .kinesis .data ), second_record .raw_event )
504
- assert len (batch .fail_messages ) == 1
505
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record .kinesis .sequence_number }]}
509
+ assert len (batch .fail_messages ) == 2
510
+ assert batch .response () == {
511
+ "batchItemFailures" : [
512
+ {"itemIdentifier" : first_record .kinesis .sequence_number },
513
+ {"itemIdentifier" : third_record .kinesis .sequence_number },
514
+ ]
515
+ }
506
516
507
517
508
518
def test_batch_processor_kinesis_middleware_with_failure (kinesis_event_factory , kinesis_record_handler ):
509
519
# GIVEN
510
520
first_record = KinesisStreamRecord (kinesis_event_factory ("failure" ))
511
521
second_record = KinesisStreamRecord (kinesis_event_factory ("success" ))
512
- event = {"Records" : [first_record .raw_event , second_record .raw_event ]}
522
+ third_record = KinesisStreamRecord (kinesis_event_factory ("failure" ))
523
+ event = {"Records" : [first_record .raw_event , second_record .raw_event , third_record .raw_event ]}
513
524
514
525
processor = BatchProcessor (event_type = EventType .KinesisDataStreams )
515
526
@@ -521,7 +532,7 @@ def lambda_handler(event, context):
521
532
result = lambda_handler (event , {})
522
533
523
534
# THEN
524
- assert len (result ["batchItemFailures" ]) == 1
535
+ assert len (result ["batchItemFailures" ]) == 2
525
536
526
537
527
538
def test_batch_processor_dynamodb_context_success_only (dynamodb_event_factory , dynamodb_record_handler ):
@@ -548,7 +559,8 @@ def test_batch_processor_dynamodb_context_with_failure(dynamodb_event_factory, d
548
559
# GIVEN
549
560
first_record = dynamodb_event_factory ("failure" )
550
561
second_record = dynamodb_event_factory ("success" )
551
- records = [first_record , second_record ]
562
+ third_record = dynamodb_event_factory ("failure" )
563
+ records = [first_record , second_record , third_record ]
552
564
processor = BatchProcessor (event_type = EventType .DynamoDBStreams )
553
565
554
566
# WHEN
@@ -557,15 +569,21 @@ def test_batch_processor_dynamodb_context_with_failure(dynamodb_event_factory, d
557
569
558
570
# THEN
559
571
assert processed_messages [1 ] == ("success" , second_record ["dynamodb" ]["NewImage" ]["Message" ]["S" ], second_record )
560
- assert len (batch .fail_messages ) == 1
561
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record ["dynamodb" ]["SequenceNumber" ]}]}
572
+ assert len (batch .fail_messages ) == 2
573
+ assert batch .response () == {
574
+ "batchItemFailures" : [
575
+ {"itemIdentifier" : first_record ["dynamodb" ]["SequenceNumber" ]},
576
+ {"itemIdentifier" : third_record ["dynamodb" ]["SequenceNumber" ]},
577
+ ]
578
+ }
562
579
563
580
564
581
def test_batch_processor_dynamodb_middleware_with_failure (dynamodb_event_factory , dynamodb_record_handler ):
565
582
# GIVEN
566
583
first_record = dynamodb_event_factory ("failure" )
567
584
second_record = dynamodb_event_factory ("success" )
568
- event = {"Records" : [first_record , second_record ]}
585
+ third_record = dynamodb_event_factory ("failure" )
586
+ event = {"Records" : [first_record , second_record , third_record ]}
569
587
570
588
processor = BatchProcessor (event_type = EventType .DynamoDBStreams )
571
589
@@ -577,7 +595,7 @@ def lambda_handler(event, context):
577
595
result = lambda_handler (event , {})
578
596
579
597
# THEN
580
- assert len (result ["batchItemFailures" ]) == 1
598
+ assert len (result ["batchItemFailures" ]) == 2
581
599
582
600
583
601
def test_batch_processor_context_model (sqs_event_factory , order_event_factory ):
@@ -639,17 +657,23 @@ def record_handler(record: OrderSqs):
639
657
order_event = order_event_factory ({"type" : "success" })
640
658
order_event_fail = order_event_factory ({"type" : "fail" })
641
659
first_record = sqs_event_factory (order_event_fail )
660
+ third_record = sqs_event_factory (order_event_fail )
642
661
second_record = sqs_event_factory (order_event )
643
- records = [first_record , second_record ]
662
+ records = [first_record , second_record , third_record ]
644
663
645
664
# WHEN
646
665
processor = BatchProcessor (event_type = EventType .SQS , model = OrderSqs )
647
666
with processor (records , record_handler ) as batch :
648
667
batch .process ()
649
668
650
669
# THEN
651
- assert len (batch .fail_messages ) == 1
652
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record ["messageId" ]}]}
670
+ assert len (batch .fail_messages ) == 2
671
+ assert batch .response () == {
672
+ "batchItemFailures" : [
673
+ {"itemIdentifier" : first_record ["messageId" ]},
674
+ {"itemIdentifier" : third_record ["messageId" ]},
675
+ ]
676
+ }
653
677
654
678
655
679
def test_batch_processor_dynamodb_context_model (dynamodb_event_factory , order_event_factory ):
@@ -726,16 +750,22 @@ def record_handler(record: OrderDynamoDBRecord):
726
750
order_event_fail = order_event_factory ({"type" : "fail" })
727
751
first_record = dynamodb_event_factory (order_event_fail )
728
752
second_record = dynamodb_event_factory (order_event )
729
- records = [first_record , second_record ]
753
+ third_record = dynamodb_event_factory (order_event_fail )
754
+ records = [first_record , second_record , third_record ]
730
755
731
756
# WHEN
732
757
processor = BatchProcessor (event_type = EventType .DynamoDBStreams , model = OrderDynamoDBRecord )
733
758
with processor (records , record_handler ) as batch :
734
759
batch .process ()
735
760
736
761
# THEN
737
- assert len (batch .fail_messages ) == 1
738
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record ["dynamodb" ]["SequenceNumber" ]}]}
762
+ assert len (batch .fail_messages ) == 2
763
+ assert batch .response () == {
764
+ "batchItemFailures" : [
765
+ {"itemIdentifier" : first_record ["dynamodb" ]["SequenceNumber" ]},
766
+ {"itemIdentifier" : third_record ["dynamodb" ]["SequenceNumber" ]},
767
+ ]
768
+ }
739
769
740
770
741
771
def test_batch_processor_kinesis_context_parser_model (kinesis_event_factory , order_event_factory ):
@@ -807,16 +837,22 @@ def record_handler(record: OrderKinesisRecord):
807
837
808
838
first_record = kinesis_event_factory (order_event_fail )
809
839
second_record = kinesis_event_factory (order_event )
810
- records = [first_record , second_record ]
840
+ third_record = kinesis_event_factory (order_event_fail )
841
+ records = [first_record , second_record , third_record ]
811
842
812
843
# WHEN
813
844
processor = BatchProcessor (event_type = EventType .KinesisDataStreams , model = OrderKinesisRecord )
814
845
with processor (records , record_handler ) as batch :
815
846
batch .process ()
816
847
817
848
# THEN
818
- assert len (batch .fail_messages ) == 1
819
- assert batch .response () == {"batchItemFailures" : [{"itemIdentifier" : first_record ["kinesis" ]["sequenceNumber" ]}]}
849
+ assert len (batch .fail_messages ) == 2
850
+ assert batch .response () == {
851
+ "batchItemFailures" : [
852
+ {"itemIdentifier" : first_record ["kinesis" ]["sequenceNumber" ]},
853
+ {"itemIdentifier" : third_record ["kinesis" ]["sequenceNumber" ]},
854
+ ]
855
+ }
820
856
821
857
822
858
def test_batch_processor_error_when_entire_batch_fails (sqs_event_factory , record_handler ):
0 commit comments