@@ -39,43 +39,24 @@ def __init__(self, topic: str = "test-topic", partition: int = 0, offset: int =
3939
4040@pytest_asyncio .fixture
4141async def handler () -> typing .AsyncIterator [KafkaConcurrentHandler ]:
42- with patch (
43- "faststream_concurrent_aiokafka.processing.KafkaBatchCommitter" ,
44- MockKafkaBatchCommitter ,
45- ):
46- handler : typing .Final = KafkaConcurrentHandler (
47- enable_batch_commit = False ,
48- concurrency_limit = 0 ,
49- )
50- yield handler
51- if handler ._is_running :
52- await handler .stop ()
42+ handler : typing .Final = KafkaConcurrentHandler (concurrency_limit = 0 )
43+ yield handler
44+ if handler ._is_running :
45+ await handler .stop ()
5346
5447
5548@pytest_asyncio .fixture
5649async def handler_with_committer () -> typing .AsyncIterator [KafkaConcurrentHandler ]:
57- with patch (
58- "faststream_concurrent_aiokafka.processing.KafkaBatchCommitter" ,
59- MockKafkaBatchCommitter ,
60- ):
61- h : typing .Final = KafkaConcurrentHandler (
62- enable_batch_commit = True ,
63- commit_batch_timeout_sec = 5 ,
64- commit_batch_size = 10 ,
65- )
66- yield h
67- if h ._is_running :
68- await h .stop ()
50+ h : typing .Final = KafkaConcurrentHandler (committer = MockKafkaBatchCommitter ()) # ty: ignore[invalid-argument-type]
51+ yield h
52+ if h ._is_running :
53+ await h .stop ()
6954
7055
7156@pytest_asyncio .fixture
7257async def handler_with_limit () -> typing .AsyncIterator [KafkaConcurrentHandler ]:
73- with patch (
74- "faststream_concurrent_aiokafka.processing.KafkaBatchCommitter" ,
75- MockKafkaBatchCommitter ,
76- ):
77- h : typing .Final = KafkaConcurrentHandler (concurrency_limit = 2 )
78- yield h
58+ h : typing .Final = KafkaConcurrentHandler (concurrency_limit = 2 )
59+ yield h
7960
8061
8162@pytest .fixture
@@ -88,25 +69,6 @@ def sample_record() -> MockConsumerRecord:
8869 return MockConsumerRecord ()
8970
9071
91- def test_concurrent_singleton_same_instance () -> None :
92- h1 : typing .Final = KafkaConcurrentHandler ()
93- h2 : typing .Final = KafkaConcurrentHandler ()
94-
95- assert h1 is h2
96-
97-
98- def test_concurrent_init_called_several_times () -> None :
99- expected : typing .Final = 5
100- first : typing .Final = KafkaConcurrentHandler (concurrency_limit = expected )
101- second : typing .Final = KafkaConcurrentHandler (concurrency_limit = expected * 2 )
102-
103- assert second is first
104- assert first .limiter
105- assert second .limiter
106- assert isinstance (first .limiter , asyncio .Semaphore )
107- assert first .limiter is second .limiter
108-
109-
11072def test_concurrent_init_without_concurrency_limit () -> None :
11173 obj : typing .Final = KafkaConcurrentHandler (concurrency_limit = 0 )
11274 assert obj .limiter is None
@@ -541,75 +503,63 @@ async def test_concurrent_cancels_observer(handler: KafkaConcurrentHandler, capl
541503
542504
543505async def test_concurrent_full_lifecycle () -> None :
544- with patch (
545- "faststream_concurrent_aiokafka.batch_committer.KafkaBatchCommitter" ,
546- MockKafkaBatchCommitter ,
547- ):
548- handler : typing .Final = KafkaConcurrentHandler (enable_batch_commit = True , concurrency_limit = 2 )
506+ handler : typing .Final = KafkaConcurrentHandler (committer = MockKafkaBatchCommitter (), concurrency_limit = 2 ) # ty: ignore[invalid-argument-type]
549507
550- await handler .start ()
551- assert handler .is_healthy
508+ await handler .start ()
509+ assert handler .is_healthy
552510
553- processed : typing .Final = []
511+ processed : typing .Final = []
554512
555- async def process_msg (msg_id : int ) -> None :
556- await asyncio .sleep (0.01 )
557- processed .append (msg_id )
513+ async def process_msg (msg_id : int ) -> None :
514+ await asyncio .sleep (0.01 )
515+ processed .append (msg_id )
558516
559- msg : typing .Final = MockKafkaMessage ()
560- record : typing .Final = MockConsumerRecord ()
517+ msg : typing .Final = MockKafkaMessage ()
518+ record : typing .Final = MockConsumerRecord ()
561519
562- for i in range (5 ):
563- await handler .handle_task (process_msg (i ), record , msg ) # ty: ignore[invalid-argument-type]
520+ for i in range (5 ):
521+ await handler .handle_task (process_msg (i ), record , msg ) # ty: ignore[invalid-argument-type]
564522
565- await handler .wait_for_subtasks ()
566- await handler .stop ()
523+ await handler .wait_for_subtasks ()
524+ await handler .stop ()
567525
568- assert not handler .is_running
569- assert len (processed ) > 0
526+ assert not handler .is_running
527+ assert len (processed ) > 0
570528
571529
572530async def test_concurrent_message_processing () -> None :
573531 target_value : typing .Final = 5
574- with patch (
575- "faststream_concurrent_aiokafka.batch_committer.KafkaBatchCommitter" ,
576- MockKafkaBatchCommitter ,
577- ):
578- handler : typing .Final = KafkaConcurrentHandler (concurrency_limit = target_value )
579- await handler .start ()
532+ handler : typing .Final = KafkaConcurrentHandler (concurrency_limit = target_value )
533+ await handler .start ()
580534
581- start_times : typing .Final = []
582- end_times : typing .Final = []
535+ start_times : typing .Final = []
536+ end_times : typing .Final = []
583537
584- async def tracked_task (idx : int ) -> None :
585- start_times .append ((idx , asyncio .get_event_loop ().time ()))
586- await asyncio .sleep (0.05 )
587- end_times .append ((idx , asyncio .get_event_loop ().time ()))
538+ async def tracked_task (idx : int ) -> None :
539+ start_times .append ((idx , asyncio .get_event_loop ().time ()))
540+ await asyncio .sleep (0.05 )
541+ end_times .append ((idx , asyncio .get_event_loop ().time ()))
588542
589- msg : typing .Final = MockKafkaMessage ()
590- record : typing .Final = MockConsumerRecord ()
543+ msg : typing .Final = MockKafkaMessage ()
544+ record : typing .Final = MockConsumerRecord ()
591545
592- for i in range (target_value ):
593- await handler .handle_task (tracked_task (i ), record , msg ) # ty: ignore[invalid-argument-type]
546+ for i in range (target_value ):
547+ await handler .handle_task (tracked_task (i ), record , msg ) # ty: ignore[invalid-argument-type]
594548
595- await handler .wait_for_subtasks ()
596- await handler .stop ()
549+ await handler .wait_for_subtasks ()
550+ await handler .stop ()
597551
598- if len (start_times ) == target_value and len (end_times ) == target_value :
599- max_start : typing .Final = max (t for _ , t in start_times )
600- min_end : typing .Final = min (t for _ , t in end_times )
601- assert max_start < min_end
552+ if len (start_times ) == target_value and len (end_times ) == target_value :
553+ max_start : typing .Final = max (t for _ , t in start_times )
554+ min_end : typing .Final = min (t for _ , t in end_times )
555+ assert max_start < min_end
602556
603557
604558async def test_concurrent_signal_handling_integration () -> None :
605- with patch (
606- "faststream_concurrent_aiokafka.batch_committer.KafkaBatchCommitter" ,
607- MockKafkaBatchCommitter ,
608- ):
609- handler : typing .Final = KafkaConcurrentHandler ()
610- await handler .start ()
559+ handler : typing .Final = KafkaConcurrentHandler ()
560+ await handler .start ()
611561
612- handler ._signal_handler (signal .SIGTERM )
613- assert handler ._stop_task is not None
614- await handler ._stop_task
615- assert not handler .is_running
562+ handler ._signal_handler (signal .SIGTERM )
563+ assert handler ._stop_task is not None
564+ await handler ._stop_task
565+ assert not handler .is_running
0 commit comments