FAILED tests/http/test_06_eyeballs.py::TestEyeballs::test_06_13_timers - AssertionError: found: 17:40:27.656742 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
17:40:27.781388 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
17:40:27.783053 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 121000ns
>>--stdout ----------------------------------------------
{"certs":"","conn_id":0,"content_type":null,"errormsg":"Connection timed out after 1003 milliseconds","exitcode":28,"filename_effective":"download_#1.data","ftp_entry_path":null,"http_code
":0,"http_connect":0,"http_version":"0","local_ip":"","local_port":-1,"method":"GET","num_certs":0,"num_connects":0,"num_headers":0,"num_redirects":0,"num_retries":0,"proxy_ssl_verify_result
":0,"proxy_used":0,"redirect_url":null,"referer":null,"remote_ip":"","remote_port":-1,"response_code":0,"scheme":"https","size_delivered":0,"size_download":0,"size_header":0,"size_request":0
,"size_upload":0,"speed_download":0,"speed_upload":0,"ssl_verify_result":0,"time_appconnect":0.000000,"time_connect":0.000000,"time_namelookup":0.000122,"time_posttransfer":1.003389,"time_pr
etransfer":1.003388,"time_queue":0.000065,"time_redirect":0.000000,"time_starttransfer":1.003389,"time_total":1.003393,"tls_earlydata":0,"url":"https://xxx.invalid/","url.fragment":null,"url
.host":"xxx.invalid","url.options":null,"url.password":null,"url.path":"/","url.port":"443","url.query":null,"url.scheme":"https","url.user":null,"url.zoneid":null,"url_effective":"https://x
xx.invalid/","urle.fragment":null,"urle.host":"xxx.invalid","urle.options":null,"urle.password":null,"urle.path":"/","urle.port":"443","urle.query":null,"urle.scheme":"https","urle.user":nul
l,"urle.zoneid":null,"urlnum":0,"xfer_id":0,"curl_version":"libcurl/8.21.0 OpenSSL/3.6.3 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.23.0 libssh2/1.11.1 nghttp2/1.69.0 ngtcp2/1
.24.0 nghttp3/1.17.0 mit-krb5/1.22.1 OpenLDAP/2.6.13"}
>>--stderr ----------------------------------------------
17:40:27.655969 [0-x] * Added xxx.invalid:443:0100::1,0100::2,0100::3 to DNS cache
17:40:27.656047 [0-x] * [TIMER] [CONNECTTIMEOUT] set for 999999ns
17:40:27.656123 [0-0] * Hostname xxx.invalid was found in DNS cache
17:40:27.656168 [0-0] * Host xxx.invalid:443 was resolved.
17:40:27.656212 [0-0] * IPv6: 100::1, 100::2, 100::3
17:40:27.656254 [0-0] * IPv4: (none)
17:40:27.656299 [0-0] * [HAPPY-EYEBALLS] init ip ballers for transport 3
17:40:27.656342 [0-0] * [HAPPY-EYEBALLS] want to do more
17:40:27.656384 [0-0] * [HAPPY-EYEBALLS] check for next AAAA address: found
17:40:27.656427 [0-0] * [HAPPY-EYEBALLS] starting first attempt for ipv6 -> 0
17:40:27.656476 [0-0] * Trying [100::1]:443...
17:40:27.656525 [0-0] * [TCP] cf_socket_open() -> 0, fd=4
17:40:27.656613 [0-0] * [TCP] local address 2605:bc80:3010:b00:0:deb:166:201 port 49940...
17:40:27.656657 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
17:40:27.656700 [0-0] * [HAPPY-EYEBALLS] next HAPPY_EYEBALLS timeout in 123ms
17:40:27.656742 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
17:40:27.656789 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
17:40:27.656831 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks
17:40:27.656874 [0-0] * [TIMER] [HAPPY_EYEBALLS] gives multi timeout in 123ms
17:40:27.780577 [0-0] * [TCP] not connected yet on fd=4
17:40:27.780643 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
17:40:27.780705 [0-0] * [HAPPY-EYEBALLS] happy eyeballs timeout expired, start next attempt
17:40:27.780765 [0-0] * [HAPPY-EYEBALLS] want to do more
17:40:27.780826 [0-0] * [HAPPY-EYEBALLS] check for next AAAA address: found
17:40:27.780890 [0-0] * [HAPPY-EYEBALLS] starting next attempt for ipv6 -> 0
17:40:27.780952 [0-0] * [TCP] not connected yet on fd=4
17:40:27.781023 [0-0] * Trying [100::2]:443...
17:40:27.781093 [0-0] * [TCP] cf_socket_open() -> 0, fd=5
17:40:27.781201 [0-0] * [TCP] local address 2605:bc80:3010:b00:0:deb:166:201 port 60154...
17:40:27.781264 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 2 ongoing, 0 inconclusive
17:40:27.781327 [0-0] * [HAPPY-EYEBALLS] next HAPPY_EYEBALLS timeout in 123ms
17:40:27.781388 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
17:40:27.781455 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
17:40:27.781517 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=5
17:40:27.781578 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 2 socks
17:40:27.781640 [0-0] * [TIMER] [HAPPY_EYEBALLS] gives multi timeout in 123ms
17:40:27.782594 [0-0] * [TCP] not connected yet on fd=4
17:40:27.782660 [0-0] * [TCP] poll/select error on fd=5
17:40:27.782807 [0-0] * connect to 100::2 port 443 from 2605:bc80:3010:b00:0:deb:166:201 port 60154 failed: Network is unreachable
17:40:27.782869 [0-0] * [TCP] destroy
17:40:27.782930 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
17:40:27.782992 [0-0] * [HAPPY-EYEBALLS] next HAPPY_EYEBALLS timeout in 121ms
17:40:27.783053 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 121000ns
17:40:27.783119 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
17:40:27.783181 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks
17:40:27.783243 [0-0] * [TIMER] [HAPPY_EYEBALLS] gives multi timeout in 121ms
17:40:27.904958 [0-0] * [TCP] not connected yet on fd=4
17:40:27.905023 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
17:40:27.905085 [0-0] * [HAPPY-EYEBALLS] happy eyeballs timeout expired, start next attempt
17:40:27.905146 [0-0] * [HAPPY-EYEBALLS] want to do more
17:40:27.905208 [0-0] * [HAPPY-EYEBALLS] check for next AAAA address: found
17:40:27.905272 [0-0] * [HAPPY-EYEBALLS] starting next attempt for ipv6 -> 0
17:40:27.905335 [0-0] * [TCP] not connected yet on fd=4
17:40:27.905405 [0-0] * Trying [100::3]:443...
17:40:27.905473 [0-0] * [TCP] cf_socket_open() -> 0, fd=5
17:40:27.905575 [0-0] * [TCP] local address 2605:bc80:3010:b00:0:deb:166:201 port 49144...
17:40:27.905638 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 2 ongoing, 0 inconclusive
17:40:27.905706 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
17:40:27.905773 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=5
17:40:27.905836 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 2 socks
17:40:27.905899 [0-0] * [TIMER] [CONNECTTIMEOUT] gives multi timeout in 752ms
17:40:27.907430 [0-0] * [TCP] not connected yet on fd=4
17:40:27.907498 [0-0] * [TCP] poll/select error on fd=5
17:40:27.907582 [0-0] * connect to 100::3 port 443 from 2605:bc80:3010:b00:0:deb:166:201 port 49144 failed: Network is unreachable
17:40:27.907644 [0-0] * [TCP] destroy
17:40:27.907706 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
17:40:27.907773 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
17:40:27.907835 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks
17:40:27.907897 [0-0] * [TIMER] [CONNECTTIMEOUT] gives multi timeout in 750ms
17:40:28.659230 [0-0] * Connection timed out after 1003 milliseconds
17:40:28.659308 [0-0] * closing connection #0
<<-------------------------------------------------------
assert 3 == 2
+ where 3 = len(['17:40:27.656742 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns\n', '17:40:27.781388 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns\n', '17:40:27.783053 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 121000ns\n'])
_______________________________________________________________________________ TestEyeballs.test_06_13_timers ______________________________________________________________________________$
self = <test_06_eyeballs.TestEyeballs object at 0x3fff95754950>, env = <testenv.env.Env object at 0x3fff957987d0>
@pytest.mark.skipif(condition=not Env.curl_has_feature('IPv6'),
reason='curl lacks ipv6 support')
@pytest.mark.skipif(condition=not Env.curl_has_feature('AsynchDNS'),
reason='curl lacks async DNS support')
@pytest.mark.skipif(condition=not Env.curl_is_verbose(), reason="needs curl verbose strings")
def test_06_13_timers(self, env: Env):
curl = CurlClient(env=env)
# ipv6 0100::/64 is supposed to go into the void (rfc6666)
r = curl.http_download(urls=['https://xxx.invalid/'], extra_args=[
'--resolve', 'xxx.invalid:443:0100::1,0100::2,0100::3',
'--connect-timeout', '1',
'--happy-eyeballs-timeout-ms', '123',
'--trace-config', 'timer,happy-eyeballs,tcp'
])
r.check_response(count=1, http_status=None, exitcode=False)
assert r.stats[0]['time_connect'] == 0 # no one connected
# check that we indeed started attempts on all 3 addresses
tcp_attempts = [line for line in r.trace_lines
if re.match(r'.*Trying \[100::[123]]:443', line)]
assert len(tcp_attempts) == 3, f'fond: {"".join(tcp_attempts)}\n{r.dump_logs()}'
# if the 0100::/64 really goes into the void, we should see 2 HAPPY_EYEBALLS
# timeouts being set here
failed_attempts = [line for line in r.trace_lines
if re.match(r'.*checked connect attempts: 0 ongoing', line)]
if len(failed_attempts):
# github CI fails right away with "Network is unreachable", slackers...
assert len(failed_attempts) == 3, f'found: {"".join(failed_attempts)}\n{r.dump_logs()}'
else:
# no immediately failed attempts, as should be
he_timers_set = [line for line in r.trace_lines
if re.match(r'.*\[TIMER] \[HAPPY_EYEBALLS] set for', line)]
> assert len(he_timers_set) == 2, f'found: {"".join(he_timers_set)}\n{r.dump_logs()}'
E AssertionError: found: 17:40:27.656742 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
E 17:40:27.781388 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
E 17:40:27.783053 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 121000ns
E
E >>--stdout ----------------------------------------------
E {"certs":"","conn_id":0,"content_type":null,"errormsg":"Connection timed out after 1003 milliseconds","exitcode":28,"filename_effective":"download_#1.data","17:40:28 [128/1960]
l,"http_code":0,"http_connect":0,"http_version":"0","local_ip":"","local_port":-1,"method":"GET","num_certs":0,"num_connects":0,"num_headers":0,"num_redirects":0,"num_retries":0,"proxy_ssl_v
erify_result":0,"proxy_used":0,"redirect_url":null,"referer":null,"remote_ip":"","remote_port":-1,"response_code":0,"scheme":"https","size_delivered":0,"size_download":0,"size_header":0,"siz
e_request":0,"size_upload":0,"speed_download":0,"speed_upload":0,"ssl_verify_result":0,"time_appconnect":0.000000,"time_connect":0.000000,"time_namelookup":0.000122,"time_posttransfer":1.003
389,"time_pretransfer":1.003388,"time_queue":0.000065,"time_redirect":0.000000,"time_starttransfer":1.003389,"time_total":1.003393,"tls_earlydata":0,"url":"https://xxx.invalid/","url.fragmen
t":null,"url.host":"xxx.invalid","url.options":null,"url.password":null,"url.path":"/","url.port":"443","url.query":null,"url.scheme":"https","url.user":null,"url.zoneid":null,"url_effective
":"https://xxx.invalid/","urle.fragment":null,"urle.host":"xxx.invalid","urle.options":null,"urle.password":null,"urle.path":"/","urle.port":"443","urle.query":null,"urle.scheme":"https","ur
le.user":null,"urle.zoneid":null,"urlnum":0,"xfer_id":0,"curl_version":"libcurl/8.21.0 OpenSSL/3.6.3 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.23.0 libssh2/1.11.1 nghttp2/1.6
9.0 ngtcp2/1.24.0 nghttp3/1.17.0 mit-krb5/1.22.1 OpenLDAP/2.6.13"}
E >>--stderr ----------------------------------------------
E 17:40:27.655969 [0-x] * Added xxx.invalid:443:0100::1,0100::2,0100::3 to DNS cache
E 17:40:27.656047 [0-x] * [TIMER] [CONNECTTIMEOUT] set for 999999ns
E 17:40:27.656123 [0-0] * Hostname xxx.invalid was found in DNS cache
E 17:40:27.656168 [0-0] * Host xxx.invalid:443 was resolved.
E 17:40:27.656212 [0-0] * IPv6: 100::1, 100::2, 100::3
E 17:40:27.656254 [0-0] * IPv4: (none)
E 17:40:27.656299 [0-0] * [HAPPY-EYEBALLS] init ip ballers for transport 3
E 17:40:27.656342 [0-0] * [HAPPY-EYEBALLS] want to do more
E 17:40:27.656384 [0-0] * [HAPPY-EYEBALLS] check for next AAAA address: found
E 17:40:27.656427 [0-0] * [HAPPY-EYEBALLS] starting first attempt for ipv6 -> 0
E 17:40:27.656476 [0-0] * Trying [100::1]:443...
E 17:40:27.656525 [0-0] * [TCP] cf_socket_open() -> 0, fd=4
E 17:40:27.656613 [0-0] * [TCP] local address 2605:bc80:3010:b00:0:deb:166:201 port 49940...
E 17:40:27.656657 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
E 17:40:27.656700 [0-0] * [HAPPY-EYEBALLS] next HAPPY_EYEBALLS timeout in 123ms
E 17:40:27.656742 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
E 17:40:27.656789 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
E 17:40:27.656831 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks
E 17:40:27.656874 [0-0] * [TIMER] [HAPPY_EYEBALLS] gives multi timeout in 123ms
E 17:40:27.780577 [0-0] * [TCP] not connected yet on fd=4
E 17:40:27.780643 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
E 17:40:27.780705 [0-0] * [HAPPY-EYEBALLS] happy eyeballs timeout expired, start next attempt
E 17:40:27.780765 [0-0] * [HAPPY-EYEBALLS] want to do more
E 17:40:27.780826 [0-0] * [HAPPY-EYEBALLS] check for next AAAA address: found
E 17:40:27.780890 [0-0] * [HAPPY-EYEBALLS] starting next attempt for ipv6 -> 0
E 17:40:27.780952 [0-0] * [TCP] not connected yet on fd=4
E 17:40:27.781023 [0-0] * Trying [100::2]:443...
E 17:40:27.781093 [0-0] * [TCP] cf_socket_open() -> 0, fd=5
E 17:40:27.781201 [0-0] * [TCP] local address 2605:bc80:3010:b00:0:deb:166:201 port 60154...
E 17:40:27.781264 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 2 ongoing, 0 inconclusive
E 17:40:27.781327 [0-0] * [HAPPY-EYEBALLS] next HAPPY_EYEBALLS timeout in 123ms
E 17:40:27.781388 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns
E 17:40:27.781455 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
E 17:40:27.781517 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=5
E 17:40:27.781578 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 2 socks
E 17:40:27.781640 [0-0] * [TIMER] [HAPPY_EYEBALLS] gives multi timeout in 123ms
E 17:40:27.782594 [0-0] * [TCP] not connected yet on fd=4
E 17:40:27.782660 [0-0] * [TCP] poll/select error on fd=5
E 17:40:27.782807 [0-0] * connect to 100::2 port 443 from 2605:bc80:3010:b00:0:deb:166:201 port 60154 failed: Network is unreachable
E 17:40:27.782869 [0-0] * [TCP] destroy
E 17:40:27.782930 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
E 17:40:27.782992 [0-0] * [HAPPY-EYEBALLS] next HAPPY_EYEBALLS timeout in 121ms
E 17:40:27.783053 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 121000ns
E 17:40:27.783119 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
E 17:40:27.783181 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks
E 17:40:27.783243 [0-0] * [TIMER] [HAPPY_EYEBALLS] gives multi timeout in 121ms
E 17:40:27.904958 [0-0] * [TCP] not connected yet on fd=4
E 17:40:27.905023 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
E 17:40:27.905085 [0-0] * [HAPPY-EYEBALLS] happy eyeballs timeout expired, start next attempt
E 17:40:27.905146 [0-0] * [HAPPY-EYEBALLS] want to do more
E 17:40:27.905208 [0-0] * [HAPPY-EYEBALLS] check for next AAAA address: found
E 17:40:27.905272 [0-0] * [HAPPY-EYEBALLS] starting next attempt for ipv6 -> 0
E 17:40:27.905335 [0-0] * [TCP] not connected yet on fd=4
E 17:40:27.905405 [0-0] * Trying [100::3]:443...
E 17:40:27.905473 [0-0] * [TCP] cf_socket_open() -> 0, fd=5
E 17:40:27.905575 [0-0] * [TCP] local address 2605:bc80:3010:b00:0:deb:166:201 port 49144...
E 17:40:27.905638 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 2 ongoing, 0 inconclusive
E 17:40:27.905706 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
E 17:40:27.905773 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=5
E 17:40:27.905836 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 2 socks
E 17:40:27.905899 [0-0] * [TIMER] [CONNECTTIMEOUT] gives multi timeout in 752ms
E 17:40:27.907430 [0-0] * [TCP] not connected yet on fd=4
E 17:40:27.907498 [0-0] * [TCP] poll/select error on fd=5
E 17:40:27.907582 [0-0] * connect to 100::3 port 443 from 2605:bc80:3010:b00:0:deb:166:201 port 49144 failed: Network is unreachable
E 17:40:27.907644 [0-0] * [TCP] destroy
E 17:40:27.907706 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive
E 17:40:27.907773 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=4
E 17:40:27.907835 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks
E 17:40:27.907897 [0-0] * [TIMER] [CONNECTTIMEOUT] gives multi timeout in 750ms
E 17:40:28.659230 [0-0] * Connection timed out after 1003 milliseconds
E 17:40:28.659308 [0-0] * closing connection #0
E <<-------------------------------------------------------
E
E assert 3 == 2
E + where 3 = len(['17:40:27.656742 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns\n', '17:40:27.781388 [0-0] * [TIMER] [HAPPY_EYEBALLS] set for 123000ns\n', '17:40:27.783053
[0-0] * [TIMER] [HAPPY_EYEBALLS] set for 121000ns\n'])
curl 8.21.0 (powerpc64le-unknown-linux-gnu) libcurl/8.21.0 OpenSSL/3.6.3 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.23.0 libssh2/1.11.1 nghttp2/1.69.0 ngtcp2/1.24.0 nghttp3/1.17.0 mit-krb5/1.22.1 OpenLDAP/2.6.13
I did this
Hi, 8.21.0 is currently failing the timers happy eyeballs test on ppc64el (for both ssl backends, openssl and gnutls). I tried to take a look but couldn't come up with an answer so it's time to ask the experts. I have access to a ppc64el porterbox where I can reproduce the problem and can provide further information and testing to assist finding/fixing the problem. The failure logs are below.
And:
I expected the following
No response
curl/libcurl version
curl 8.21.0 (powerpc64le-unknown-linux-gnu) libcurl/8.21.0 OpenSSL/3.6.3 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.23.0 libssh2/1.11.1 nghttp2/1.69.0 ngtcp2/1.24.0 nghttp3/1.17.0 mit-krb5/1.22.1 OpenLDAP/2.6.13
operating system
Debian unstable (sid)