1
1
"""codspeed benchmarks for client requests."""
2
2
3
3
import asyncio
4
- from http .cookies import Morsel
4
+ from http .cookies import BaseCookie
5
5
from typing import Union
6
6
7
+ from multidict import CIMultiDict
7
8
from pytest_codspeed import BenchmarkFixture
8
9
from yarl import URL
9
10
10
- from aiohttp .client_reqrep import ClientRequest
11
+ from aiohttp .client_reqrep import ClientRequest , ClientResponse
12
+ from aiohttp .cookiejar import CookieJar
13
+ from aiohttp .helpers import TimerNoop
11
14
from aiohttp .http_writer import HttpVersion11
15
+ from aiohttp .tracing import Trace
12
16
13
17
14
18
def test_client_request_update_cookies (
15
19
loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
16
20
) -> None :
17
- req = ClientRequest ("get" , URL ("http://python.org" ), loop = loop )
18
- morsel : "Morsel[str]" = Morsel ()
19
- morsel .set (key = "string" , val = "Another string" , coded_val = "really" )
20
- morsel_cookie = {"str" : morsel }
21
+ url = URL ("http://python.org" )
22
+
23
+ async def setup ():
24
+ cookie_jar = CookieJar ()
25
+ cookie_jar .update_cookies ({"string" : "Another string" })
26
+ cookies = cookie_jar .filter_cookies (url )
27
+ assert cookies ["string" ].value == "Another string"
28
+ req = ClientRequest ("get" , url , loop = loop )
29
+ return req , cookies
30
+
31
+ req , cookies = loop .run_until_complete (setup ())
21
32
22
33
@benchmark
23
34
def _run () -> None :
24
- req .update_cookies (cookies = morsel_cookie )
35
+ req .update_cookies (cookies = cookies )
25
36
26
37
27
38
def test_create_client_request_with_cookies (
28
39
loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
29
40
) -> None :
30
41
url = URL ("http://python.org" )
31
42
43
+ async def setup ():
44
+ cookie_jar = CookieJar ()
45
+ cookie_jar .update_cookies ({"cookie" : "value" })
46
+ cookies = cookie_jar .filter_cookies (url )
47
+ assert cookies ["cookie" ].value == "value"
48
+ return cookies
49
+
50
+ cookies = loop .run_until_complete (setup ())
51
+ timer = TimerNoop ()
52
+ traces : list [Trace ] = []
53
+ headers = CIMultiDict [str ]()
54
+
32
55
@benchmark
33
56
def _run () -> None :
34
57
ClientRequest (
35
58
method = "get" ,
36
59
url = url ,
37
60
loop = loop ,
38
- headers = None ,
61
+ params = None ,
62
+ skip_auto_headers = None ,
63
+ response_class = ClientResponse ,
64
+ proxy = None ,
65
+ proxy_auth = None ,
66
+ proxy_headers = None ,
67
+ timer = timer ,
68
+ session = None ,
69
+ ssl = True ,
70
+ traces = traces ,
71
+ trust_env = False ,
72
+ server_hostname = None ,
73
+ headers = headers ,
39
74
data = None ,
40
- cookies = { "cookie" : "value" } ,
75
+ cookies = cookies ,
41
76
auth = None ,
42
77
version = HttpVersion11 ,
43
78
compress = False ,
@@ -50,16 +85,32 @@ def test_create_client_request_with_headers(
50
85
loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
51
86
) -> None :
52
87
url = URL ("http://python.org" )
88
+ timer = TimerNoop ()
89
+ traces : list [Trace ] = []
90
+ headers = CIMultiDict ({"header" : "value" , "another" : "header" })
91
+ cookies = BaseCookie [str ]()
53
92
54
93
@benchmark
55
94
def _run () -> None :
56
95
ClientRequest (
57
96
method = "get" ,
58
97
url = url ,
59
98
loop = loop ,
60
- headers = {"header" : "value" , "another" : "header" },
99
+ params = None ,
100
+ skip_auto_headers = None ,
101
+ response_class = ClientResponse ,
102
+ proxy = None ,
103
+ proxy_auth = None ,
104
+ proxy_headers = None ,
105
+ timer = timer ,
106
+ session = None ,
107
+ ssl = True ,
108
+ traces = traces ,
109
+ trust_env = False ,
110
+ server_hostname = None ,
111
+ headers = headers ,
61
112
data = None ,
62
- cookies = None ,
113
+ cookies = cookies ,
63
114
auth = None ,
64
115
version = HttpVersion11 ,
65
116
compress = False ,
0 commit comments