Skip to content

Commit

Permalink
patch 9.0.1165: tests using IPv6 sometimes fail
Browse files Browse the repository at this point in the history
Problem:    Tests using IPv6 sometimes fail.
Solution:   Use getaddrinfo() and use try/catch. (James McCoy,
            closes #11783)
  • Loading branch information
jamessan authored and brammool committed Jan 9, 2023
1 parent 01c5f2a commit 765d82a
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 26 deletions.
7 changes: 6 additions & 1 deletion src/testdir/test_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,12 @@ def main(host, port, server_class=ThreadedTCPServer):
print("Wait for it...")
time.sleep(0.5)

server = server_class((host, port), ThreadedTCPRequestHandler)
addrs = socket.getaddrinfo(host, port, 0, 0, socket.IPPROTO_TCP)
# Each addr is a (family, type, proto, canonname, sockaddr) tuple
sockaddr = addrs[0][4]
server_class.address_family = addrs[0][0]

server = server_class(sockaddr[0:2], ThreadedTCPRequestHandler)
ip, port = server.server_address[0:2]

# Start a thread with the server. That thread will then start a new thread
Expand Down
7 changes: 6 additions & 1 deletion src/testdir/test_channel_lsp.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,12 @@ def main(host, port, server_class=ThreadedTCPServer):
writePortInFile(port)
time.sleep(0.5)

server = server_class((host, port), ThreadedTCPRequestHandler)
addrs = socket.getaddrinfo(host, port, 0, 0, socket.IPPROTO_TCP)
# Each addr is a (family, type, proto, canonname, sockaddr) tuple
sockaddr = addrs[0][4]
server_class.address_family = addrs[0][0]

server = server_class(sockaddr[0:2], ThreadedTCPRequestHandler)
ip, port = server.server_address[0:2]

# Start a thread with the server. That thread will then start a new thread
Expand Down
11 changes: 8 additions & 3 deletions src/testdir/test_netbeans.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,13 @@ def writePortInFile(port):
if __name__ == "__main__":
HOST, PORT = "localhost", 0

server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
addrs = socket.getaddrinfo(HOST, PORT, 0, 0, socket.IPPROTO_TCP)
# Each addr is a (family, type, proto, canonname, sockaddr) tuple
sockaddr = addrs[0][4]
ThreadedTCPServer.address_family = addrs[0][0]

server = ThreadedTCPServer(sockaddr[0:2], ThreadedTCPRequestHandler)
ip, port = server.server_address[0:2]

# Start a thread with the server. That thread will then start a new thread
# for each connection.
Expand All @@ -199,7 +204,7 @@ def writePortInFile(port):
# Main thread terminates, but the server continues running
# until server.shutdown() is called.
try:
while server_thread.isAlive():
while server_thread.is_alive():
server_thread.join(1)
except (KeyboardInterrupt, SystemExit):
server.shutdown()
46 changes: 25 additions & 21 deletions src/testdir/test_netbeans.vim
Original file line number Diff line number Diff line change
Expand Up @@ -887,28 +887,32 @@ func Nb_quit_with_conn(port)
return filter(l, 'v:val !~ "^0:geometry="')
endfunc

" Establish the connection with the netbeans server
exe 'nbstart :localhost:' .. g:port .. ':star'
call assert_true(has("netbeans_enabled"))
call WaitFor('len(ReadXnetbeans()) >= 3')
let l = ReadXnetbeans()
call assert_equal(['AUTH star',
\ '0:version=0 "2.5"',
\ '0:startupDone=0'], l[-3:])
try
" Establish the connection with the netbeans server
exe 'nbstart :localhost:' .. g:port .. ':star'
call assert_true(has("netbeans_enabled"))
call WaitFor('len(ReadXnetbeans()) >= 3')
let l = ReadXnetbeans()
call assert_equal(['AUTH star',
\ '0:version=0 "2.5"',
\ '0:startupDone=0'], l[-3:])

" Open the command buffer to communicate with the server
split Xcmdbuf
call WaitFor('len(ReadXnetbeans()) >= 6')
let l = ReadXnetbeans()
call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
\ substitute(l[-3], '".*/', '"', ''))
call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
\ substitute(l[-2], '".*/', '"', ''))
call assert_equal('1:startDocumentListen!16', l[-1])
sleep 1m

quit!
quit!
" Open the command buffer to communicate with the server
split Xcmdbuf
call WaitFor('len(ReadXnetbeans()) >= 6')
let l = ReadXnetbeans()
call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
\ substitute(l[-3], '".*/', '"', ''))
call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
\ substitute(l[-2], '".*/', '"', ''))
call assert_equal('1:startDocumentListen!16', l[-1])
sleep 1m

quit!
quit!
finally
qall!
endtry
END
if RunVim(['let g:port = ' .. a:port], after, '')
call WaitFor('len(ReadXnetbeans()) >= 9')
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1165,
/**/
1164,
/**/
Expand Down

0 comments on commit 765d82a

Please sign in to comment.