blob: 8eee6667af54112124f3e3d7141d83212ddb836e [file] [log] [blame]
Guido van Rossumd8faa362007-04-27 19:54:29 +00001import socket
2import threading
3import telnetlib
4import time
5
6from unittest import TestCase
7from test import test_support
8
Christian Heimesbbe741d2008-03-28 10:53:29 +00009PORT = 9091
Guido van Rossumd8faa362007-04-27 19:54:29 +000010
Christian Heimesaf98da12008-01-27 15:18:18 +000011def server(evt):
Guido van Rossumd8faa362007-04-27 19:54:29 +000012 serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
13 serv.settimeout(3)
14 serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Christian Heimesbbe741d2008-03-28 10:53:29 +000015 global PORT
16 PORT = test_support.bind_port(serv, "", PORT)
Guido van Rossumd8faa362007-04-27 19:54:29 +000017 serv.listen(5)
Christian Heimesaf98da12008-01-27 15:18:18 +000018 evt.set()
Guido van Rossumd8faa362007-04-27 19:54:29 +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):
28
29 def setUp(self):
30 self.evt = threading.Event()
Christian Heimesaf98da12008-01-27 15:18:18 +000031 threading.Thread(target=server, args=(self.evt,)).start()
32 self.evt.wait()
33 self.evt.clear()
34 time.sleep(.1)
Guido van Rossumd8faa362007-04-27 19:54:29 +000035
36 def tearDown(self):
37 self.evt.wait()
38
39 def testBasic(self):
40 # connects
Christian Heimesbbe741d2008-03-28 10:53:29 +000041 telnet = telnetlib.Telnet("localhost", PORT)
Guido van Rossumd8faa362007-04-27 19:54:29 +000042 telnet.sock.close()
43
44 def testTimeoutDefault(self):
45 # default
Christian Heimesbbe741d2008-03-28 10:53:29 +000046 telnet = telnetlib.Telnet("localhost", PORT)
Guido van Rossumd8faa362007-04-27 19:54:29 +000047 self.assertTrue(telnet.sock.gettimeout() is None)
48 telnet.sock.close()
49
50 def testTimeoutValue(self):
51 # a value
Christian Heimesbbe741d2008-03-28 10:53:29 +000052 telnet = telnetlib.Telnet("localhost", PORT, timeout=30)
Guido van Rossumd8faa362007-04-27 19:54:29 +000053 self.assertEqual(telnet.sock.gettimeout(), 30)
54 telnet.sock.close()
55
56 def testTimeoutDifferentOrder(self):
57 telnet = telnetlib.Telnet(timeout=30)
Christian Heimesbbe741d2008-03-28 10:53:29 +000058 telnet.open("localhost", PORT)
Guido van Rossumd8faa362007-04-27 19:54:29 +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:
Christian Heimesbbe741d2008-03-28 10:53:29 +000067 telnet = telnetlib.Telnet("localhost", PORT, timeout=None)
Guido van Rossumd8faa362007-04-27 19:54:29 +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()