Skip to content

Commit 7a99164

Browse files
authored
updated broken tests (#896)
1 parent d1f3e1d commit 7a99164

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

datadog/dogstatsd/base.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -505,11 +505,11 @@ def socket(self, new_socket):
505505
if new_socket:
506506
try:
507507
self._socket_kind = new_socket.getsockopt(socket.SOL_SOCKET, socket.SO_TYPE)
508-
if self._socket_kind == socket.SOCK_STREAM:
509-
self._transport = "uds-stream"
510-
self._max_payload_size = self._max_buffer_len or UDS_OPTIMAL_PAYLOAD_LENGTH
511-
elif self._socket_kind == socket.SOCK_DGRAM:
512-
self._transport = "uds"
508+
if new_socket.family == socket.AF_UNIX:
509+
if self._socket_kind == socket.SOCK_STREAM:
510+
self._transport = "uds-stream"
511+
else:
512+
self._transport = "uds"
513513
self._max_payload_size = self._max_buffer_len or UDS_OPTIMAL_PAYLOAD_LENGTH
514514
else:
515515
self._transport = "udp"
@@ -518,6 +518,8 @@ def socket(self, new_socket):
518518
except AttributeError: # _socket can't have a type if it doesn't have sockopts
519519
log.info("Unexpected socket provided with no support for getsockopt")
520520
self._socket_kind = None
521+
# When the socket is None, we use the UDP optimal payload length
522+
self._max_payload_size = UDP_OPTIMAL_PAYLOAD_LENGTH
521523

522524
@property
523525
def telemetry_socket(self):

tests/unit/dogstatsd/test_statsd.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,19 @@ class FakeSocket(object):
4242

4343
FLUSH_GRACE_PERIOD = 0.2
4444

45-
def __init__(self, flush_interval=DEFAULT_BUFFERING_FLUSH_INTERVAL, socket_kind=socket.SOCK_DGRAM):
45+
def __init__(self, flush_interval=DEFAULT_BUFFERING_FLUSH_INTERVAL, socket_kind=socket.SOCK_DGRAM, socket_path=None):
4646
self.payloads = deque()
4747

4848
self._flush_interval = flush_interval
4949
self._flush_wait = False
5050
self._socket_kind = socket_kind
5151
self.timeout = () # unit tuple = settimeout was not called
5252

53+
if socket_path:
54+
self.family = socket.AF_UNIX
55+
else:
56+
self.family = socket.AF_INET
57+
5358
def sendall(self, payload):
5459
self.send(payload)
5560

@@ -768,19 +773,19 @@ def test_udp_socket_ensures_min_receive_buffer(self, mock_socket_create):
768773
MIN_SEND_BUFFER_SIZE,
769774
)
770775

771-
def test_socket_path_updates_telemetry(self):
776+
def test_socket_updates_telemetry(self):
772777
# Test UDP
773778
self.statsd.gauge("foo", 1)
774779
self.assert_equal_telemetry("foo:1|g\n", self.recv(2), transport="udp")
775780

776781
# Test UDS
777-
self.statsd.socket_path = "/fake/path"
782+
self.statsd.socket = FakeSocket(socket_path="/fake/path")
778783
self.statsd._reset_telemetry()
779784
self.statsd.gauge("foo", 2)
780785
self.assert_equal_telemetry("foo:2|g\n", self.recv(2), transport="uds")
781786

782787
# Test UDS stream
783-
self.statsd.socket_path = "unixstream://fake/path"
788+
self.statsd.socket = FakeSocket(socket_path="unixstream://fake/path", socket_kind=socket.SOCK_STREAM)
784789
self.statsd._reset_telemetry()
785790
self.statsd.gauge("foo", 2)
786791
self.assert_equal_telemetry("foo:2|g\n", self.recv(2), transport="uds-stream")
@@ -1904,7 +1909,7 @@ def test_default_max_uds_packet_size(self):
19041909
flush_interval=10000,
19051910
disable_telemetry=True,
19061911
)
1907-
dogstatsd.socket = FakeSocket()
1912+
dogstatsd.socket = FakeSocket(socket_path=dogstatsd.socket_path)
19081913

19091914
for _ in range(10000):
19101915
dogstatsd.increment('val')
@@ -2110,7 +2115,13 @@ def test_telemetry_api(self):
21102115
def test_max_payload_size(self):
21112116
statsd = DogStatsd(socket_path=None, port=8125)
21122117
self.assertEqual(statsd._max_payload_size, UDP_OPTIMAL_PAYLOAD_LENGTH)
2113-
statsd.socket_path = "/foo"
2118+
2119+
test_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
2120+
statsd.socket = test_socket
2121+
self.assertEqual(statsd._max_payload_size, UDP_OPTIMAL_PAYLOAD_LENGTH)
2122+
2123+
test_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
2124+
statsd.socket = test_socket
21142125
self.assertEqual(statsd._max_payload_size, UDS_OPTIMAL_PAYLOAD_LENGTH)
21152126

21162127
def test_post_fork_locks(self):

0 commit comments

Comments
 (0)