Michael Felt <aixto...@felt.demon.nl> added the comment:
In hindsight, maybe the message could have been better, BUT - is it relevant? commit 413118ebf3162418639a5c4af14b02d26571a02c Author: Michael Felt <aixto...@users.noreply.github.com> Date: Fri Sep 14 01:35:56 2018 +0200 Fix test_asyncio for AIX - do not call transport.get_extra_info('sockname') (#8907) FYI: I have a server where "netstat -in" (aka ip a) does show an address with a scope component. Not figured out how to query that in C or python yet. (not my favorite thing - messing with socket() :p@me) Re: the example below - I would have thought the scopeid would be showing on en1, not en2 - and I am also wondering, if the scopeid is "%1" AIX ignores it. (also, I masked my global ipv6 address). Maybe en0 has a scopeid BECAUSE there is a global address (where en1 does not). michael@x071:[/home/michael]netstat -ni Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll en0 1500 link#2 fa.d1.8c.f7.62.4 3103849 0 1085261 0 0 en0 1500 192.168.129 192.168.129.71 3103849 0 1085261 0 0 en0 1500 192.168.90 192.168.90.71 3103849 0 1085261 0 0 en0 1500 MASK::1:f8d1:8cff:fef7:6204 3103849 0 1085261 0 0 en0 1500 fe80::f8d1:8cff:fef7:6204%2 3103849 0 1085261 0 0 en1 1500 link#3 fa.d1.8c.f7.62.5 12704 0 9323 0 0 en1 1500 192.168.2 192.168.2.1 12704 0 9323 0 0 en1 1500 fe80::f8d1:8cff:fef7:6205 12704 0 9323 0 0 lo0 16896 link#1 3908 0 3908 0 0 lo0 16896 127 127.0.0.1 3908 0 3908 0 0 lo0 16896 ::1%1 3908 0 3908 0 0 So, I looked at another server with two interfaces - here only one has a IPv6 address root@x064:[/home/root]netstat -in Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll en0 1500 link#2 0.21.5e.a3.c7.44 119801 0 84874 0 0 en0 1500 192.168.129 192.168.129.64 119801 0 84874 0 0 en0 1500 fe80::221:5eff:fea3:c744 119801 0 84874 0 0 en1 1500 link#3 fa.d1.81.81.ac.5 89362 0 48409 0 0 en1 1500 192.168.2 192.168.2.64 89362 0 48409 0 0 lo0 16896 link#1 139882 0 139881 0 0 lo0 16896 127 127.0.0.1 139882 0 139881 0 0 lo0 16896 ::1%1 139882 0 139881 0 0 root@x064:[/home/root] And, after I activate IPv6 on the second interface - I see a scopeid-like representation: Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll en0 1500 link#2 0.21.5e.a3.c7.44 120043 0 85045 0 0 en0 1500 192.168.129 192.168.129.64 120043 0 85045 0 0 en0 1500 fe80::221:5eff:fea3:c744 120043 0 85045 0 0 en1 1500 link#3 fa.d1.81.81.ac.5 89370 0 48420 0 0 en1 1500 192.168.2 192.168.2.64 89370 0 48420 0 0 en1 1500 fe80::f8d1:81ff:fe81:ac05%2 89370 0 48420 0 0 lo0 16896 link#1 139923 0 139922 0 0 lo0 16896 127 127.0.0.1 139923 0 139922 0 0 lo0 16896 ::1%1 139923 0 139922 0 0 I would have to guess at this point, but to simplify, it seems that AIX resolves addresses differently (rather than say 'not correctly') and maybe requires specific conditions. If relevant - I can provide the output from Debian on POWER. But it seems AIX is only using a "ADDRv6%scopeid" when there at least two interfaces defined. +++++++++ What the bot is not showing is this re: the "mock" connections 'failing': root@x066:[/data/prj/python/python3-3.8]./python -m test test_asyncio Run tests sequentially 0:00:00 [1/1] test_asyncio /data/prj/python/git/python3-3.8/Lib/test/support/__init__.py:1627: RuntimeWarning: coroutine 'AsyncMockMixin._mock_call' was never awaited gc.collect() RuntimeWarning: Enable tracemalloc to get the object allocation traceback Future exception was never retrieved future: <Future finished exception=BrokenPipeError(32, 'Broken pipe')> Traceback (most recent call last): File "/data/prj/python/git/python3-3.8/Lib/asyncio/subprocess.py", line 162, in _feed_stdin await self.stdin.drain() File "/data/prj/python/git/python3-3.8/Lib/asyncio/streams.py", line 443, in drain await self._protocol._drain_helper() File "/data/prj/python/git/python3-3.8/Lib/asyncio/streams.py", line 200, in _drain_helper await waiter File "/data/prj/python/git/python3-3.8/Lib/asyncio/unix_events.py", line 661, in _write_ready n = os.write(self._fileno, self._buffer) BrokenPipeError: [Errno 32] Broken pipe Future exception was never retrieved future: <Future finished exception=BrokenPipeError(32, 'Broken pipe')> Traceback (most recent call last): File "/data/prj/python/git/python3-3.8/Lib/asyncio/subprocess.py", line 162, in _feed_stdin await self.stdin.drain() File "/data/prj/python/git/python3-3.8/Lib/asyncio/streams.py", line 443, in drain await self._protocol._drain_helper() File "/data/prj/python/git/python3-3.8/Lib/asyncio/streams.py", line 200, in _drain_helper await waiter File "/data/prj/python/git/python3-3.8/Lib/asyncio/unix_events.py", line 661, in _write_ready n = os.write(self._fileno, self._buffer) BrokenPipeError: [Errno 32] Broken pipe test test_asyncio failed -- Traceback (most recent call last): File "/data/prj/python/git/python3-3.8/Lib/unittest/mock.py", line 1226, in patched return func(*args, **keywargs) File "/data/prj/python/git/python3-3.8/Lib/test/test_asyncio/test_base_events.py", line 1316, in test_create_connection_ipv6_scope sock.connect.assert_called_with(('fe80::1', 80, 0, 1)) File "/data/prj/python/git/python3-3.8/Lib/unittest/mock.py", line 838, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: expected call not found. Expected: connect(('fe80::1', 80, 0, 1)) Actual: connect(('fe80::1', 80, 0, 0)) FYI: I have IPv6 interfaces defined on this server (x066) - but only one. And I tried changing fe80::1%1 to fe80::1%2, etc, but the end result is similar: AssertionError: expected call not found. Expected: connect(('fe80::1', 80, 0, 2)) Actual: connect(('fe80::1', 80, 0, 0)) Hope this helps! ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35545> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com