blob: 8eee6667af54112124f3e3d7141d83212ddb836e [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
Neal Norwitz023cd002008-03-28 04:41:34 +00009PORT = 9091
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000010
11def server(evt):
12 serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
13 serv.settimeout(3)
14 serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Neal Norwitz023cd002008-03-28 04:41:34 +000015 global PORT
16 PORT = test_support.bind_port(serv, "", PORT)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000017 serv.listen(5)
Neal Norwitz37184292008-01-26 21:21:59 +000018 evt.set()
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000019 try:
20 conn, addr = serv.accept()
21 except socket.timeout:
22 pass
23 finally:
24 serv.close()
25 evt.set()
26
27class GeneralTests(TestCase):
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000028
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000029 def setUp(self):
30 self.evt = threading.Event()
31 threading.Thread(target=server, args=(self.evt,)).start()
Neal Norwitz37184292008-01-26 21:21:59 +000032 self.evt.wait()
33 self.evt.clear()
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000034 time.sleep(.1)
35
36 def tearDown(self):
37 self.evt.wait()
38
39 def testBasic(self):
40 # connects
Neal Norwitz023cd002008-03-28 04:41:34 +000041 telnet = telnetlib.Telnet("localhost", PORT)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000042 telnet.sock.close()
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000043
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000044 def testTimeoutDefault(self):
45 # default
Neal Norwitz023cd002008-03-28 04:41:34 +000046 telnet = telnetlib.Telnet("localhost", PORT)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000047 self.assertTrue(telnet.sock.gettimeout() is None)
48 telnet.sock.close()
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000049
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000050 def testTimeoutValue(self):
51 # a value
Neal Norwitz023cd002008-03-28 04:41:34 +000052 telnet = telnetlib.Telnet("localhost", PORT, timeout=30)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000053 self.assertEqual(telnet.sock.gettimeout(), 30)
54 telnet.sock.close()
55
56 def testTimeoutDifferentOrder(self):
57 telnet = telnetlib.Telnet(timeout=30)
Neal Norwitz023cd002008-03-28 04:41:34 +000058 telnet.open("localhost", PORT)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000059 self.assertEqual(telnet.sock.gettimeout(), 30)
60 telnet.sock.close()
61
62 def testTimeoutNone(self):
63 # None, having other default
64 previous = socket.getdefaulttimeout()
65 socket.setdefaulttimeout(30)
66 try:
Neal Norwitz023cd002008-03-28 04:41:34 +000067 telnet = telnetlib.Telnet("localhost", PORT, timeout=None)
Facundo Batistab6a5c9d2007-03-29 18:22:35 +000068 finally:
69 socket.setdefaulttimeout(previous)
70 self.assertEqual(telnet.sock.gettimeout(), 30)
71 telnet.sock.close()
72
73
74
75def test_main(verbose=None):
76 test_support.run_unittest(GeneralTests)
77
78if __name__ == '__main__':
79 test_main()