def test_choose_tls_port_under_netns(mocker, capsys): mocker.patch('builtins.open') setns_mock = mocker.patch('mount_efs.setns', return_value=(None, None)) mocker.patch('socket.socket', return_value=MagicMock()) options = {'netns': '/proc/1000/ns/net'} mount_efs.choose_tls_port(_get_config(), options) utils.assert_called(setns_mock)
def test_choose_tls_port_never_succeeds(mocker, capsys): bad_sock = MagicMock() bad_sock.bind.side_effect = socket.error() mocker.patch('socket.socket', return_value=bad_sock) with pytest.raises(SystemExit) as ex: mount_efs.choose_tls_port(_get_config()) assert 0 != ex.value.code out, err = capsys.readouterr() assert 'Failed to locate an available port' in err assert DEFAULT_TLS_PORT_RANGE_HIGH - DEFAULT_TLS_PORT_RANGE_LOW == bad_sock.bind.call_count
def test_choose_tls_port_option_specified_unavailable(mocker, capsys): bad_sock = MagicMock() bad_sock.bind.side_effect = socket.error() options = {'tlsport': 1000} mocker.patch('socket.socket', return_value=bad_sock) with pytest.raises(SystemExit) as ex: mount_efs.choose_tls_port(_get_config(), options) assert 0 != ex.value.code out, err = capsys.readouterr() assert 'Specified port [1000] is unavailable' in err assert 1 == bad_sock.bind.call_count
def test_choose_tls_port_option_specified(mocker): mocker.patch('socket.socket', return_value=MagicMock()) options = {'tlsport': 1000} tls_port = mount_efs.choose_tls_port(_get_config(), options) assert 1000 == tls_port
def test_choose_tls_port_first_try(mocker): mocker.patch('socket.socket', return_value=MagicMock()) options = {} tls_port = mount_efs.choose_tls_port(_get_config(), options) assert DEFAULT_TLS_PORT_RANGE_LOW <= tls_port <= DEFAULT_TLS_PORT_RANGE_HIGH
def test_choose_tls_port_second_try(mocker): bad_sock = MagicMock() bad_sock.bind.side_effect = [socket.error, None] mocker.patch('socket.socket', return_value=bad_sock) tls_port = mount_efs.choose_tls_port(_get_config()) assert DEFAULT_TLS_PORT_RANGE_LOW <= tls_port <= DEFAULT_TLS_PORT_RANGE_HIGH assert 2 == bad_sock.bind.call_count