blob: c48de04610ce4c5bc15b2a1565832a0c419bcbdc [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
Guido van Rossumefdca3e2007-08-10 21:28:41 +000010def server(evt, ready):
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)
Guido van Rossumefdca3e2007-08-10 21:28:41 +000016 ready.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()
Guido van Rossumefdca3e2007-08-10 21:28:41 +000029 ready = threading.Event()
30 threading.Thread(target=server, args=(self.evt, ready)).start()
31 ready.wait()
Guido van Rossumd8faa362007-04-27 19:54:29 +000032
33 def tearDown(self):
34 self.evt.wait()
35
36 def testBasic(self):
37 # connects
38 telnet = telnetlib.Telnet("localhost", 9091)
39 telnet.sock.close()
40
41 def testTimeoutDefault(self):
42 # default
43 telnet = telnetlib.Telnet("localhost", 9091)
44 self.assertTrue(telnet.sock.gettimeout() is None)
45 telnet.sock.close()
46
47 def testTimeoutValue(self):
48 # a value
49 telnet = telnetlib.Telnet("localhost", 9091, timeout=30)
50 self.assertEqual(telnet.sock.gettimeout(), 30)
51 telnet.sock.close()
52
53 def testTimeoutDifferentOrder(self):
54 telnet = telnetlib.Telnet(timeout=30)
55 telnet.open("localhost", 9091)
56 self.assertEqual(telnet.sock.gettimeout(), 30)
57 telnet.sock.close()
58
59 def testTimeoutNone(self):
60 # None, having other default
61 previous = socket.getdefaulttimeout()
62 socket.setdefaulttimeout(30)
63 try:
64 telnet = telnetlib.Telnet("localhost", 9091, timeout=None)
65 finally:
66 socket.setdefaulttimeout(previous)
67 self.assertEqual(telnet.sock.gettimeout(), 30)
68 telnet.sock.close()
69
70
71
72def test_main(verbose=None):
73 test_support.run_unittest(GeneralTests)
74
75if __name__ == '__main__':
76 test_main()