Chromium Code Reviews| Index: bin/au_test_harness/cros_test_proxy.py |
| diff --git a/lib/cros_test_proxy.py b/bin/au_test_harness/cros_test_proxy.py |
| old mode 100755 |
| new mode 100644 |
| similarity index 94% |
| rename from lib/cros_test_proxy.py |
| rename to bin/au_test_harness/cros_test_proxy.py |
| index 464dcb539b87d835af9e15db578999bced35e9a4..0b3728638bf0c4a835562c341482100035400d73 |
| --- a/lib/cros_test_proxy.py |
| +++ b/bin/au_test_harness/cros_test_proxy.py |
| @@ -2,6 +2,9 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +"""Module containing various classes pertaining to inserting a proxy in a test. |
| +""" |
| + |
| import os |
| import select |
| import socket |
| @@ -10,45 +13,45 @@ import threading |
| class Filter(object): |
| """Base class for data filters. |
| - |
| + |
|
dgarrett
2011/03/03 02:17:21
Thanks for cleaning up all this whitespace noise.
|
| Pass subclass of this to CrosTestProxy which will perform whatever |
| connection manipulation you prefer. |
| """ |
| - |
| + |
| def setup(self): |
| """This setup method is called once per connection.""" |
| pass |
| - |
| + |
| def InBound(self, data): |
| """This method is called once per packet of incoming data. |
| - |
| + |
| The value returned is what is sent through the proxy. If |
| None is returned, the connection will be closed. |
| """ |
| - return data |
| + return data |
| def OutBound(self, data): |
| """This method is called once per packet of outgoing data. |
| - |
| + |
| The value returned is what is sent through the proxy. If |
| None is returned, the connection will be closed. |
| """ |
| - return data |
| + return data |
| class CrosTestProxy(SocketServer.ThreadingMixIn, SocketServer.TCPServer): |
| """A transparent proxy for simulating network errors""" |
| - |
| + |
| class _Handler(SocketServer.BaseRequestHandler): |
| """Proxy connection handler that passes data though a filter""" |
| def setup(self): |
| """Setup is called once for each connection proxied.""" |
| self.server.filter.setup() |
| - |
| + |
| def handle(self): |
| """Handles each incoming connection. |
| - |
| + |
| Opens a new connection to the port we are proxing to, then |
| passes each packet along in both directions after passing |
| them through the filter object passed in. |
| @@ -60,7 +63,7 @@ class CrosTestProxy(SocketServer.ThreadingMixIn, SocketServer.TCPServer): |
| while True: |
| rlist, wlist, xlist = select.select([s_in, s_out], [], []) |
| - |
| + |
| if s_in in rlist: |
| data = s_in.recv(1024) |
| data = self.server.filter.InBound(data) |
| @@ -83,13 +86,13 @@ class CrosTestProxy(SocketServer.ThreadingMixIn, SocketServer.TCPServer): |
| s_in.close() |
| s_out.close() |
| - |
| + |
| def __init__(self, |
| filter, |
| port_in=8081, |
| - address_out='127.0.0.1', port_out=8080): |
| + address_out='127.0.0.1', port_out=8080): |
| """Configures the proxy object. |
| - |
| + |
| Args: |
| filter: An instance of a subclass of Filter. |
| port_in: Port on which to listen for incoming connections. |
| @@ -100,7 +103,7 @@ class CrosTestProxy(SocketServer.ThreadingMixIn, SocketServer.TCPServer): |
| self.address_out = address_out |
| self.port_out = port_out |
| self.filter = filter |
| - |
| + |
| try: |
| SocketServer.TCPServer.__init__(self, |
| ('', port_in), |
| @@ -114,5 +117,5 @@ class CrosTestProxy(SocketServer.ThreadingMixIn, SocketServer.TCPServer): |
| server_thread = threading.Thread(target=self.serve_forever) |
| server_thread.setDaemon(True) |
| server_thread.start() |
| - |
| + |
| return server_thread |