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