| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  | import socket | 
					
						
							|  |  |  | import threading | 
					
						
							|  |  |  | import telnetlib | 
					
						
							|  |  |  | import time | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from unittest import TestCase | 
					
						
							|  |  |  | from test import test_support | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  | PORT = 9091 | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def server(evt): | 
					
						
							|  |  |  |     serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 
					
						
							|  |  |  |     serv.settimeout(3) | 
					
						
							|  |  |  |     serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  |     global PORT | 
					
						
							|  |  |  |     PORT = test_support.bind_port(serv, "", PORT) | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |     serv.listen(5) | 
					
						
							| 
									
										
										
										
											2008-01-26 21:21:59 +00:00
										 |  |  |     evt.set() | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |     try: | 
					
						
							|  |  |  |         conn, addr = serv.accept() | 
					
						
							|  |  |  |     except socket.timeout: | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         serv.close() | 
					
						
							|  |  |  |         evt.set() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GeneralTests(TestCase): | 
					
						
							| 
									
										
										
										
											2007-04-25 06:30:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |     def setUp(self): | 
					
						
							|  |  |  |         self.evt = threading.Event() | 
					
						
							|  |  |  |         threading.Thread(target=server, args=(self.evt,)).start() | 
					
						
							| 
									
										
										
										
											2008-01-26 21:21:59 +00:00
										 |  |  |         self.evt.wait() | 
					
						
							|  |  |  |         self.evt.clear() | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |         time.sleep(.1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def tearDown(self): | 
					
						
							|  |  |  |         self.evt.wait() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def testBasic(self): | 
					
						
							|  |  |  |         # connects | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  |         telnet = telnetlib.Telnet("localhost", PORT) | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |         telnet.sock.close() | 
					
						
							| 
									
										
										
										
											2007-04-25 06:30:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |     def testTimeoutDefault(self): | 
					
						
							|  |  |  |         # default | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  |         telnet = telnetlib.Telnet("localhost", PORT) | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |         self.assertTrue(telnet.sock.gettimeout() is None) | 
					
						
							|  |  |  |         telnet.sock.close() | 
					
						
							| 
									
										
										
										
											2007-04-25 06:30:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |     def testTimeoutValue(self): | 
					
						
							|  |  |  |         # a value | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  |         telnet = telnetlib.Telnet("localhost", PORT, timeout=30) | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |         self.assertEqual(telnet.sock.gettimeout(), 30) | 
					
						
							|  |  |  |         telnet.sock.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def testTimeoutDifferentOrder(self): | 
					
						
							|  |  |  |         telnet = telnetlib.Telnet(timeout=30) | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  |         telnet.open("localhost", PORT) | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |         self.assertEqual(telnet.sock.gettimeout(), 30) | 
					
						
							|  |  |  |         telnet.sock.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def testTimeoutNone(self): | 
					
						
							|  |  |  |         # None, having other default | 
					
						
							|  |  |  |         previous = socket.getdefaulttimeout() | 
					
						
							|  |  |  |         socket.setdefaulttimeout(30) | 
					
						
							|  |  |  |         try: | 
					
						
							| 
									
										
										
										
											2008-03-28 04:41:34 +00:00
										 |  |  |             telnet = telnetlib.Telnet("localhost", PORT, timeout=None) | 
					
						
							| 
									
										
										
										
											2007-03-29 18:22:35 +00:00
										 |  |  |         finally: | 
					
						
							|  |  |  |             socket.setdefaulttimeout(previous) | 
					
						
							|  |  |  |         self.assertEqual(telnet.sock.gettimeout(), 30) | 
					
						
							|  |  |  |         telnet.sock.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def test_main(verbose=None): | 
					
						
							|  |  |  |     test_support.run_unittest(GeneralTests) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     test_main() |