34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import dataclasses
|
|
|
|
from rerun.experimental import OptimizationProfile
|
|
|
|
|
|
def test_optimization_profile_custom() -> None:
|
|
"""OptimizationProfile fields are individually overridable."""
|
|
p = OptimizationProfile(max_rows=100, extra_passes=3, gop_batching=False, split_size_ratio=10.0)
|
|
assert p.max_rows == 100
|
|
assert p.extra_passes == 3
|
|
assert p.gop_batching is False
|
|
assert p.split_size_ratio == 10.0
|
|
assert p.max_bytes is None # unchanged from default
|
|
|
|
|
|
def test_optimization_profile_equality() -> None:
|
|
"""Dataclass-derived equality: field-by-field comparison."""
|
|
assert OptimizationProfile() == OptimizationProfile()
|
|
assert OptimizationProfile(extra_passes=10) == OptimizationProfile(extra_passes=10)
|
|
assert OptimizationProfile() != OptimizationProfile(gop_batching=False)
|
|
|
|
|
|
def test_replace_works() -> None:
|
|
"""`dataclasses.replace` produces a new profile with overridden fields."""
|
|
derived = dataclasses.replace(OptimizationProfile.OBJECT_STORE, gop_batching=False)
|
|
assert derived.gop_batching is False
|
|
# Other fields preserved from OBJECT_STORE
|
|
assert derived.max_bytes == OptimizationProfile.OBJECT_STORE.max_bytes
|
|
assert derived.max_rows == OptimizationProfile.OBJECT_STORE.max_rows
|
|
# Original is untouched
|
|
assert OptimizationProfile.OBJECT_STORE.gop_batching is True
|