Browse Source

feat: apply pool maxsize for async as well

pull/651/head
Richard Nemeth 4 weeks ago
parent
commit
70042287a1
No known key found for this signature in database GPG Key ID: 21C39470DF3DEC39
  1. 10
      src/keycloak/connection.py
  2. 6
      tests/conftest.py
  3. 14
      tests/test_keycloak_admin.py
  4. 1
      tests/test_keycloak_openid.py

10
src/keycloak/connection.py

@ -123,7 +123,15 @@ class ConnectionManager:
if proxies: if proxies:
self._s.proxies.update(proxies) self._s.proxies.update(proxies)
self.async_s = httpx.AsyncClient(verify=verify, mounts=proxies, cert=cert)
self.async_s = httpx.AsyncClient(
verify=verify,
mounts=proxies,
cert=cert,
limits=httpx.Limits(
max_connections=100 if pool_maxsize is None else pool_maxsize,
max_keepalive_connections=20,
),
)
self.async_s.auth = None # don't let requests add auth headers self.async_s.auth = None # don't let requests add auth headers
self.async_s.transport = httpx.AsyncHTTPTransport(retries=1) self.async_s.transport = httpx.AsyncHTTPTransport(retries=1)

6
tests/conftest.py

@ -161,7 +161,6 @@ def admin(env: KeycloakTestEnv) -> KeycloakAdmin:
server_url=f"http://{env.keycloak_host}:{env.keycloak_port}", server_url=f"http://{env.keycloak_host}:{env.keycloak_port}",
username=env.keycloak_admin, username=env.keycloak_admin,
password=env.keycloak_admin_password, password=env.keycloak_admin_password,
pool_maxsize=5,
) )
@ -180,7 +179,6 @@ def admin_frozen(env: KeycloakTestEnv) -> KeycloakAdmin:
server_url=f"http://{env.keycloak_host}:{env.keycloak_port}", server_url=f"http://{env.keycloak_host}:{env.keycloak_port}",
username=env.keycloak_admin, username=env.keycloak_admin,
password=env.keycloak_admin_password, password=env.keycloak_admin_password,
pool_maxsize=5,
) )
@ -220,7 +218,6 @@ def oid(
server_url=f"http://{env.keycloak_host}:{env.keycloak_port}", server_url=f"http://{env.keycloak_host}:{env.keycloak_port}",
realm_name=realm, realm_name=realm,
client_id=client, client_id=client,
pool_maxsize=5,
) )
# Cleanup # Cleanup
admin.delete_client(client_id=client_id) admin.delete_client(client_id=client_id)
@ -282,7 +279,6 @@ def oid_with_credentials(
realm_name=realm, realm_name=realm,
client_id=client, client_id=client,
client_secret_key=secret, client_secret_key=secret,
pool_maxsize=5,
), ),
username, username,
password, password,
@ -358,7 +354,6 @@ def oid_with_credentials_authz(
realm_name=realm, realm_name=realm,
client_id=client, client_id=client,
client_secret_key=secret, client_secret_key=secret,
pool_maxsize=5,
), ),
username, username,
password, password,
@ -426,7 +421,6 @@ def oid_with_credentials_device(
realm_name=realm, realm_name=realm,
client_id=client, client_id=client,
client_secret_key=secret, client_secret_key=secret,
pool_maxsize=5,
), ),
username, username,
password, password,

14
tests/test_keycloak_admin.py

@ -75,20 +75,12 @@ def test_keycloak_admin_init(env: KeycloakTestEnv) -> None:
assert admin.connection.custom_headers is None, admin.connection.custom_headers assert admin.connection.custom_headers is None, admin.connection.custom_headers
assert admin.connection.pool_maxsize == 5, admin.connection.pool_maxsize assert admin.connection.pool_maxsize == 5, admin.connection.pool_maxsize
admin_default = KeycloakAdmin(
server_url=f"http://{env.keycloak_host}:{env.keycloak_port}",
username=env.keycloak_admin,
password=env.keycloak_admin_password,
)
assert admin_default.connection.pool_maxsize is None
admin = KeycloakAdmin( admin = KeycloakAdmin(
server_url=f"http://{env.keycloak_host}:{env.keycloak_port}", server_url=f"http://{env.keycloak_host}:{env.keycloak_port}",
username=env.keycloak_admin, username=env.keycloak_admin,
password=env.keycloak_admin_password, password=env.keycloak_admin_password,
realm_name=None, realm_name=None,
user_realm_name="master", user_realm_name="master",
pool_maxsize=5,
) )
assert admin.connection.token is None assert admin.connection.token is None
admin = KeycloakAdmin( admin = KeycloakAdmin(
@ -97,7 +89,6 @@ def test_keycloak_admin_init(env: KeycloakTestEnv) -> None:
password=env.keycloak_admin_password, password=env.keycloak_admin_password,
realm_name=None, realm_name=None,
user_realm_name=None, user_realm_name=None,
pool_maxsize=5,
) )
assert admin.connection.token is None assert admin.connection.token is None
@ -108,7 +99,6 @@ def test_keycloak_admin_init(env: KeycloakTestEnv) -> None:
token=token, token=token,
realm_name=None, realm_name=None,
user_realm_name=None, user_realm_name=None,
pool_maxsize=5,
) )
assert admin.connection.token == token assert admin.connection.token == token
@ -133,7 +123,6 @@ def test_keycloak_admin_init(env: KeycloakTestEnv) -> None:
user_realm_name="authz", user_realm_name="authz",
client_id="authz-client", client_id="authz-client",
client_secret_key=secret["value"], client_secret_key=secret["value"],
pool_maxsize=5,
) )
admin_auth.connection.refresh_token() admin_auth.connection.refresh_token()
assert admin_auth.connection.token is not None assert admin_auth.connection.token is not None
@ -146,7 +135,6 @@ def test_keycloak_admin_init(env: KeycloakTestEnv) -> None:
password=None, password=None,
client_secret_key=None, client_secret_key=None,
custom_headers={"custom": "header"}, custom_headers={"custom": "header"},
pool_maxsize=5,
).connection.token ).connection.token
is None is None
) )
@ -158,7 +146,6 @@ def test_keycloak_admin_init(env: KeycloakTestEnv) -> None:
realm_name="master", realm_name="master",
client_id="admin-cli", client_id="admin-cli",
verify=True, verify=True,
pool_maxsize=5,
) )
keycloak_admin = KeycloakAdmin(connection=keycloak_connection) keycloak_admin = KeycloakAdmin(connection=keycloak_connection)
keycloak_admin.connection.get_token() keycloak_admin.connection.get_token()
@ -3684,7 +3671,6 @@ async def test_a_realms(admin: KeycloakAdmin) -> None:
realms = await admin.a_get_realms() realms = await admin.a_get_realms()
assert len(realms) == 1, realms assert len(realms) == 1, realms
assert realms[0]["realm"] == "master" assert realms[0]["realm"] == "master"
assert admin.connection.pool_maxsize == 5, admin.connection.pool_maxsize
# Create a test realm # Create a test realm
res = await admin.a_create_realm(payload={"realm": "test"}) res = await admin.a_create_realm(payload={"realm": "test"})

1
tests/test_keycloak_openid.py

@ -585,7 +585,6 @@ async def test_a_well_known(oid: KeycloakOpenID) -> None:
res = await oid.a_well_known() res = await oid.a_well_known()
assert res is not None assert res is not None
assert res != {} assert res != {}
assert oid.connection.pool_maxsize == 5
for key in [ for key in [
"acr_values_supported", "acr_values_supported",
"authorization_encryption_alg_values_supported", "authorization_encryption_alg_values_supported",

Loading…
Cancel
Save