fix _find_available_port and its unit test

This commit is contained in:
Noah Levitt 2016-12-07 14:08:34 -08:00
parent eed8b9ec30
commit 9bcec54f4b
3 changed files with 7 additions and 5 deletions

View File

@ -59,7 +59,7 @@ class Chrome:
except psutil.AccessDenied:
return default_port
if any(conn.laddr[1] == default_port for conn in conns):
if not any(conn.laddr[1] == default_port for conn in conns):
return default_port
for p in range(9999,8999,-1):

View File

@ -32,7 +32,7 @@ def find_package_data(package):
setuptools.setup(
name='brozzler',
version='1.1b8.dev137',
version='1.1b8.dev138',
description='Distributed web crawling with browsers',
url='https://github.com/internetarchive/brozzler',
author='Noah Levitt',

View File

@ -57,6 +57,7 @@ def test_robots(httpd):
assert not brozzler.is_permitted_by_robots(site, url)
def test_find_available_port():
x = brozzler.chrome.Chrome(None, None)
try:
psutil.net_connections(kind='tcp')
except psutil.AccessDenied:
@ -64,10 +65,11 @@ def test_find_available_port():
'skipping _find_available_port() test because '
'psutil.net_connections(kind="tcp") raised AccessDenied')
return
assert brozzler.chrome.Chrome._find_available_port(None, 9800) == 9800
assert x._find_available_port(9800) == 9800
sock = socket.socket()
sock.bind(('localhost', 9800))
assert brozzler.chrome.Chrome._find_available_port(None, 9800) == 9999
sock.listen(0)
assert x._find_available_port(9800) == 9999
sock.close()
assert brozzler.chrome.Chrome._find_available_port(None, 9800) == 9800
assert x._find_available_port(9800) == 9800