...

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

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

     1import logging
     2import sys
     3
     4import pytest
     5
     6logging.basicConfig(
     7    level=logging.INFO,
     8    format="%(asctime)s test %(levelname)s: %(message)s",
     9    datefmt="%Y-%m-%d %H:%M:%S",
    10)
    11
    12logger = logging.getLogger("ambassador")
    13
    14from ambassador import IR, Config
    15from ambassador.fetch import ResourceFetcher
    16from ambassador.ir.irbuffer import IRBuffer
    17from ambassador.utils import NullSecretHandler
    18
    19yaml = """
    20---
    21apiVersion: getambassador.io/v3alpha1
    22kind: Module
    23name: ambassador
    24config:
    25    defaults:
    26        max_request_words: 1
    27        altered: 2
    28        test_resource:
    29            max_request_words: 3
    30            altered: 4
    31            funk: 8
    32---
    33apiVersion: getambassador.io/v3alpha1
    34kind: Mapping
    35name: test_mapping
    36hostname: "*"
    37prefix: /test/
    38service: test:9999
    39"""
    40
    41
    42class IRTestResource(IRBuffer):
    43    def __init__(
    44        self,
    45        ir: "IR",
    46        aconf: Config,
    47        rkey: str = "ir.testresource",
    48        name: str = "ir.testresource",
    49        kind: str = "IRTestResource",
    50        **kwargs
    51    ) -> None:
    52
    53        super().__init__(ir=ir, aconf=aconf, rkey=rkey, kind=kind, name=name, **kwargs)
    54
    55        self.default_class = "test_resource"
    56
    57
    58def test_lookup():
    59    aconf = Config()
    60
    61    fetcher = ResourceFetcher(logger, aconf)
    62    fetcher.parse_yaml(yaml)
    63
    64    aconf.load_all(fetcher.sorted())
    65
    66    secret_handler = NullSecretHandler(logger, None, None, "0")
    67
    68    ir = IR(aconf, file_checker=lambda path: True, secret_handler=secret_handler)
    69
    70    t1 = IRBuffer(ir, aconf, rkey="-foo-", name="buffer", max_request_bytes=4096)
    71
    72    t2 = IRTestResource(ir, aconf, rkey="-foo-", name="buffer", max_request_bytes=8192)
    73
    74    assert t1.lookup("max_request_bytes") == 4096
    75    assert t1.lookup("max_request_bytes", 57) == 4096
    76    assert t1.lookup("max_request_bytes2", 57) == 57
    77
    78    assert t1.lookup("max_request_words") == 1
    79    assert t1.lookup("max_request_words", 77) == 1
    80    assert t1.lookup("max_request_words", default_key="altered") == 2
    81    assert t1.lookup("max_request_words", 77, default_key="altered") == 2
    82    assert t1.lookup("max_request_words", default_key="altered2") == None
    83    assert t1.lookup("max_request_words", 77, default_key="altered2") == 77
    84
    85    assert t1.lookup("max_request_words", default_class="test_resource") == 3
    86    assert t1.lookup("max_request_words", 77, default_class="test_resource") == 3
    87    assert t1.lookup("max_request_words", 77, default_class="test_resource2") == 1
    88    assert t1.lookup("max_request_words", default_key="altered", default_class="test_resource") == 4
    89    assert (
    90        t1.lookup("max_request_words", 77, default_key="altered", default_class="test_resource")
    91        == 4
    92    )
    93    assert (
    94        t1.lookup("max_request_words", default_key="altered2", default_class="test_resource")
    95        == None
    96    )
    97    assert (
    98        t1.lookup("max_request_words", 77, default_key="altered2", default_class="test_resource")
    99        == 77
   100    )
   101
   102    assert t1.lookup("funk") == None
   103    assert t1.lookup("funk", 77) == 77
   104
   105    assert t1.lookup("funk", default_class="test_resource") == 8
   106    assert t1.lookup("funk", 77, default_class="test_resource") == 8
   107    assert t1.lookup("funk", 77, default_class="test_resource2") == 77
   108
   109    assert t2.lookup("max_request_bytes") == 8192
   110    assert t2.lookup("max_request_bytes", 57) == 8192
   111    assert t2.lookup("max_request_bytes2", 57) == 57
   112
   113    assert t2.lookup("max_request_words") == 3
   114    assert t2.lookup("max_request_words", 77) == 3
   115    assert t2.lookup("max_request_words", default_key="altered") == 4
   116    assert t2.lookup("max_request_words", 77, default_key="altered") == 4
   117    assert t2.lookup("max_request_words", default_key="altered2") == None
   118    assert t2.lookup("max_request_words", 77, default_key="altered2") == 77
   119
   120    assert t2.lookup("max_request_words", default_class="/") == 1
   121    assert t2.lookup("max_request_words", 77, default_class="/") == 1
   122    assert t2.lookup("max_request_words", 77, default_class="/2") == 1
   123    assert t2.lookup("max_request_words", default_key="altered", default_class="/") == 2
   124    assert t2.lookup("max_request_words", 77, default_key="altered", default_class="/") == 2
   125    assert t2.lookup("max_request_words", default_key="altered2", default_class="/") == None
   126    assert t2.lookup("max_request_words", 77, default_key="altered2", default_class="/") == 77
   127
   128    assert t2.lookup("funk") == 8
   129    assert t2.lookup("funk", 77) == 8
   130
   131    assert t2.lookup("funk", default_class="test_resource") == 8
   132    assert t2.lookup("funk", 77, default_class="test_resource") == 8
   133    assert t2.lookup("funk", 77, default_class="test_resource2") == 77
   134
   135
   136if __name__ == "__main__":
   137    pytest.main(sys.argv)

View as plain text