Skip to content

Commit 7c05293

Browse files
committed
fix: tests
1 parent 15daf6b commit 7c05293

2 files changed

Lines changed: 34 additions & 13 deletions

File tree

tests/test_core.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import time
1313
import unittest
1414
import unittest.mock
15-
from typing import cast
15+
from typing import Tuple, Union, cast
1616
from unittest.mock import patch
1717

1818
if sys.version_info[:3][1] < 8:
@@ -26,6 +26,8 @@
2626

2727
import zeroconf as r
2828
from zeroconf import NotRunningException, Zeroconf, const, current_time_millis
29+
from zeroconf._listener import AsyncListener, _WrappedTransport
30+
from zeroconf._protocol.incoming import DNSIncoming
2931
from zeroconf.asyncio import AsyncZeroconf
3032

3133
from . 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]

tests/test_listener.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@
1010
from unittest.mock import MagicMock, patch
1111

1212
import zeroconf as r
13-
from zeroconf import Zeroconf, _engine, _listener, const, current_time_millis
13+
from zeroconf import (
14+
ServiceInfo,
15+
Zeroconf,
16+
_engine,
17+
_listener,
18+
const,
19+
current_time_millis,
20+
)
1421
from zeroconf._protocol import outgoing
1522
from zeroconf._protocol.incoming import DNSIncoming
1623

@@ -125,6 +132,9 @@ def test_guard_against_duplicate_packets():
125132
These packets can quickly overwhelm the system.
126133
"""
127134
zc = Zeroconf(interfaces=['127.0.0.1'])
135+
zc.registry.async_add(
136+
ServiceInfo("_http._tcp.local.", "Test._http._tcp.local.", server="Test._http._tcp.local.", port=4)
137+
)
128138
zc.question_history = QuestionHistoryWithoutSuppression()
129139

130140
class SubListener(_listener.AsyncListener):

0 commit comments

Comments
 (0)