diff options
| author | Facundo Batista <facundobatista@gmail.com> | 2007-03-23 18:54:07 (GMT) | 
|---|---|---|
| committer | Facundo Batista <facundobatista@gmail.com> | 2007-03-23 18:54:07 (GMT) | 
| commit | 07c78be0b4723deb62acebab50888cc59b1e4eb2 (patch) | |
| tree | 0d1da08d12eafe4ac485889e1aac891e035c0696 /Lib/test/test_socket.py | |
| parent | f102e24bd34442026f4200a298a8b08d1deb3616 (diff) | |
| download | cpython-07c78be0b4723deb62acebab50888cc59b1e4eb2.zip cpython-07c78be0b4723deb62acebab50888cc59b1e4eb2.tar.gz cpython-07c78be0b4723deb62acebab50888cc59b1e4eb2.tar.bz2  | |
Added a 'create_connect()' function to socket.py, which creates a
connection with an optional timeout, and modified httplib.py to
use this function in HTTPConnection. Applies patch 1676823.
Diffstat (limited to 'Lib/test/test_socket.py')
| -rw-r--r-- | Lib/test/test_socket.py | 85 | 
1 files changed, 83 insertions, 2 deletions
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index c56c3b7..a7ebe04 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -75,7 +75,7 @@ class ThreadableTest:      Note, the server setup function cannot call any blocking      functions that rely on the client thread during setup, -    unless serverExplicityReady() is called just before +    unless serverExplicitReady() is called just before      the blocking call (such as in setting up a client/server      connection and performing the accept() in setUp().      """ @@ -810,6 +810,85 @@ class SmallBufferedFileObjectClassTestCase(FileObjectClassTestCase):      bufsize = 2 # Exercise the buffering code +class NetworkConnectionTest(object): +    """Prove network connection.""" +    def clientSetUp(self): +        self.cli = socket.create_connection((HOST, PORT)) +        self.serv_conn = self.cli +     +class BasicTCPTest2(NetworkConnectionTest, BasicTCPTest): +    """Tests that NetworkConnection does not break existing TCP functionality. +    """ + +class NetworkConnectionAttributesTest(unittest.TestCase): + +    def setUp(self): +        self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +        self.serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) +        global PORT +        PORT = test_support.bind_port(self.serv, HOST, PORT) +        self.serv.listen(1) + +    def tearDown(self): +        if self.serv: +            self.serv.close() +            self.serv = None + +    def testWithoutServer(self): +        self.tearDown() +        self.failUnlessRaises(socket.error, lambda: socket.create_connection((HOST, PORT))) + +    def testTimeoutAttribute(self): +        # default +        sock = socket.create_connection((HOST, PORT)) +        self.assertTrue(sock.gettimeout() is None) +     +        # a value, named +        sock = socket.create_connection((HOST, PORT), timeout=10) +        self.assertEqual(sock.gettimeout(), 10) + +        # a value, just the value +        sock = socket.create_connection((HOST, PORT), 10) +        self.assertEqual(sock.gettimeout(), 10) + +        # None, having other default  +        previous = socket.getdefaulttimeout() +        socket.setdefaulttimeout(10) +        sock = socket.create_connection((HOST, PORT), timeout=None) +        socket.setdefaulttimeout(previous) +        self.assertEqual(sock.gettimeout(), 10) + +    def testFamily(self): +        sock = socket.create_connection((HOST, PORT), timeout=10) +        self.assertEqual(sock.family, 2) + + +def threadedServer(delay): +    serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +    serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) +    global PORT +    PORT = test_support.bind_port(serv, HOST, PORT) +    serv.listen(1) +    conn, addr = serv.accept() +    time.sleep(delay) +    conn.send("done!") +    conn.close() +         +class NetworkConnectionBehaviourTest(unittest.TestCase): +    def testInsideTimeout(self): +        threading.Thread(target=threadedServer, args=(3,)).start() +        time.sleep(.1) +        sock = socket.create_connection((HOST, PORT)) +        data = sock.recv(5) +        self.assertEqual(data, "done!") + +    def testOutsideTimeout(self): +        threading.Thread(target=threadedServer, args=(3,)).start() +        time.sleep(.1) +        sock = socket.create_connection((HOST, PORT), timeout=1) +        self.failUnlessRaises(socket.timeout, lambda: sock.recv(5)) + +  class Urllib2FileobjectTest(unittest.TestCase):      # urllib2.HTTPHandler has "borrowed" socket._fileobject, and requires that @@ -977,7 +1056,7 @@ class BufferIOTest(SocketConnectedTest):  def test_main():      tests = [GeneralModuleTests, BasicTCPTest, TCPCloserTest, TCPTimeoutTest, -             TestExceptions, BufferIOTest] +             TestExceptions, BufferIOTest, BasicTCPTest2]      if sys.platform != 'mac':          tests.extend([ BasicUDPTest, UDPTimeoutTest ]) @@ -988,6 +1067,8 @@ def test_main():          LineBufferedFileObjectClassTestCase,          SmallBufferedFileObjectClassTestCase,          Urllib2FileobjectTest, +        NetworkConnectionAttributesTest, +        NetworkConnectionBehaviourTest,      ])      if hasattr(socket, "socketpair"):          tests.append(BasicSocketPairTest)  | 
