feat: listener retry override, pool protocol filter, conn pool docs
- Per-listener `retries` overrides global default (0 = inherit) - Pool-level `allowed_protos` filters proxies during merge - Connection pooling documented in CHEATSHEET.md - Both features exposed in /config and /status API responses - 12 new tests (config parsing, API exposure, merge filtering) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -171,6 +171,46 @@ class TestProxyPoolMerge:
|
||||
assert pool.count == 1
|
||||
|
||||
|
||||
class TestProxyPoolAllowedProtos:
|
||||
"""Test pool-level proxy protocol filter."""
|
||||
|
||||
def test_allowed_protos_filters_merge(self):
|
||||
cfg = ProxyPoolConfig(sources=[], allowed_protos=["socks5"])
|
||||
pool = ProxyPool(cfg, [], timeout=10.0)
|
||||
proxies = [
|
||||
ChainHop(proto="socks5", host="1.2.3.4", port=1080),
|
||||
ChainHop(proto="http", host="5.6.7.8", port=8080),
|
||||
ChainHop(proto="socks4", host="9.9.9.9", port=1080),
|
||||
]
|
||||
pool._merge(proxies)
|
||||
assert pool.count == 1
|
||||
assert "socks5://1.2.3.4:1080" in pool._proxies
|
||||
|
||||
def test_allowed_protos_multiple(self):
|
||||
cfg = ProxyPoolConfig(sources=[], allowed_protos=["socks5", "http"])
|
||||
pool = ProxyPool(cfg, [], timeout=10.0)
|
||||
proxies = [
|
||||
ChainHop(proto="socks5", host="1.2.3.4", port=1080),
|
||||
ChainHop(proto="http", host="5.6.7.8", port=8080),
|
||||
ChainHop(proto="socks4", host="9.9.9.9", port=1080),
|
||||
]
|
||||
pool._merge(proxies)
|
||||
assert pool.count == 2
|
||||
assert "socks5://1.2.3.4:1080" in pool._proxies
|
||||
assert "http://5.6.7.8:8080" in pool._proxies
|
||||
assert "socks4://9.9.9.9:1080" not in pool._proxies
|
||||
|
||||
def test_empty_allowed_protos_accepts_all(self):
|
||||
cfg = ProxyPoolConfig(sources=[], allowed_protos=[])
|
||||
pool = ProxyPool(cfg, [], timeout=10.0)
|
||||
proxies = [
|
||||
ChainHop(proto="socks5", host="1.2.3.4", port=1080),
|
||||
ChainHop(proto="http", host="5.6.7.8", port=8080),
|
||||
]
|
||||
pool._merge(proxies)
|
||||
assert pool.count == 2
|
||||
|
||||
|
||||
class TestProxyPoolGet:
|
||||
"""Test proxy selection."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user