Skip to content

Commit 25f9a3b

Browse files
authored
Test for UDP socket (#293)
* Testing a UDP socket. * precommit hooks' update
1 parent 6fb9720 commit 25f9a3b

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ repos:
1515
exclude: helm/
1616
args: [ --unsafe ]
1717
- repo: https://github.com/charliermarsh/ruff-pre-commit
18-
rev: "v0.11.2"
18+
rev: "v0.11.11"
1919
hooks:
2020
- id: ruff
2121
args: [--fix, --exit-non-zero-on-fix]

mocket/socket.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ def makefile(self, mode: str = "r", bufsize: int = -1) -> MocketSocketIO:
170170
def get_entry(self, data: bytes) -> MocketEntry | None:
171171
return Mocket.get_entry(self._host, self._port, data)
172172

173+
def sendto(self, data: ReadableBuffer, address: Address | None = None) -> int:
174+
self.connect(address)
175+
self.sendall(data)
176+
return len(data)
177+
173178
def sendall(self, data, entry=None, *args, **kwargs):
174179
if entry is None:
175180
entry = self.get_entry(data)
@@ -204,6 +209,11 @@ def recv_into(
204209
buffer[: len(data)] = data
205210
return len(data)
206211

212+
def recvfrom(
213+
self, buffersize: int, flags: int | None = None
214+
) -> tuple[bytes, _RetAddress]:
215+
return self.recv(buffersize, flags), self._address
216+
207217
def recv(self, buffersize: int, flags: int | None = None) -> bytes:
208218
r_fd, _ = Mocket.get_pair((self._host, self._port))
209219
if r_fd:

tests/test_socket.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import pytest
44

5+
from mocket import Mocket, MocketEntry, mocketize
56
from mocket.socket import MocketSocket
67

78

@@ -11,3 +12,21 @@ def test_blocking_socket(blocking):
1112
sock.connect(("locahost", 1234))
1213
sock.setblocking(blocking)
1314
assert sock.getblocking() is blocking
15+
16+
17+
@mocketize
18+
def test_udp_socket():
19+
host = "127.0.0.1"
20+
port = 9999
21+
request_data = b"ping"
22+
response_data = b"pong"
23+
24+
Mocket.register(MocketEntry((host, port), [response_data]))
25+
26+
# Your UDP client code
27+
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
28+
sock.sendto(request_data, (host, port))
29+
data, address = sock.recvfrom(1024)
30+
31+
assert data == response_data
32+
assert address == (host, port)

0 commit comments

Comments
 (0)