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