test_cache_invalidation.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from __future__ import annotations
  2. def test_cache_invalidation_targets_direct_and_impacted_points():
  3. from app.core.knowledge.cache_invalidation import (
  4. CacheDependency,
  5. plan_cache_invalidation,
  6. )
  7. dependencies = [
  8. CacheDependency("cache-a", "DataMeta/a/definition", "domain-a", 1),
  9. CacheDependency("cache-b", "DataFlow/b/purpose", "domain-a", 1),
  10. CacheDependency("cache-c", "DataMeta/c/definition", "domain-b", 1),
  11. ]
  12. plan = plan_cache_invalidation(
  13. dependencies,
  14. changed_point_keys={"DataMeta/a/definition"},
  15. impacted_point_keys={"DataFlow/b/purpose"},
  16. )
  17. assert plan.cache_key_hashes == frozenset({"cache-a", "cache-b"})
  18. assert plan.business_domains_to_flush == frozenset()
  19. def test_missing_dependency_metadata_falls_back_to_business_domain_flush():
  20. from app.core.knowledge.cache_invalidation import plan_cache_invalidation
  21. plan = plan_cache_invalidation(
  22. [],
  23. changed_point_keys={"DataMeta/a/definition"},
  24. impacted_point_keys=set(),
  25. dependency_metadata_complete=False,
  26. affected_business_domains={"domain-a"},
  27. )
  28. assert plan.cache_key_hashes == frozenset()
  29. assert plan.business_domains_to_flush == frozenset({"domain-a"})