...

Text file src/github.com/emissary-ingress/emissary/v3/python/tests/unit/test_ir.py

Documentation: github.com/emissary-ingress/emissary/v3/python/tests/unit

     1import logging
     2from dataclasses import dataclass
     3from typing import Optional
     4
     5from tests.utils import (
     6    Compile,
     7    default_http3_listener_manifest,
     8    default_listener_manifests,
     9    default_tcp_listener_manifest,
    10    default_udp_listener_manifest,
    11    logger,
    12)
    13
    14
    15def http3_quick_start_manifests():
    16    return default_listener_manifests() + default_http3_listener_manifest()
    17
    18
    19class TestIR:
    20    def test_http3_enabled(self, caplog):
    21        caplog.set_level(logging.WARNING, logger="ambassador")
    22
    23        @dataclass
    24        class TestCase:
    25            name: str
    26            inputYaml: str
    27            expected: dict[str, bool]
    28            expectedLog: Optional[str] = None
    29
    30        testcases = [
    31            TestCase(
    32                "quick-start",
    33                default_listener_manifests(),
    34                {"tcp-0.0.0.0-8080": False, "tcp-0.0.0.0-8443": False},
    35            ),
    36            TestCase(
    37                "quick-start-with_http3",
    38                http3_quick_start_manifests(),
    39                {"tcp-0.0.0.0-8080": False, "tcp-0.0.0.0-8443": True, "udp-0.0.0.0-8443": True},
    40            ),
    41            TestCase("http3-only", default_http3_listener_manifest(), {"udp-0.0.0.0-8443": True}),
    42            TestCase("raw-udp", default_udp_listener_manifest(), {}),
    43            TestCase("raw-tcp", default_tcp_listener_manifest(), {"tcp-0.0.0.0-8443": False}),
    44        ]
    45
    46        for case in testcases:
    47            compiled_ir = Compile(logger, case.inputYaml, k8s=True)
    48            result_ir = compiled_ir["ir"]
    49
    50            listeners = result_ir.listeners
    51
    52            assert len(case.expected.items()) == len(listeners)
    53
    54            for listener_id, http3_enabled in case.expected.items():
    55                listener = listeners.get(listener_id, None)
    56                assert listener is not None
    57                assert listener.http3_enabled == http3_enabled
    58
    59            if case.expectedLog != None:
    60                assert case.expectedLog in caplog.text

View as plain text