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
16
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
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