test_compose_contract.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import json
  2. import subprocess
  3. from pathlib import Path
  4. ROOT = Path(__file__).resolve().parents[2]
  5. COMPOSE = ROOT / "deploy/docker/docker-compose.yml"
  6. def _config():
  7. result = subprocess.run(
  8. [
  9. "docker",
  10. "compose",
  11. "-f",
  12. str(COMPOSE),
  13. "config",
  14. "--format",
  15. "json",
  16. ],
  17. cwd=ROOT,
  18. check=True,
  19. capture_output=True,
  20. text=True,
  21. )
  22. return json.loads(result.stdout)
  23. def test_runner_is_independent_bounded_and_not_exposed_to_kestra():
  24. config = _config()
  25. runner = config["services"]["runner"]
  26. kestra = config["services"]["kestra"]
  27. assert runner["ports"] == [
  28. {
  29. "mode": "ingress",
  30. "target": 5600,
  31. "published": "15600",
  32. "host_ip": "127.0.0.1",
  33. "protocol": "tcp",
  34. }
  35. ]
  36. assert runner["environment"]["RUNNER_WORKERS"] == "2"
  37. assert runner["environment"]["RUNNER_DATASOURCE_POOL_SIZE"] == "1"
  38. assert runner["environment"]["RUNNER_DATASOURCE_MAX_OVERFLOW"] == "1"
  39. assert runner["environment"]["RUNNER_DATASOURCE_MAX_IDLE_POOLS"] == "4"
  40. assert runner["read_only"] is True
  41. assert runner["pids_limit"] == 128
  42. assert runner["deploy"]["resources"]["limits"]["cpus"] == 1.0
  43. assert runner["deploy"]["resources"]["limits"]["memory"] == "536870912"
  44. assert runner["deploy"]["resources"]["limits"]["pids"] == 128
  45. assert not any(
  46. "/var/run/docker.sock" in str(volume)
  47. for volume in runner.get("volumes", [])
  48. )
  49. assert "dataops-runner" in runner["networks"]["dataops-test-net"][
  50. "aliases"
  51. ]
  52. kestra_json = json.dumps(kestra, sort_keys=True)
  53. for forbidden in (
  54. "RUNNER_TASK_TOKEN_SECRET",
  55. "DATASOURCE_CREDENTIAL_MASTER_KEY",
  56. "source-test-password",
  57. "source-postgres",
  58. "source-mysql",
  59. ):
  60. assert forbidden not in kestra_json