|
8 | 8 | import unittest
|
9 | 9 | from shutil import rmtree
|
10 | 10 | from tempfile import mkdtemp
|
| 11 | +from unittest.mock import patch |
11 | 12 |
|
12 | 13 | import msgpack
|
13 | 14 |
|
@@ -291,6 +292,31 @@ def recv(self, bufsize, flags=0):
|
291 | 292 | finally:
|
292 | 293 | self._sender.socket = old_sock
|
293 | 294 |
|
| 295 | + def test_ipv6_only(self): |
| 296 | + self.tearDown() |
| 297 | + |
| 298 | + real_getaddrinfo = socket.getaddrinfo |
| 299 | + |
| 300 | + def _fake_getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): |
| 301 | + if family == socket.AF_INET: |
| 302 | + raise socket.gaierror("mock: IPv6 Only") |
| 303 | + else: |
| 304 | + return real_getaddrinfo(host, port, family, type, proto, flags) |
| 305 | + |
| 306 | + self._server = mockserver.MockRecvServer(host='localhost', |
| 307 | + inet_family=socket.AF_INET6) |
| 308 | + |
| 309 | + |
| 310 | + with patch('socket.getaddrinfo', side_effect=_fake_getaddrinfo): |
| 311 | + sender = fluent.sender.FluentSender(tag='test', |
| 312 | + host='localhost', |
| 313 | + port=self._server.port) |
| 314 | + sender.emit('foo', {'bar': 'baz'}) |
| 315 | + sender._close() |
| 316 | + data = self.get_data() |
| 317 | + self.assertEqual(len(data), 1) |
| 318 | + self.assertEqual(data[0][2], {'bar': 'baz'}) |
| 319 | + |
294 | 320 | @unittest.skipIf(sys.platform == "win32", "Unix socket not supported")
|
295 | 321 | def test_unix_socket(self):
|
296 | 322 | self.tearDown()
|
|
0 commit comments