Merge "Big Switch: Check source_address attribute exists"

This commit is contained in:
Jenkins
2014-05-09 19:02:05 +00:00
committed by Gerrit Code Review
2 changed files with 24 additions and 2 deletions

View File

@@ -566,8 +566,13 @@ class HTTPSConnectionWithValidation(httplib.HTTPSConnection):
combined_cert = None combined_cert = None
def connect(self): def connect(self):
sock = socket.create_connection((self.host, self.port), try:
self.timeout, self.source_address) sock = socket.create_connection((self.host, self.port),
self.timeout, self.source_address)
except AttributeError:
# python 2.6 doesn't have the source_address attribute
sock = socket.create_connection((self.host, self.port),
self.timeout)
if self._tunnel_host: if self._tunnel_host:
self.sock = sock self.sock = sock
self._tunnel() self._tunnel()

View File

@@ -402,3 +402,20 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
self.assertEqual(con._tunnel_host, 'myproxy.local') self.assertEqual(con._tunnel_host, 'myproxy.local')
self.assertEqual(con._tunnel_port, 3128) self.assertEqual(con._tunnel_port, 3128)
self.assertEqual(con.sock, self.wrap_mock()) self.assertEqual(con.sock, self.wrap_mock())
class TestSockets(test_rp.BigSwitchProxyPluginV2TestCase):
def setUp(self):
super(TestSockets, self).setUp()
# http patch must not be running or it will mangle the servermanager
# import where the https connection classes are defined
self.httpPatch.stop()
self.sm = importutils.import_module(SERVERMANAGER)
def test_socket_create_attempt(self):
# exercise the socket creation to make sure it works on both python
# versions
con = self.sm.HTTPSConnectionWithValidation('127.0.0.1', 0, timeout=1)
# if httpcon was created, a connect attempt should raise a socket error
self.assertRaises(socket.error, con.connect)