17
17
def test_read_one_hundred_websocket_text_messages (
18
18
loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
19
19
) -> None :
20
+ """Benchmark reading 100 WebSocket text messages."""
20
21
queue : DataQueue [WSMessage ] = DataQueue (loop = loop )
21
22
reader = WebSocketReader (queue , max_msg_size = 2 ** 16 )
22
23
raw_message = (
@@ -33,25 +34,27 @@ def _run() -> None:
33
34
feed_data (raw_message )
34
35
35
36
36
- def test_send_one_hundred_websocket_text_messages (
37
- loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
38
- ) -> None :
37
+ class MockTransport (asyncio .Transport ):
38
+ """Mock transport for testing that do no real I/O."""
39
39
40
- class MockTransport (asyncio .Transport ):
41
- """Mock transport for testing that do no real I/O."""
40
+ def is_closing (self ) -> bool :
41
+ """Swallow is_closing."""
42
+ return False
42
43
43
- def is_closing (self ) -> bool :
44
- """Swallow is_closing."""
45
- return False
44
+ def write (self , data : bytes ) -> None :
45
+ """Swallow writes."""
46
46
47
- def write (self , data : bytes ) -> None :
48
- """Swallow writes."""
49
47
50
- class MockProtocol (BaseProtocol ):
48
+ class MockProtocol (BaseProtocol ):
51
49
52
- async def _drain_helper (self ) -> None :
53
- """Swallow drain."""
50
+ async def _drain_helper (self ) -> None :
51
+ """Swallow drain."""
54
52
53
+
54
+ def test_send_one_hundred_websocket_text_messages (
55
+ loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
56
+ ) -> None :
57
+ """Benchmark sending 100 WebSocket text messages."""
55
58
writer = WebSocketWriter (MockProtocol (loop = loop ), MockTransport ())
56
59
raw_message = b"Hello, World!" * 100
57
60
@@ -62,3 +65,19 @@ async def _send_one_hundred_websocket_text_messages() -> None:
62
65
@benchmark
63
66
def _run () -> None :
64
67
loop .run_until_complete (_send_one_hundred_websocket_text_messages ())
68
+
69
+
70
+ def test_send_one_hundred_websocket_text_messages_with_mask (
71
+ loop : asyncio .AbstractEventLoop , benchmark : BenchmarkFixture
72
+ ) -> None :
73
+ """Benchmark sending 100 masked WebSocket text messages."""
74
+ writer = WebSocketWriter (MockProtocol (loop = loop ), MockTransport (), use_mask = True )
75
+ raw_message = b"Hello, World!" * 100
76
+
77
+ async def _send_one_hundred_websocket_text_messages () -> None :
78
+ for _ in range (100 ):
79
+ await writer .send_frame (raw_message , WSMsgType .TEXT )
80
+
81
+ @benchmark
82
+ def _run () -> None :
83
+ loop .run_until_complete (_send_one_hundred_websocket_text_messages ())
0 commit comments