Measure coverage of forked processes
This commit is contained in:
parent
ae99584a7b
commit
e4ee569bd2
@ -133,6 +133,7 @@ class ParallelHTTPServer(ParallelizationMixIn,
|
|||||||
return super().finish_request(request, client_address)
|
return super().finish_request(request, client_address)
|
||||||
|
|
||||||
def finish_request(self, request, client_address):
|
def finish_request(self, request, client_address):
|
||||||
|
"""Don't overwrite this! (Modified by tests.)"""
|
||||||
with self.connections_guard:
|
with self.connections_guard:
|
||||||
return self.finish_request_locked(request, client_address)
|
return self.finish_request_locked(request, client_address)
|
||||||
|
|
||||||
@ -164,22 +165,21 @@ class ParallelHTTPSServer(ParallelHTTPServer):
|
|||||||
ssl_version=self.protocol, ciphers=self.ciphers,
|
ssl_version=self.protocol, ciphers=self.ciphers,
|
||||||
do_handshake_on_connect=False)
|
do_handshake_on_connect=False)
|
||||||
|
|
||||||
def finish_request(self, request, client_address):
|
def finish_request_locked(self, request, client_address):
|
||||||
with self.connections_guard:
|
try:
|
||||||
try:
|
try:
|
||||||
try:
|
request.do_handshake()
|
||||||
request.do_handshake()
|
except socket.timeout:
|
||||||
except socket.timeout:
|
raise
|
||||||
raise
|
except Exception as e:
|
||||||
except Exception as e:
|
raise RuntimeError("SSL handshake failed: %s" % e) from e
|
||||||
raise RuntimeError("SSL handshake failed: %s" % e) from e
|
except Exception:
|
||||||
except Exception:
|
try:
|
||||||
try:
|
self.handle_error(request, client_address)
|
||||||
self.handle_error(request, client_address)
|
finally:
|
||||||
finally:
|
self.shutdown_request(request)
|
||||||
self.shutdown_request(request)
|
return
|
||||||
return
|
return super().finish_request_locked(request, client_address)
|
||||||
return super().finish_request_locked(request, client_address)
|
|
||||||
|
|
||||||
|
|
||||||
class ServerHandler(wsgiref.simple_server.ServerHandler):
|
class ServerHandler(wsgiref.simple_server.ServerHandler):
|
||||||
|
@ -26,6 +26,28 @@ import radicale
|
|||||||
import sys
|
import sys
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
|
from pytest_cov import embed
|
||||||
|
|
||||||
|
from radicale import server
|
||||||
|
|
||||||
|
# Measure coverage of forked processes
|
||||||
|
finish_request = server.ParallelHTTPServer.finish_request
|
||||||
|
pid = os.getpid()
|
||||||
|
|
||||||
|
|
||||||
|
def finish_request_cov(self, request, client_address):
|
||||||
|
cov = None
|
||||||
|
if pid != os.getpid():
|
||||||
|
cov = embed.init()
|
||||||
|
try:
|
||||||
|
return finish_request(self, request, client_address)
|
||||||
|
finally:
|
||||||
|
if cov:
|
||||||
|
embed.cleanup(cov)
|
||||||
|
|
||||||
|
|
||||||
|
server.ParallelHTTPServer.finish_request = finish_request_cov
|
||||||
|
|
||||||
# Allow importing of tests.custom....
|
# Allow importing of tests.custom....
|
||||||
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
|
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
|
||||||
# Enable debug output
|
# Enable debug output
|
||||||
|
Loading…
Reference in New Issue
Block a user