/usr/share/pyshared/cherrypy/test/test_http.py is in python-cherrypy 2.3.0-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | """Tests for managing HTTP issues (malformed requests, etc).
Some of these tests check timeouts, etcetera, and therefore take a long
time to run. Therefore, this module should probably not be included in
the 'comprehensive' test suite (test.py).
"""
import test
test.prefer_parent_path()
import gc
import httplib
import threading
import cherrypy
from cherrypy import _cphttptools
data = object()
def get_instances(cls):
return [x for x in gc.get_objects() if isinstance(x, cls)]
def setup_server():
class Root:
def index(self, *args, **kwargs):
cherrypy.request.thing = data
return "Hello world!"
index.exposed = True
def gc_stats(self):
return "%s %s %s %s" % (gc.collect(),
len(get_instances(_cphttptools.Request)),
len(get_instances(_cphttptools.Response)),
len(gc.get_referrers(data)))
gc_stats.exposed = True
cherrypy.tree.mount(Root())
cherrypy.config.update({
'global': {'server.log_to_screen': False,
'server.environment': 'production',
'server.show_tracebacks': True,
},
})
import helper
class HTTPTests(helper.CPWebCase):
def test_sockets(self):
# By not including a Content-Length header, cgi.FieldStorage
# will hang. Verify that CP times out the socket and responds
# with 411 Length Required.
c = httplib.HTTPConnection("localhost:%s" % self.PORT)
c.request("POST", "/")
self.assertEqual(c.getresponse().status, 411)
class ReferenceTests(helper.CPWebCase):
def test_threadlocal_garbage(self):
def getpage():
self.getPage('/')
self.assertBody("Hello world!")
ts = []
for _ in range(25):
t = threading.Thread(target=getpage)
ts.append(t)
t.start()
for t in ts:
t.join()
self.getPage("/gc_stats")
self.assertBody("0 1 1 1")
if __name__ == '__main__':
setup_server()
helper.testmain()
|