90 lines
3.5 KiB
Python
90 lines
3.5 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from server import (
|
|
resolve_build_workers,
|
|
resolve_extract_workers,
|
|
resolve_generation_strategy,
|
|
resolve_image_delivery_options,
|
|
resolve_memory_reclaim_options,
|
|
resolve_single_generation_mode,
|
|
)
|
|
|
|
|
|
class TestGenerationStrategy(unittest.TestCase):
|
|
def test_default_without_performance_uses_page_template_cache(self) -> None:
|
|
self.assertEqual(resolve_generation_strategy({}, total_records=1), "legacy")
|
|
self.assertEqual(resolve_generation_strategy({}, total_records=5), "page_template_cache")
|
|
|
|
def test_page_template_cache_requires_min_records(self) -> None:
|
|
cfg = {
|
|
"performance": {
|
|
"generation_strategy": "page_template_cache",
|
|
"template_cache_min_records": 2,
|
|
"single_slide_output": True,
|
|
}
|
|
}
|
|
self.assertEqual(resolve_generation_strategy(cfg, total_records=1), "legacy")
|
|
self.assertEqual(resolve_generation_strategy(cfg, total_records=2), "page_template_cache")
|
|
|
|
def test_page_template_cache_respects_single_slide_output(self) -> None:
|
|
cfg = {
|
|
"performance": {
|
|
"generation_strategy": "page_template_cache",
|
|
"template_cache_min_records": 1,
|
|
"single_slide_output": False,
|
|
}
|
|
}
|
|
self.assertEqual(resolve_generation_strategy(cfg, total_records=3), "legacy")
|
|
|
|
def test_legacy_strategy_always_returns_legacy(self) -> None:
|
|
cfg = {
|
|
"performance": {
|
|
"generation_strategy": "legacy",
|
|
"template_cache_min_records": 1,
|
|
"single_slide_output": True,
|
|
}
|
|
}
|
|
self.assertEqual(resolve_generation_strategy(cfg, total_records=20), "legacy")
|
|
|
|
def test_image_delivery_defaults(self) -> None:
|
|
opts = resolve_image_delivery_options({})
|
|
self.assertEqual(int(opts.get("max_kbps", 0)), 300)
|
|
self.assertEqual(int(opts.get("chunk_size", 0)), 16 * 1024)
|
|
|
|
def test_image_delivery_disable_limit(self) -> None:
|
|
cfg = {"performance": {"image_delivery": {"enabled": False, "max_kbps": 999}}}
|
|
opts = resolve_image_delivery_options(cfg)
|
|
self.assertEqual(int(opts.get("max_kbps", -1)), 0)
|
|
|
|
def test_single_generation_mode_defaults_enabled(self) -> None:
|
|
self.assertTrue(resolve_single_generation_mode({}))
|
|
self.assertFalse(resolve_single_generation_mode({"performance": {"single_generation_mode": False}}))
|
|
|
|
def test_build_workers_default_single(self) -> None:
|
|
self.assertEqual(resolve_build_workers({}, total_records=10), 1)
|
|
cfg = {"performance": {"max_build_workers": 3}}
|
|
self.assertEqual(resolve_build_workers(cfg, total_records=2), 2)
|
|
|
|
def test_extract_workers_default_single(self) -> None:
|
|
self.assertEqual(resolve_extract_workers({}), 1)
|
|
cfg = {"performance": {"max_extract_workers": 4}}
|
|
self.assertGreaterEqual(resolve_extract_workers(cfg), 1)
|
|
|
|
def test_memory_reclaim_defaults_enabled(self) -> None:
|
|
opts = resolve_memory_reclaim_options({})
|
|
self.assertTrue(opts["enabled"])
|
|
self.assertTrue(opts["gc_collect"])
|
|
self.assertTrue(opts["malloc_trim"])
|
|
|
|
def test_memory_reclaim_can_disable(self) -> None:
|
|
opts = resolve_memory_reclaim_options({"performance": {"memory_reclaim": {"enabled": False}}})
|
|
self.assertFalse(opts["enabled"])
|
|
self.assertFalse(opts["gc_collect"])
|
|
self.assertFalse(opts["malloc_trim"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|