blob: 838f6fb490bd9de710a0e0adc9d149a619d1084a [file] [log] [blame]
Facundo Batistab6a5c9d2007-03-29 18:22:35 +00001import socket
2import threading
3import telnetlib
4import time
5
6from unittest import TestCase
7from test import test_support
8
Trent Nelsone41b0062008-04-08 23:47:30 +00009HOST = test_support.HOST
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000010
Trent Nelsone41b0062008-04-08 23:47:30 +000011def server(evt, serv):
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000012 serv.listen(5)
Neal Norwitz37184292008-01-26 21:21:59 +000013 evt.set()
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000014 try:
15 conn, addr = serv.accept()
16 except socket.timeout:
17 pass
18 finally:
19 serv.close()
20 evt.set()
21
22class GeneralTests(TestCase):
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000023
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000024 def setUp(self):
25 self.evt = threading.Event()
Trent Nelsone41b0062008-04-08 23:47:30 +000026 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
27 self.sock.settimeout(3)
28 self.port = test_support.bind_port(self.sock)
29 threading.Thread(target=server, args=(self.evt,self.sock)).start()
Neal Norwitz37184292008-01-26 21:21:59 +000030 self.evt.wait()
31 self.evt.clear()
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000032 time.sleep(.1)
33
34 def tearDown(self):
35 self.evt.wait()
36
37 def testBasic(self):
38 # connects
Trent Nelsone41b0062008-04-08 23:47:30 +000039 telnet = telnetlib.Telnet(HOST, self.port)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000040 telnet.sock.close()
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000041
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000042 def testTimeoutDefault(self):
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000043 self.assertTrue(socket.getdefaulttimeout() is None)
44 socket.setdefaulttimeout(30)
45 try:
46 telnet = telnetlib.Telnet("localhost", self.port)
47 finally:
48 socket.setdefaulttimeout(None)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000049 self.assertEqual(telnet.sock.gettimeout(), 30)
50 telnet.sock.close()
51
52 def testTimeoutNone(self):
53 # None, having other default
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000054 self.assertTrue(socket.getdefaulttimeout() is None)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000055 socket.setdefaulttimeout(30)
56 try:
Trent Nelsone41b0062008-04-08 23:47:30 +000057 telnet = telnetlib.Telnet(HOST, self.port, timeout=None)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000058 finally:
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000059 socket.setdefaulttimeout(None)
60 self.assertTrue(telnet.sock.gettimeout() is None)
61 telnet.sock.close()
62
63 def testTimeoutValue(self):
64 telnet = telnetlib.Telnet("localhost", self.port, timeout=30)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000065 self.assertEqual(telnet.sock.gettimeout(), 30)
66 telnet.sock.close()
67
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000068 def testTimeoutOpen(self):
69 telnet = telnetlib.Telnet()
70 telnet.open("localhost", self.port, timeout=30)
71 self.assertEqual(telnet.sock.gettimeout(), 30)
72 telnet.sock.close()
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000073
74
75def test_main(verbose=None):
76 test_support.run_unittest(GeneralTests)
77
78if __name__ == '__main__':
79 test_main()