1
- from time import time
2
-
3
1
from django .test .client import Client , FakePayload
4
2
from django .conf import global_settings
5
3
from django .conf import settings
8
6
9
7
from djangobench .utils import run_comparison_benchmark
10
8
9
+
11
10
class RequestFactory (Client ):
12
11
"""
13
12
Class that lets you create mock Request objects for use in testing.
@@ -33,7 +32,7 @@ def request(self, **request):
33
32
has created it.
34
33
"""
35
34
environ = {
36
- 'HTTP_COOKIE' : self .cookies ,
35
+ 'HTTP_COOKIE' : self .cookies . output ( header = '' , sep = '; ' ) ,
37
36
'PATH_INFO' : '/' ,
38
37
'QUERY_STRING' : '' ,
39
38
'REQUEST_METHOD' : 'GET' ,
@@ -48,6 +47,7 @@ def request(self, **request):
48
47
49
48
return WSGIRequest (environ )
50
49
50
+
51
51
def setup ():
52
52
global req_factory , handler_default_middleware , handler_no_middleware
53
53
req_factory = RequestFactory ()
@@ -60,27 +60,31 @@ def setup():
60
60
handler_no_middleware = WSGIHandler ()
61
61
handler_no_middleware .load_middleware ()
62
62
63
+
63
64
def benchmark_request (middleware_classes ):
64
65
settings .MIDDLEWARE_CLASSES = middleware_classes
65
66
req_factory = RequestFactory ()
66
67
handler = WSGIHandler ()
67
68
handler .load_middleware ()
68
69
handler .get_response (req_factory .get ('/' ))
69
70
71
+
70
72
def benchmark_default_middleware ():
71
73
global req_factory , handler_default_middleware
72
74
handler_default_middleware .get_response (req_factory .get ('/' ))
73
75
76
+
74
77
def benchmark_no_middleware ():
75
78
global req_factory , handler_no_middleware
76
79
handler_no_middleware .get_response (req_factory .get ('/' ))
77
80
81
+
78
82
run_comparison_benchmark (
79
83
benchmark_default_middleware ,
80
84
benchmark_no_middleware ,
81
- setup = setup ,
82
- syncdb = False ,
83
- meta = {
85
+ setup = setup ,
86
+ syncdb = False ,
87
+ meta = {
84
88
'description' : 'Request/response overhead added by the default middleware.' ,
85
89
}
86
- )
90
+ )
0 commit comments