Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4a30c09

Browse files
add test for ipv6 functionality
Signed-off-by: Matt Cipperly <mcipperly@fb.com>
1 parent 6f9b0b0 commit 4a30c09

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

‎tests/mockserver.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ class MockRecvServer(threading.Thread):
1616
Single threaded server accepts one connection and recv until EOF.
1717
"""
1818

19-
def __init__(self, host='localhost', port=0):
19+
def __init__(self, host='localhost', port=0, inet_family=socket.AF_INET):
2020
super(MockRecvServer, self).__init__()
2121

2222
if host.startswith('unix://'):
2323
self.socket_proto = socket.AF_UNIX
2424
self.socket_type = socket.SOCK_STREAM
2525
self.socket_addr = host[len('unix://'):]
2626
else:
27-
self.socket_proto = socket.AF_INET
27+
self.socket_proto = inet_family
2828
self.socket_type = socket.SOCK_STREAM
2929
self.socket_addr = (host, port)
3030

3131
self._sock = socket.socket(self.socket_proto, self.socket_type)
3232
self._sock.bind(self.socket_addr)
33-
if self.socket_proto == socket.AF_INET:
33+
if self.socket_proto == inet_family:
3434
self.port = self._sock.getsockname()[1]
3535

3636
self._sock.listen(1)
@@ -76,7 +76,7 @@ def close(self):
7676
pass
7777

7878
try:
79-
conn = socket.socket(socket.AF_INET,
79+
conn = socket.socket(self.socket_proto,
8080
socket.SOCK_STREAM)
8181
try:
8282
conn.connect((self.socket_addr[0], self.port))

‎tests/test_sender.py‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import unittest
99
from shutil import rmtree
1010
from tempfile import mkdtemp
11+
from unittest.mock import patch
1112

1213
import msgpack
1314

@@ -291,6 +292,37 @@ def recv(self, bufsize, flags=0):
291292
finally:
292293
self._sender.socket = old_sock
293294

295+
def test_ipv6_only(self):
296+
# Test if our host supports IPv6 before running this test
297+
try:
298+
socket.gethostbyaddr('::1')
299+
except socket.herror:
300+
self.skipTest("Host does not support IPv6, cannot run this test")
301+
302+
self.tearDown()
303+
304+
real_getaddrinfo = socket.getaddrinfo
305+
306+
def _fake_getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
307+
if family == socket.AF_INET:
308+
raise socket.gaierror("mock: IPv6 Only")
309+
else:
310+
return real_getaddrinfo(host, port, family, type, proto, flags)
311+
312+
self._server = mockserver.MockRecvServer(host='localhost',
313+
inet_family=socket.AF_INET6)
314+
315+
316+
with patch('socket.getaddrinfo', side_effect=_fake_getaddrinfo):
317+
sender = fluent.sender.FluentSender(tag='test',
318+
host='localhost',
319+
port=self._server.port)
320+
sender.emit('foo', {'bar': 'baz'})
321+
sender._close()
322+
data = self.get_data()
323+
self.assertEqual(len(data), 1)
324+
self.assertEqual(data[0][2], {'bar': 'baz'})
325+
294326
@unittest.skipIf(sys.platform == "win32", "Unix socket not supported")
295327
def test_unix_socket(self):
296328
self.tearDown()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /