Package cherrypy :: Package test :: Module test_refleaks
[hide private]
[frames] | no frames]

Source Code for Module cherrypy.test.test_refleaks

 1  """Tests for refleaks.""" 
 2   
 3  from cherrypy._cpcompat import HTTPConnection, HTTPSConnection, ntob 
 4  import threading 
 5   
 6  import cherrypy 
 7   
 8   
 9  data = object() 
10   
11   
12  from cherrypy.test import helper 
13   
14   
15 -class ReferenceTests(helper.CPWebCase):
16
17 - def setup_server():
18 19 class Root: 20 def index(self, *args, **kwargs): 21 cherrypy.request.thing = data 22 return "Hello world!"
23 index.exposed = True
24 25 cherrypy.tree.mount(Root()) 26 setup_server = staticmethod(setup_server) 27
28 - def test_threadlocal_garbage(self):
29 success = [] 30 31 def getpage(): 32 host = '%s:%s' % (self.interface(), self.PORT) 33 if self.scheme == 'https': 34 c = HTTPSConnection(host) 35 else: 36 c = HTTPConnection(host) 37 try: 38 c.putrequest('GET', '/') 39 c.endheaders() 40 response = c.getresponse() 41 body = response.read() 42 self.assertEqual(response.status, 200) 43 self.assertEqual(body, ntob("Hello world!")) 44 finally: 45 c.close() 46 success.append(True)
47 48 ITERATIONS = 25 49 ts = [] 50 for _ in range(ITERATIONS): 51 t = threading.Thread(target=getpage) 52 ts.append(t) 53 t.start() 54 55 for t in ts: 56 t.join() 57 58 self.assertEqual(len(success), ITERATIONS) 59