Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Unified Diff: tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket.py

Issue 980043003: Telemetry: Explicitly disconnect InspectorBackend. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@telemetry_add_decorator
Patch Set: Rebase. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket.py b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket.py
index 7ba1dfe48928f3e583bc3189af8422299789c267..717974c96fcc9db159492cc3a4f977674fd31a51 100644
--- a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket.py
+++ b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket.py
@@ -8,8 +8,13 @@ import logging
import socket
import time
+from telemetry.core import exceptions
from telemetry.core.backends.chrome_inspector import websocket
+class WebSocketDisconnected(exceptions.Error):
+ """An attempt was made to use a web socket after it had been disconnected."""
+ pass
+
class InspectorWebsocket(object):
@@ -71,9 +76,12 @@ class InspectorWebsocket(object):
"""Sends a request without waiting for a response.
Raises:
- websocket.WebSocketException
- socket.error
+ websocket.WebSocketException: Error from websocket library.
+ socket.error: Error from websocket library.
+ exceptions.WebSocketDisconnected: The socket was disconnected.
"""
+ if not self._socket:
+ raise WebSocketDisconnected()
req['id'] = self._next_request_id
self._next_request_id += 1
data = json.dumps(req)
@@ -85,12 +93,13 @@ class InspectorWebsocket(object):
"""Sends a request and waits for a response.
Raises:
- websocket.WebSocketException
- socket.error
+ websocket.WebSocketException: Error from websocket library.
+ socket.error: Error from websocket library.
+ exceptions.WebSocketDisconnected: The socket was disconnected.
"""
self.SendAndIgnoreResponse(req)
- while self._socket:
+ while True:
res = self._Receive(timeout)
if 'id' in res and res['id'] == req['id']:
return res
@@ -99,8 +108,9 @@ class InspectorWebsocket(object):
"""Waits for responses from the websocket, dispatching them as necessary.
Raises:
- websocket.WebSocketException
- socket.error
+ websocket.WebSocketException: Error from websocket library.
+ socket.error: Error from websocket library.
+ exceptions.WebSocketDisconnected: The socket was disconnected.
"""
self._Receive(timeout)
@@ -110,9 +120,10 @@ class InspectorWebsocket(object):
self._cur_socket_timeout = timeout
def _Receive(self, timeout=10):
- self._SetTimeout(timeout)
if not self._socket:
- return None
+ raise WebSocketDisconnected()
+
+ self._SetTimeout(timeout)
data = self._socket.recv()
result = json.loads(data)
if logging.getLogger().isEnabledFor(logging.DEBUG):
« no previous file with comments | « tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698