blob: 3a53ad9079c0ff9992e662147c6f51ba5a088af6 [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
9
Christian Heimesaf98da12008-01-27 15:18:18 +000010def server(evt):
Guido van Rossumd8faa362007-04-27 19:54:29 +000011 serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
12 serv.settimeout(3)
13 serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
14 serv.bind(("", 9091))
15 serv.listen(5)
Christian Heimesaf98da12008-01-27 15:18:18 +000016 evt.set()
Guido van Rossumd8faa362007-04-27 19:54:29 +000017 try:
18 conn, addr = serv.accept()
19 except socket.timeout:
20 pass
21 finally:
22 serv.close()
23 evt.set()
24
25class GeneralTests(TestCase):
26
27 def setUp(self):
28 self.evt = threading.Event()
Christian Heimesaf98da12008-01-27 15:18:18 +000029 threading.Thread(target=server, args=(self.evt,)).start()
30 self.evt.wait()
31 self.evt.clear()
32 time.sleep(.1)
Guido van Rossumd8faa362007-04-27 19:54:29 +000033
34 def tearDown(self):
35 self.evt.wait()
36
37 def testBasic(self):
38 # connects
39 telnet = telnetlib.Telnet("localhost", 9091)
40 telnet.sock.close()
41
42 def testTimeoutDefault(self):
43 # default
44 telnet = telnetlib.Telnet("localhost", 9091)
45 self.assertTrue(telnet.sock.gettimeout() is None)
46 telnet.sock.close()
47
48 def testTimeoutValue(self):
49 # a value
50 telnet = telnetlib.Telnet("localhost", 9091, timeout=30)
51 self.assertEqual(telnet.sock.gettimeout(), 30)
52 telnet.sock.close()
53
54 def testTimeoutDifferentOrder(self):
55 telnet = telnetlib.Telnet(timeout=30)
56 telnet.open("localhost", 9091)
57 self.assertEqual(telnet.sock.gettimeout(), 30)
58 telnet.sock.close()
59
60 def testTimeoutNone(self):
61 # None, having other default
62 previous = socket.getdefaulttimeout()
63 socket.setdefaulttimeout(30)
64 try:
65 telnet = telnetlib.Telnet("localhost", 9091, timeout=None)
66 finally:
67 socket.setdefaulttimeout(previous)
68 self.assertEqual(telnet.sock.gettimeout(), 30)
69 telnet.sock.close()
70
71
72
73def test_main(verbose=None):
74 test_support.run_unittest(GeneralTests)
75
76if __name__ == '__main__':
77 test_main()