-
Notifications
You must be signed in to change notification settings - Fork 228
Expand file tree
/
Copy pathtest_cache.py
More file actions
50 lines (42 loc) · 1.34 KB
/
test_cache.py
File metadata and controls
50 lines (42 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from __future__ import annotations
from pytest_codspeed import BenchmarkFixture
from zeroconf import DNSCache, DNSPointer, current_time_millis
from zeroconf.const import _CLASS_IN, _TYPE_PTR
def test_add_expire_1000_records(benchmark: BenchmarkFixture) -> None:
"""Benchmark for DNSCache to expire 10000 records."""
cache = DNSCache()
now = current_time_millis()
records = [
DNSPointer(
name=f"test{id}.local.",
type_=_TYPE_PTR,
class_=_CLASS_IN,
ttl=60,
alias=f"test{id}.local.",
created=now + id,
)
for id in range(1000)
]
@benchmark
def _expire_records() -> None:
cache.async_add_records(records)
cache.async_expire(now + 100_000)
def test_expire_no_records_to_expire(benchmark: BenchmarkFixture) -> None:
"""Benchmark for DNSCache with 1000 records none to expire."""
cache = DNSCache()
now = current_time_millis()
cache.async_add_records(
DNSPointer(
name=f"test{id}.local.",
type_=_TYPE_PTR,
class_=_CLASS_IN,
ttl=60,
alias=f"test{id}.local.",
created=now + id,
)
for id in range(1000)
)
cache.async_expire(now)
@benchmark
def _expire_records() -> None:
cache.async_expire(now)