Files
siloqy/prod/tests/test_launch_dita_v2.py

80 lines
3.2 KiB
Python
Raw Normal View History

from __future__ import annotations
import os
from types import SimpleNamespace
from pathlib import Path
import unittest
from unittest.mock import patch
import prod.launch_dita_v2 as launch_dita_v2
class DummyBundle:
def __init__(self) -> None:
self.closed = False
self.kernel = SimpleNamespace(snapshot=lambda: {"ok": True}, control=SimpleNamespace(as_dict=lambda: {"mode": "NORMAL"}))
self.venue = SimpleNamespace(__class__=SimpleNamespace(__name__="MockVenueAdapter"))
self.zinc_plane = SimpleNamespace(__class__=SimpleNamespace(__name__="InMemoryZincPlane"))
self.projection = SimpleNamespace(__class__=SimpleNamespace(__name__="HazelcastProjection"))
def close(self) -> None:
self.closed = True
class TestLaunchDitaV2(unittest.TestCase):
def test_supervisor_config_contains_dita_v2_program(self) -> None:
conf = Path("/mnt/dolphinng5_predict/prod/supervisor/dolphin-supervisord.conf").read_text()
self.assertIn("[program:dita_v2]", conf)
self.assertIn("launch_dita_v2.py", conf)
self.assertIn("DITA_V2_LAUNCHER_MODE=\"serve\"", conf)
def test_env_mode_defaults_to_serve(self) -> None:
previous = os.environ.get("DITA_V2_LAUNCHER_MODE")
try:
os.environ.pop("DITA_V2_LAUNCHER_MODE", None)
self.assertEqual(launch_dita_v2._env_mode(), "serve")
os.environ["DITA_V2_LAUNCHER_MODE"] = "once"
self.assertEqual(launch_dita_v2._env_mode(), "once")
finally:
if previous is None:
os.environ.pop("DITA_V2_LAUNCHER_MODE", None)
else:
os.environ["DITA_V2_LAUNCHER_MODE"] = previous
def test_main_once_uses_snapshot_path(self) -> None:
bundle = DummyBundle()
with patch.object(launch_dita_v2, "build_launcher_bundle", return_value=bundle), patch.object(
launch_dita_v2, "_serve", side_effect=AssertionError("_serve should not run in once mode")
):
previous = os.environ.get("DITA_V2_LAUNCHER_MODE")
os.environ["DITA_V2_LAUNCHER_MODE"] = "once"
try:
self.assertEqual(launch_dita_v2.main(), 0)
self.assertTrue(bundle.closed)
finally:
if previous is None:
os.environ.pop("DITA_V2_LAUNCHER_MODE", None)
else:
os.environ["DITA_V2_LAUNCHER_MODE"] = previous
def test_main_serve_routes_to_serve(self) -> None:
bundle = DummyBundle()
with patch.object(launch_dita_v2, "build_launcher_bundle", return_value=bundle), patch.object(
launch_dita_v2, "_serve", return_value=7
) as serve:
previous = os.environ.get("DITA_V2_LAUNCHER_MODE")
os.environ["DITA_V2_LAUNCHER_MODE"] = "serve"
try:
self.assertEqual(launch_dita_v2.main(), 7)
serve.assert_called_once()
self.assertTrue(bundle.closed)
finally:
if previous is None:
os.environ.pop("DITA_V2_LAUNCHER_MODE", None)
else:
os.environ["DITA_V2_LAUNCHER_MODE"] = previous
if __name__ == "__main__":
unittest.main()