Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • BIND BIND
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 532
    • Issues 532
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 101
    • Merge requests 101
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • ISC Open Source Projects
  • BINDBIND
  • Issues
  • #3357

Closed
Open
Created May 16, 2022 by Michal Nowak@mnowakOwner

test_send_timeout fails on FreeBSD

test_send_timeout of the timeouts system test fails on FreeBSD 13.0/13.1 with DNS python 2.2.1 on v9_16 (and only there):

S:timeouts:2022-05-16T17:21:18+0000
T:timeouts:1:A
A:timeouts:System test timeouts
I:timeouts:PORTRANGE:5300 - 5399
I:timeouts:starting servers
D:timeouts:============================= test session starts ==============================
D:timeouts:platform freebsd13 -- Python 3.8.13, pytest-4.6.11, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.8
D:timeouts:cachedir: .pytest_cache
D:timeouts:hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/root/bind9/bin/tests/system/timeouts/.hypothesis/examples')
D:timeouts:rootdir: /root/bind9/bin/tests/system/timeouts
D:timeouts:plugins: hypothesis-6.28.0
D:timeouts:collecting ... collected 8 items
D:timeouts:
D:timeouts:tests-tcp.py::test_initial_timeout PASSED                                [ 12%]
D:timeouts:tests-tcp.py::test_idle_timeout PASSED                                   [ 25%]
D:timeouts:tests-tcp.py::test_keepalive_timeout PASSED                              [ 37%]
D:timeouts:tests-tcp.py::test_pipelining_timeout PASSED                             [ 50%]
D:timeouts:tests-tcp.py::test_long_axfr PASSED                                      [ 62%]
D:timeouts:tests-tcp.py::test_send_timeout FAILED                                   [ 75%]
D:timeouts:tests-tcp.py::test_max_transfer_idle_out SKIPPED                         [ 87%]
D:timeouts:tests-tcp.py::test_max_transfer_time_out SKIPPED                         [100%]
D:timeouts:
D:timeouts:=================================== FAILURES ===================================
D:timeouts:______________________________ test_send_timeout _______________________________
D:timeouts:
D:timeouts:named_port = 5300
D:timeouts:
D:timeouts:    def test_send_timeout(named_port):
D:timeouts:        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
D:timeouts:            sock.connect(("10.53.0.1", named_port))
D:timeouts:    
D:timeouts:            # Send and receive single large RDATA over TCP
D:timeouts:            msg = create_msg("large.example.", "TXT")
D:timeouts:            (sbytes, stime) = dns.query.send_tcp(sock, msg, timeout())
D:timeouts:            (response, rtime) = dns.query.receive_tcp(sock, timeout())
D:timeouts:    
D:timeouts:            # Send and receive 28 large (~32k) DNS queries that should
D:timeouts:            # fill the default maximum 208k TCP send buffer
D:timeouts:            for n in range(28):
D:timeouts:                (sbytes, stime) = dns.query.send_tcp(sock, msg, timeout())
D:timeouts:    
D:timeouts:            # configure idle interval is 5 seconds, sleep 6 to make sure we are
D:timeouts:            # above the interval
D:timeouts:            time.sleep(6)
D:timeouts:    
D:timeouts:            with pytest.raises(EOFError):
D:timeouts:                try:
D:timeouts:                    (sbytes, stime) = dns.query.send_tcp(sock, msg, timeout())
D:timeouts:                    (response, rtime) = dns.query.receive_tcp(sock, timeout())
D:timeouts:                except ConnectionError as e:
D:timeouts:>                   raise EOFError from e
D:timeouts:E                   Failed: DID NOT RAISE <class 'EOFError'>
D:timeouts:
D:timeouts:tests-tcp.py:206: Failed
D:timeouts:================ 1 failed, 5 passed, 2 skipped in 69.28 seconds ================
I:timeouts:stopping servers
R:timeouts:FAIL
E:timeouts:2022-05-16T17:22:32+0000

This is not yet visible in the CI because FreeBSD images use DNS python 1.16.0 and timeouts system test requires DNS python v2.

The problem will be visible when FreeBSD images get rebuild (e.g. by FreeBSD 13.0 -> 13.1 upgrade).

Git bisect points to 7a386256, a backport of 6ddac2d5, which is already linked to isc-projects/bind9#3214 and #3283, but I don't see core files nor uv_tcp_close_reset-liked issues in ns1/named.run.

Assignee
Assign to
Time tracking