123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- import pytest
- from render import Render
- @pytest.fixture
- def mock_values():
- return {
- "images": {
- "test_image": {
- "repository": "nginx",
- "tag": "latest",
- }
- },
- }
- def test_auto_add_vars(mock_values):
- mock_values["TZ"] = "Etc/UTC"
- mock_values["run_as"] = {"user": "1000", "group": "1000"}
- mock_values["resources"] = {
- "gpus": {
- "nvidia_gpu_selection": {
- "pci_slot_0": {"uuid": "uuid_0", "use_gpu": True},
- "pci_slot_1": {"uuid": "uuid_1", "use_gpu": True},
- },
- }
- }
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- output = render.render()
- envs = output["services"]["test_container"]["environment"]
- assert len(envs) == 11
- assert envs["TZ"] == "Etc/UTC"
- assert envs["PUID"] == "1000"
- assert envs["UID"] == "1000"
- assert envs["USER_ID"] == "1000"
- assert envs["PGID"] == "1000"
- assert envs["GID"] == "1000"
- assert envs["GROUP_ID"] == "1000"
- assert envs["UMASK"] == "002"
- assert envs["UMASK_SET"] == "002"
- assert envs["NVIDIA_DRIVER_CAPABILITIES"] == "all"
- assert envs["NVIDIA_VISIBLE_DEVICES"] == "uuid_0,uuid_1"
- def test_skip_generic_variables(mock_values):
- mock_values["skip_generic_variables"] = True
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- output = render.render()
- envs = output["services"]["test_container"]["environment"]
- assert len(envs) == 1
- assert envs["NVIDIA_VISIBLE_DEVICES"] == "void"
- def test_add_from_all_sources(mock_values):
- mock_values["TZ"] = "Etc/UTC"
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_env("APP_ENV", "test_value")
- c1.environment.add_user_envs(
- [
- {"name": "USER_ENV", "value": "test_value2"},
- ]
- )
- output = render.render()
- envs = output["services"]["test_container"]["environment"]
- assert envs["APP_ENV"] == "test_value"
- assert envs["USER_ENV"] == "test_value2"
- assert envs["TZ"] == "Etc/UTC"
- def test_user_add_vars(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_user_envs(
- [
- {"name": "MY_ENV", "value": "test_value"},
- {"name": "MY_ENV2", "value": "test_value2"},
- ]
- )
- output = render.render()
- envs = output["services"]["test_container"]["environment"]
- assert envs["MY_ENV"] == "test_value"
- assert envs["MY_ENV2"] == "test_value2"
- def test_user_add_duplicate_vars(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- with pytest.raises(Exception):
- c1.environment.add_user_envs(
- [
- {"name": "MY_ENV", "value": "test_value"},
- {"name": "MY_ENV", "value": "test_value2"},
- ]
- )
- def test_user_env_without_name(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- with pytest.raises(Exception):
- c1.environment.add_user_envs(
- [
- {"name": "", "value": "test_value"},
- ]
- )
- def test_user_env_try_to_overwrite_auto_vars(mock_values):
- mock_values["TZ"] = "Etc/UTC"
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_user_envs(
- [
- {"name": "TZ", "value": "test_value"},
- ]
- )
- with pytest.raises(Exception):
- render.render()
- def test_user_env_try_to_overwrite_app_dev_vars(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_user_envs(
- [
- {"name": "PORT", "value": "test_value"},
- ]
- )
- c1.environment.add_env("PORT", "test_value2")
- with pytest.raises(Exception):
- render.render()
- def test_app_dev_vars_try_to_overwrite_auto_vars(mock_values):
- mock_values["TZ"] = "Etc/UTC"
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_env("TZ", "test_value")
- with pytest.raises(Exception):
- render.render()
- def test_app_dev_no_name(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- with pytest.raises(Exception):
- c1.environment.add_env("", "test_value")
- def test_app_dev_duplicate_vars(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_env("PORT", "test_value")
- with pytest.raises(Exception):
- c1.environment.add_env("PORT", "test_value2")
- def test_format_vars(mock_values):
- render = Render(mock_values)
- c1 = render.add_container("test_container", "test_image")
- c1.healthcheck.disable()
- c1.environment.add_env("APP_ENV", "test_$value")
- c1.environment.add_env("APP_ENV_BOOL", True)
- c1.environment.add_env("APP_ENV_INT", 10)
- c1.environment.add_env("APP_ENV_FLOAT", 10.5)
- c1.environment.add_user_envs(
- [
- {"name": "USER_ENV", "value": "test_$value2"},
- ]
- )
- output = render.render()
- envs = output["services"]["test_container"]["environment"]
- assert envs["APP_ENV"] == "test_$$value"
- assert envs["USER_ENV"] == "test_$$value2"
- assert envs["APP_ENV_BOOL"] == "true"
- assert envs["APP_ENV_INT"] == "10"
- assert envs["APP_ENV_FLOAT"] == "10.5"
|