Unit tests for ServerConnectionPool

This commit is contained in:
Aldo Cortesi 2013-01-29 11:35:57 +13:00
parent 2aa175a6ca
commit 782bbee8c0
2 changed files with 30 additions and 1 deletions

View File

@ -107,6 +107,7 @@ class ServerConnection(tcp.TCPClient):
except IOError: except IOError:
pass pass
class ServerConnectionPool: class ServerConnectionPool:
def __init__(self, config): def __init__(self, config):
self.config = config self.config = config

View File

@ -1,7 +1,7 @@
from libmproxy import proxy, flow from libmproxy import proxy, flow
import tutils import tutils
from libpathod import test from libpathod import test
from netlib import http from netlib import http, tcp
import mock import mock
@ -58,3 +58,31 @@ class TestServerConnection:
sc.connection = mock.Mock() sc.connection = mock.Mock()
sc.connection.close = mock.Mock(side_effect=IOError) sc.connection.close = mock.Mock(side_effect=IOError)
sc.terminate() sc.terminate()
def _dummysc(config, host, port):
return mock.MagicMock(config=config, host=host, port=port)
def _errsc(config, host, port):
m = mock.MagicMock(config=config, host=host, port=port)
m.connect = mock.MagicMock(side_effect=tcp.NetLibError())
return m
class TestServerConnectionPool:
@mock.patch("libmproxy.proxy.ServerConnection", _dummysc)
def test_pooling(self):
p = proxy.ServerConnectionPool(proxy.ProxyConfig())
c = p.get_connection("http", "localhost", 80)
c2 = p.get_connection("http", "localhost", 80)
assert c is c2
c3 = p.get_connection("http", "foo", 80)
assert not c is c3
@mock.patch("libmproxy.proxy.ServerConnection", _errsc)
def test_connection_error(self):
p = proxy.ServerConnectionPool(proxy.ProxyConfig())
tutils.raises("502", p.get_connection, "http", "localhost", 80)