|
6 | 6 | import mock |
7 | 7 | import pytest |
8 | 8 |
|
9 | | -from datadog_checks.base.utils.discovery import Discovery, Port, Service, candidate_ports |
| 9 | +from datadog_checks.base.utils.discovery import Discovery, Port, Service, candidate_ports, candidate_ports_by_name |
10 | 10 |
|
11 | 11 |
|
12 | 12 | def test_include_empty(): |
@@ -209,6 +209,70 @@ def test_candidate_ports_prefers_hints_and_deduplicates(): |
209 | 209 | ] |
210 | 210 |
|
211 | 211 |
|
| 212 | +def test_candidate_ports_by_name_only_yields_matching_ports(): |
| 213 | + service = Service( |
| 214 | + id='svc', |
| 215 | + host='127.0.0.1', |
| 216 | + ports=( |
| 217 | + Port(number=8080, name='http'), |
| 218 | + Port(number=9090, name='metrics'), |
| 219 | + Port(number=8081, name='admin'), |
| 220 | + ), |
| 221 | + ) |
| 222 | + |
| 223 | + assert list(candidate_ports_by_name(service, ['metrics', 'http-prom'])) == [Port(number=9090, name='metrics')] |
| 224 | + |
| 225 | + |
| 226 | +def test_candidate_ports_by_name_respects_name_priority(): |
| 227 | + service = Service( |
| 228 | + id='svc', |
| 229 | + host='127.0.0.1', |
| 230 | + ports=( |
| 231 | + Port(number=8080, name='bar'), |
| 232 | + Port(number=9090, name='foo'), |
| 233 | + Port(number=8081, name='bar'), |
| 234 | + Port(number=9091, name='foo'), |
| 235 | + ), |
| 236 | + ) |
| 237 | + |
| 238 | + assert list(candidate_ports_by_name(service, ['foo', 'bar'])) == [ |
| 239 | + Port(number=9090, name='foo'), |
| 240 | + Port(number=9091, name='foo'), |
| 241 | + Port(number=8080, name='bar'), |
| 242 | + Port(number=8081, name='bar'), |
| 243 | + ] |
| 244 | + |
| 245 | + |
| 246 | +def test_candidate_ports_by_name_does_not_fallback_to_other_ports(): |
| 247 | + service = Service( |
| 248 | + id='svc', |
| 249 | + host='127.0.0.1', |
| 250 | + ports=( |
| 251 | + Port(number=8080, name='http'), |
| 252 | + Port(number=8081, name='admin'), |
| 253 | + ), |
| 254 | + ) |
| 255 | + |
| 256 | + assert list(candidate_ports_by_name(service, ['metrics'])) == [] |
| 257 | + |
| 258 | + |
| 259 | +def test_candidate_ports_by_name_deduplicates_matching_port_numbers(): |
| 260 | + service = Service( |
| 261 | + id='svc', |
| 262 | + host='127.0.0.1', |
| 263 | + ports=( |
| 264 | + Port(number=8443, name='metrics'), |
| 265 | + Port(number=8443, name='http-metrics'), |
| 266 | + Port(number=9443, name='metrics'), |
| 267 | + ), |
| 268 | + ) |
| 269 | + |
| 270 | + assert list(candidate_ports_by_name(service, ['http-metrics', 'metrics'])) == [ |
| 271 | + Port(number=8443, name='http-metrics'), |
| 272 | + Port(number=9443, name='metrics'), |
| 273 | + ] |
| 274 | + |
| 275 | + |
212 | 276 | def test_dev_placeholder_field_constants_match_models(): |
213 | 277 | """Guard the one fact datadog_checks_dev must hand-copy from base. |
214 | 278 |
|
|
0 commit comments