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
+ req = ClientRequest ("get" , url , loop = loop )
23
+ cookie_jar = CookieJar ()
24
+ cookie_jar .update_cookies ({"string" : "Another string" })
25
+ cookies = cookie_jar .filter_cookies (url )
26
+ assert cookies ["string" ].value == "Another string"
21
27
22
28
@benchmark
23
29
def _run () -> None :
24
- req .update_cookies (cookies = morsel_cookie )
30
+ req .update_cookies (cookies = cookies )
25
31
26
32
27
33
def test_create_client_request_with_cookies (
28
34
loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
29
35
) -> None :
30
36
url = URL ("http://python.org" )
37
+ cookie_jar = CookieJar ()
38
+ cookie_jar .update_cookies ({"cookie" : "value" })
39
+ cookies = cookie_jar .filter_cookies (url )
40
+ assert cookies ["cookie" ].value == "value"
41
+ timer = TimerNoop ()
42
+ traces : list [Trace ] = []
43
+ headers = CIMultiDict [str ]()
31
44
32
45
@benchmark
33
46
def _run () -> None :
34
47
ClientRequest (
35
48
method = "get" ,
36
49
url = url ,
37
50
loop = loop ,
38
- headers = None ,
51
+ params = None ,
52
+ skip_auto_headers = None ,
53
+ response_class = ClientResponse ,
54
+ proxy = None ,
55
+ proxy_auth = None ,
56
+ proxy_headers = None ,
57
+ timer = timer ,
58
+ session = None ,
59
+ ssl = True ,
60
+ traces = traces ,
61
+ trust_env = False ,
62
+ server_hostname = None ,
63
+ headers = headers ,
39
64
data = None ,
40
- cookies = { "cookie" : "value" } ,
65
+ cookies = cookies ,
41
66
auth = None ,
42
67
version = HttpVersion11 ,
43
68
compress = False ,
@@ -50,16 +75,32 @@ def test_create_client_request_with_headers(
50
75
loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
51
76
) -> None :
52
77
url = URL ("http://python.org" )
78
+ timer = TimerNoop ()
79
+ traces : list [Trace ] = []
80
+ headers = CIMultiDict ({"header" : "value" , "another" : "header" })
81
+ cookies = BaseCookie [str ]()
53
82
54
83
@benchmark
55
84
def _run () -> None :
56
85
ClientRequest (
57
86
method = "get" ,
58
87
url = url ,
59
88
loop = loop ,
60
- headers = {"header" : "value" , "another" : "header" },
89
+ params = None ,
90
+ skip_auto_headers = None ,
91
+ response_class = ClientResponse ,
92
+ proxy = None ,
93
+ proxy_auth = None ,
94
+ proxy_headers = None ,
95
+ timer = timer ,
96
+ session = None ,
97
+ ssl = True ,
98
+ traces = traces ,
99
+ trust_env = False ,
100
+ server_hostname = None ,
101
+ headers = headers ,
61
102
data = None ,
62
- cookies = None ,
103
+ cookies = cookies ,
63
104
auth = None ,
64
105
version = HttpVersion11 ,
65
106
compress = False ,
0 commit comments