17
17
#
18
18
19
19
import pytest
20
- from confluent_kafka import TopicPartition , OFFSET_END , KafkaError
20
+ from confluent_kafka import TopicPartition , OFFSET_END , KafkaError , KafkaException
21
21
22
22
from confluent_kafka .error import ConsumeError
23
23
from confluent_kafka .serialization import StringSerializer
@@ -44,3 +44,53 @@ def test_consume_error(kafka_cluster):
44
44
consumer .poll ()
45
45
assert exc_info .value .args [0 ].code () == KafkaError ._PARTITION_EOF , \
46
46
"Expected _PARTITION_EOF, not {}" .format (exc_info )
47
+
48
+
49
+ def test_consume_error_commit (kafka_cluster ):
50
+ """
51
+ Tests to ensure that we handle messages with errors when commiting.
52
+ """
53
+ topic = kafka_cluster .create_topic ("test_commit_transaction" )
54
+ consumer_conf = {'group.id' : 'pytest' ,
55
+ 'session.timeout.ms' : 100 }
56
+
57
+ producer = kafka_cluster .producer ()
58
+ producer .produce (topic = topic , value = "a" )
59
+ producer .flush ()
60
+
61
+ consumer = kafka_cluster .cimpl_consumer (consumer_conf )
62
+ consumer .subscribe ([topic ])
63
+ try :
64
+ # Since the session timeout value is low, JoinGroupRequest will fail
65
+ # and we get error in a message while polling.
66
+ m = consumer .poll (1 )
67
+ consumer .commit (m )
68
+ except KafkaException as e :
69
+ assert e .args [0 ].code () == KafkaError ._INVALID_ARG , \
70
+ "Expected INVALID_ARG, not {}" .format (e )
71
+
72
+
73
+ def test_consume_error_store_offsets (kafka_cluster ):
74
+ """
75
+ Tests to ensure that we handle messages with errors when storing offsets.
76
+ """
77
+ topic = kafka_cluster .create_topic ("test_commit_transaction" )
78
+ consumer_conf = {'group.id' : 'pytest' ,
79
+ 'session.timeout.ms' : 100 ,
80
+ 'enable.auto.offset.store' : True ,
81
+ 'enable.auto.commit' : False }
82
+
83
+ producer = kafka_cluster .producer ()
84
+ producer .produce (topic = topic , value = "a" )
85
+ producer .flush ()
86
+
87
+ consumer = kafka_cluster .cimpl_consumer (consumer_conf )
88
+ consumer .subscribe ([topic ])
89
+ try :
90
+ # Since the session timeout value is low, JoinGroupRequest will fail
91
+ # and we get error in a message while polling.
92
+ m = consumer .poll (1 )
93
+ consumer .store_offsets (m )
94
+ except KafkaException as e :
95
+ assert e .args [0 ].code () == KafkaError ._INVALID_ARG , \
96
+ "Expected INVALID_ARG, not {}" .format (e )
0 commit comments