Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions mobly/controllers/android_device_lib/snippet_client_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,9 +446,21 @@ def create_socket_connection(self):
self.log.debug(
'Failed to connect to localhost, trying 127.0.0.1: %s', str(err)
)
self._conn = socket.create_connection(
('127.0.0.1', self.host_port), _SOCKET_CONNECTION_TIMEOUT
)
try:
self._conn = socket.create_connection(
('127.0.0.1', self.host_port), _SOCKET_CONNECTION_TIMEOUT
)
except ConnectionRefusedError as err2:
_, stdout, _ = utils.run_command(
f'netstat tulpn | grep ":{self.host_port}"', shell=True
)
if not stdout:
raise errors.Error(
self._device,
'The Adb forward command execution does not take effect. Please'
' check if there are other processes occupying adb forward on the'
' host.',
) from err2

self._conn.settimeout(_SOCKET_READ_TIMEOUT)
self._client = self._conn.makefile(mode='brw')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1458,6 +1458,29 @@ def _mock_create_conn_side_effect(address, *args, **kwargs):
snippet_client_v2._SOCKET_READ_TIMEOUT
)

@mock.patch(
'mobly.controllers.android_device_lib.snippet_client_v2.'
'adb.list_occupied_adb_ports',
return_value=[],
)
@mock.patch(
'mobly.controllers.android_device_lib.snippet_client_v2.'
'utils.run_command'
)
@mock.patch('socket.create_connection')
def test_make_connection_when_host_port_is_not_in_listening_state_(
self, mock_socket_create_conn, mock_run_cmd, _
):
"""Tests IOError occurred trying to create a socket connection."""
mock_socket_create_conn.side_effect = ConnectionRefusedError(
f'[Errno 111] Connection refused.'
)
mock_run_cmd.return_value = (1, b'', b'')
with self.assertRaises(errors.Error):
self._make_client()
self.client.device_port = 123
self.client.make_connection()

@mock.patch(
'mobly.controllers.android_device_lib.snippet_client_v2.'
'adb.list_occupied_adb_ports',
Expand Down