blob: e4ee1b5da762f571ebf96cb2713047aad3ca8b18 [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 Heimes5e696852008-04-09 08:37:03 +00009HOST = test_support.HOST
Guido van Rossumd8faa362007-04-27 19:54:29 +000010
Christian Heimes5e696852008-04-09 08:37:03 +000011def server(evt, serv):
Guido van Rossumd8faa362007-04-27 19:54:29 +000012 serv.listen(5)
Christian Heimesaf98da12008-01-27 15:18:18 +000013 evt.set()
Guido van Rossumd8faa362007-04-27 19:54:29 +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):
23
24 def setUp(self):
25 self.evt = threading.Event()
Christian Heimes5e696852008-04-09 08:37:03 +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()
Christian Heimesaf98da12008-01-27 15:18:18 +000030 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
Christian Heimes5e696852008-04-09 08:37:03 +000039 telnet = telnetlib.Telnet(HOST, self.port)
Guido van Rossumd8faa362007-04-27 19:54:29 +000040 telnet.sock.close()
41
42 def testTimeoutDefault(self):
43 # default
Christian Heimes5e696852008-04-09 08:37:03 +000044 telnet = telnetlib.Telnet(HOST, self.port)
Guido van Rossumd8faa362007-04-27 19:54:29 +000045 self.assertTrue(telnet.sock.gettimeout() is None)
46 telnet.sock.close()
47
48 def testTimeoutValue(self):
49 # a value
Christian Heimes5e696852008-04-09 08:37:03 +000050 telnet = telnetlib.Telnet(HOST, self.port, timeout=30)
Guido van Rossumd8faa362007-04-27 19:54:29 +000051 self.assertEqual(telnet.sock.gettimeout(), 30)
52 telnet.sock.close()
53
54 def testTimeoutDifferentOrder(self):
55 telnet = telnetlib.Telnet(timeout=30)
Christian Heimes5e696852008-04-09 08:37:03 +000056 telnet.open(HOST, self.port)
Guido van Rossumd8faa362007-04-27 19:54:29 +000057 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:
Christian Heimes5e696852008-04-09 08:37:03 +000065 telnet = telnetlib.Telnet(HOST, self.port, timeout=None)
Guido van Rossumd8faa362007-04-27 19:54:29 +000066 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()