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 21 def index(self, *args, **kwargs): 22 cherrypy.request.thing = data 23 return "Hello world!"
24 index.exposed = True
25 26 cherrypy.tree.mount(Root()) 27 setup_server = staticmethod(setup_server) 28
29 - def test_threadlocal_garbage(self):
30 success = [] 31 32 def getpage(): 33 host = '%s:%s' % (self.interface(), self.PORT) 34 if self.scheme == 'https': 35 c = HTTPSConnection(host) 36 else: 37 c = HTTPConnection(host) 38 try: 39 c.putrequest('GET', '/') 40 c.endheaders() 41 response = c.getresponse() 42 body = response.read() 43 self.assertEqual(response.status, 200) 44 self.assertEqual(body, ntob("Hello world!")) 45 finally: 46 c.close() 47 success.append(True)
48 49 ITERATIONS = 25 50 ts = [] 51 for _ in range(ITERATIONS): 52 t = threading.Thread(target=getpage) 53 ts.append(t) 54 t.start() 55 56 for t in ts: 57 t.join() 58 59 self.assertEqual(len(success), ITERATIONS) 60