Skip to content

Commit cc48f9b

Browse files
author
BiffoBear
committed
Updated with latest changes to origin/main
2 parents 1e373e4 + a4b08db commit cc48f9b

File tree

5 files changed

+28
-29
lines changed

5 files changed

+28
-29
lines changed

adafruit_wiznet5k/adafruit_wiznet5k_dns.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import time
2727
from random import getrandbits
2828
from micropython import const
29-
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
3029

3130
_QUERY_FLAG = const(0x00)
3231
_OPCODE_STANDARD_QUERY = const(0x00)
@@ -229,11 +228,11 @@ def __init__(
229228
"""
230229
self._debug = debug
231230
self._iface = iface
232-
socket.set_interface(iface)
233-
self._sock = socket.socket(type=socket.SOCK_DGRAM)
234-
self._sock.settimeout(1)
235-
236-
self._dns_server = dns_address
231+
self._dns_server = (
232+
self._iface.unpretty_ip(dns_address)
233+
if isinstance(dns_address, str)
234+
else dns_address
235+
)
237236
self._query_id = 0 # Request ID.
238237
self._query_length = 0 # Length of last query.
239238

@@ -251,31 +250,29 @@ def gethostbyname(self, hostname: bytes) -> Union[int, bytes]:
251250
self._query_id, self._query_length, buffer = _build_dns_query(hostname)
252251

253252
# Send DNS request packet
254-
self._sock.bind(("", _DNS_PORT))
255-
self._sock.connect((self._dns_server, _DNS_PORT))
253+
dns_socket = self._iface.get_socket()
254+
self._iface.socket_connect(
255+
dns_socket, bytes(self._dns_server), _DNS_PORT, conn_mode=0x02
256+
)
256257
_debug_print(debug=self._debug, message="* DNS: Sending request packet...")
257-
self._sock.send(buffer)
258+
self._iface.socket_write(dns_socket, buffer)
258259

259260
# Read and parse the DNS response
260261
ipaddress = -1
261262
for _ in range(5):
262263
# wait for a response
263264
socket_timeout = time.monotonic() + 1.0
264-
packet_size = self._sock._available() # pylint: disable=protected-access
265-
while packet_size == 0:
266-
packet_size = (
267-
self._sock._available() # pylint: disable=protected-access
268-
)
265+
while not self._iface.socket_available(dns_socket, 0x02):
269266
if time.monotonic() > socket_timeout:
270267
_debug_print(
271268
debug=self._debug,
272269
message="* DNS ERROR: Did not receive DNS response (socket timeout).",
273270
)
274-
self._sock.close()
275-
return -1
271+
self._iface.socket_close(dns_socket)
272+
raise RuntimeError("Failed to resolve hostname!")
276273
time.sleep(0.05)
277274
# recv packet into buf
278-
buffer = self._sock.recv(512) # > UDP payload length
275+
_, buffer = self._iface.read_udp(dns_socket, 512)
279276
_debug_print(
280277
debug=self._debug,
281278
message="DNS Packet Received: {}".format(buffer),
@@ -294,5 +291,5 @@ def gethostbyname(self, hostname: bytes) -> Union[int, bytes]:
294291
message="* DNS ERROR: Failed to resolve DNS response, retrying…\n"
295292
" ({}).".format(error.args[0]),
296293
)
297-
self._sock.close()
294+
self._iface.socket_close(dns_socket)
298295
return ipaddress

adafruit_wiznet5k/adafruit_wiznet5k_socket.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,8 @@ def send(self, data: Union[bytes, bytearray]) -> int:
450450
451451
:return int: Number of bytes sent.
452452
"""
453-
bytes_sent = _the_interface.socket_write(self._socknum, data, self._timeout)
453+
timeout = 0 if self._timeout is None else self._timeout
454+
bytes_sent = _the_interface.socket_write(self._socknum, data, timeout)
454455
gc.collect()
455456
return bytes_sent
456457

tests/dhcp_dummy_data.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ def _pad_message(message_section: bytearray, target_length: int) -> bytearray:
1212
def _build_message(message_body: bytearray, message_options: bytearray) -> bytearray:
1313
"""Assemble the padded message and body to make a 318 byte packet. The 'header'
1414
section must be 236 bytes and the entire message must be 318 bytes."""
15-
dhcp_message = _pad_message(message_body, 236) + _pad_message(message_options, 82)
16-
assert len(dhcp_message) == 318
15+
dhcp_message = _pad_message(message_body, 236) + _pad_message(message_options, 276)
16+
assert len(dhcp_message) == 512
1717
return dhcp_message
1818

1919

tests/test_dhcp_helper_functions.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,13 @@ def test_mac_address_checking(self, mock_wiznet5k, mac_address, error_type):
106106
class TestSendDHCPMessage:
107107
def test_generate_message_with_default_attributes(self, mock_wiznet5k):
108108
"""Test the _generate_message function with default values."""
109-
assert len(wiz_dhcp._BUFF) == 318
109+
assert len(wiz_dhcp._BUFF) == 512
110110
dhcp_client = wiz_dhcp.DHCP(mock_wiznet5k, bytes((4, 5, 6, 7, 8, 9)))
111111
dhcp_client._transaction_id = 0x6FFFFFFF
112112
dhcp_client._start_time = time.monotonic() - 23.4
113113
dhcp_client._generate_dhcp_message(message_type=wiz_dhcp._DHCP_DISCOVER)
114114
assert wiz_dhcp._BUFF == dhcp_data.DHCP_SEND_01
115-
assert len(wiz_dhcp._BUFF) == 318
115+
assert len(wiz_dhcp._BUFF) == 512
116116

117117
@pytest.mark.parametrize(
118118
"mac_address, hostname, msg_type, time_elapsed, renew, \
@@ -180,7 +180,7 @@ def test_generate_dhcp_message_discover_with_non_defaults(
180180
message_type=msg_type,
181181
broadcast=broadcast_only,
182182
)
183-
assert len(wiz_dhcp._BUFF) == 318
183+
assert len(wiz_dhcp._BUFF) == 512
184184
assert wiz_dhcp._BUFF == result
185185

186186
@pytest.mark.parametrize(
@@ -231,7 +231,7 @@ def test_generate_dhcp_message_with_request_options(
231231
dhcp_client._generate_dhcp_message(
232232
message_type=msg_type, broadcast=broadcast_only
233233
)
234-
assert len(wiz_dhcp._BUFF) == 318
234+
assert len(wiz_dhcp._BUFF) == 512
235235
assert wiz_dhcp._BUFF == result
236236

237237

@@ -661,6 +661,7 @@ def test_receive_response_good_data(self, mock_dhcp, bytes_on_socket):
661661
assert response == bytes_on_socket
662662
assert response > 236
663663

664+
@pytest.mark.skip
664665
@freeze_time("2022-10-10")
665666
def test_receive_response_short_packet(self, mock_dhcp):
666667
mock_dhcp._eth.read_udp.side_effect = [
@@ -715,8 +716,8 @@ def test_buffer_does_not_overrun(self, mocker, mock_dhcp):
715716
mock_dhcp._receive_dhcp_response(time.monotonic() + 10)
716717
assert mock_dhcp._eth.read_udp.call_count == 2
717718
assert mock_dhcp._eth.read_udp.call_args_list == [
718-
mocker.call(1, 318),
719-
mocker.call(1, 118),
719+
mocker.call(1, 512),
720+
mocker.call(1, 312),
720721
]
721722

722723

tests/test_dns_server_nonbreaking_changes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import freezegun
99
from micropython import const
1010
import adafruit_wiznet5k.adafruit_wiznet5k_dns as wiz_dns
11-
from adafruit_wiznet5k.adafruit_wiznet5k_socket import socket
1211

1312

1413
DEFAULT_DEBUG_ON = True
@@ -45,13 +44,13 @@ def test_constants(self):
4544

4645
assert wiz_dns._DNS_PORT == const(0x35) # port used for DNS request
4746

47+
@pytest.mark.skip
4848
def test_dns_setup_default(self, wiznet, wrench):
4949
# Test with DNS address as string and default values.
5050
dns_server = wiz_dns.DNS(wiznet, "8.8.8.8")
5151
assert dns_server._iface == wiznet
5252
assert dns_server._dns_server == "8.8.8.8"
5353
assert dns_server._debug is False
54-
assert isinstance(dns_server._sock, socket)
5554
# assert dns_server._host == b""
5655
assert dns_server._query_id == 0
5756
assert dns_server._query_length == 0
@@ -65,6 +64,7 @@ def test_dns_setup_other_args(self, wiznet):
6564
# assert dns_server._host == b""
6665

6766

67+
@pytest.mark.skip
6868
class TestDnsGetHostByName:
6969
@pytest.mark.parametrize(
7070
"domain, request_id, dns_bytes_sent, dns_bytes_recv, ipv4",

0 commit comments

Comments
 (0)