1212import time
1313import unittest
1414import unittest .mock
15- from typing import cast
15+ from typing import Tuple , Union , cast
1616from unittest .mock import patch
1717
1818if sys .version_info [:3 ][1 ] < 8 :
2626
2727import zeroconf as r
2828from zeroconf import NotRunningException , Zeroconf , const , current_time_millis
29+ from zeroconf ._listener import AsyncListener , _WrappedTransport
30+ from zeroconf ._protocol .incoming import DNSIncoming
2931from zeroconf .asyncio import AsyncZeroconf
3032
3133from . import _clear_cache , _inject_response , _wait_for_start , has_working_ipv6
@@ -45,10 +47,19 @@ def teardown_module():
4547 log .setLevel (original_logging_level )
4648
4749
48- def threadsafe_query (zc , protocol , * args ):
50+ def threadsafe_query (
51+ zc : 'Zeroconf' ,
52+ protocol : 'AsyncListener' ,
53+ msg : DNSIncoming ,
54+ addr : str ,
55+ port : int ,
56+ transport : _WrappedTransport ,
57+ v6_flow_scope : Union [Tuple [()], Tuple [int , int ]],
58+ ) -> None :
4959 async def make_query ():
50- protocol .handle_query_or_defer (* args )
60+ protocol .handle_query_or_defer (msg , addr , port , transport , v6_flow_scope )
5161
62+ assert zc .loop is not None
5263 asyncio .run_coroutine_threadsafe (make_query (), zc .loop ).result ()
5364
5465
@@ -476,28 +487,28 @@ def test_tc_bit_defers():
476487
477488 next_packet = r .DNSIncoming (packets .pop (0 ))
478489 expected_deferred .append (next_packet )
479- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
490+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
480491 assert protocol ._deferred [source_ip ] == expected_deferred
481492 assert source_ip in protocol ._timers
482493
483494 next_packet = r .DNSIncoming (packets .pop (0 ))
484495 expected_deferred .append (next_packet )
485- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
496+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
486497 assert protocol ._deferred [source_ip ] == expected_deferred
487498 assert source_ip in protocol ._timers
488- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
499+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
489500 assert protocol ._deferred [source_ip ] == expected_deferred
490501 assert source_ip in protocol ._timers
491502
492503 next_packet = r .DNSIncoming (packets .pop (0 ))
493504 expected_deferred .append (next_packet )
494- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
505+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
495506 assert protocol ._deferred [source_ip ] == expected_deferred
496507 assert source_ip in protocol ._timers
497508
498509 next_packet = r .DNSIncoming (packets .pop (0 ))
499510 expected_deferred .append (next_packet )
500- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
511+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
501512 assert source_ip not in protocol ._deferred
502513 assert source_ip not in protocol ._timers
503514
@@ -555,20 +566,20 @@ def test_tc_bit_defers_last_response_missing():
555566
556567 next_packet = r .DNSIncoming (packets .pop (0 ))
557568 expected_deferred .append (next_packet )
558- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
569+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
559570 assert protocol ._deferred [source_ip ] == expected_deferred
560571 timer1 = protocol ._timers [source_ip ]
561572
562573 next_packet = r .DNSIncoming (packets .pop (0 ))
563574 expected_deferred .append (next_packet )
564- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
575+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
565576 assert protocol ._deferred [source_ip ] == expected_deferred
566577 timer2 = protocol ._timers [source_ip ]
567578 assert timer1 .cancelled ()
568579 assert timer2 != timer1
569580
570581 # Send the same packet again to similar multi interfaces
571- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
582+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
572583 assert protocol ._deferred [source_ip ] == expected_deferred
573584 assert source_ip in protocol ._timers
574585 timer3 = protocol ._timers [source_ip ]
@@ -577,7 +588,7 @@ def test_tc_bit_defers_last_response_missing():
577588
578589 next_packet = r .DNSIncoming (packets .pop (0 ))
579590 expected_deferred .append (next_packet )
580- threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , None )
591+ threadsafe_query (zc , protocol , next_packet , source_ip , const ._MDNS_PORT , Mock (), () )
581592 assert protocol ._deferred [source_ip ] == expected_deferred
582593 assert source_ip in protocol ._timers
583594 timer4 = protocol ._timers [source_ip ]
0 commit comments