feat(AsyncOpenSearch): consistent pool_maxsize setting (#845)
Signed-off-by: samypr100 <[email protected]>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# The OpenSearch Contributors require contributions made to
|
||||
# this file be licensed under the Apache-2.0 license or a
|
||||
# compatible open source license.
|
||||
#
|
||||
# Modifications Copyright OpenSearch Contributors. See
|
||||
# GitHub history for details.
|
||||
import os
|
||||
from typing import Type
|
||||
|
||||
import pytest
|
||||
from pytest import MarkDecorator
|
||||
|
||||
from opensearchpy import (
|
||||
AIOHttpConnection,
|
||||
AsyncConnection,
|
||||
AsyncHttpConnection,
|
||||
AsyncOpenSearch,
|
||||
)
|
||||
from opensearchpy._async.helpers.test import get_test_client
|
||||
|
||||
pytestmark: MarkDecorator = pytest.mark.asyncio
|
||||
|
||||
|
||||
class TestAIOHttp:
|
||||
|
||||
def test_default(self) -> None:
|
||||
client = AsyncOpenSearch()
|
||||
assert client.transport.connection_class == AIOHttpConnection
|
||||
assert client.transport.pool_maxsize is None
|
||||
|
||||
def test_connection_class(self) -> None:
|
||||
client = AsyncOpenSearch(connection_class=AsyncHttpConnection)
|
||||
assert client.transport.connection_class == AsyncHttpConnection
|
||||
assert client.transport.pool_maxsize is None
|
||||
|
||||
def test_pool_maxsize(self) -> None:
|
||||
client = AsyncOpenSearch(connection_class=AsyncHttpConnection, pool_maxsize=42)
|
||||
assert client.transport.connection_class == AsyncHttpConnection
|
||||
assert client.transport.pool_maxsize == 42
|
||||
|
||||
@pytest.mark.parametrize( # type: ignore[misc]
|
||||
"connection_class", [AIOHttpConnection, AsyncHttpConnection]
|
||||
)
|
||||
async def test_default_limit(self, connection_class: Type[AsyncConnection]) -> None:
|
||||
client = await get_test_client(
|
||||
connection_class=connection_class,
|
||||
verify_certs=False,
|
||||
http_auth=("admin", os.getenv("OPENSEARCH_PASSWORD", "admin")),
|
||||
)
|
||||
assert isinstance(
|
||||
client.transport.connection_pool.connections[0], connection_class
|
||||
)
|
||||
assert (
|
||||
client.transport.connection_pool.connections[0].session.connector.limit # type: ignore[attr-defined]
|
||||
== 10
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize( # type: ignore[misc]
|
||||
"connection_class", [AIOHttpConnection, AsyncHttpConnection]
|
||||
)
|
||||
async def test_custom_limit(self, connection_class: Type[AsyncConnection]) -> None:
|
||||
client = await get_test_client(
|
||||
connection_class=connection_class,
|
||||
verify_certs=False,
|
||||
pool_maxsize=42,
|
||||
http_auth=("admin", os.getenv("OPENSEARCH_PASSWORD", "admin")),
|
||||
)
|
||||
assert isinstance(
|
||||
client.transport.connection_pool.connections[0], connection_class
|
||||
)
|
||||
assert (
|
||||
client.transport.connection_pool.connections[0].session.connector.limit # type: ignore[attr-defined]
|
||||
== 42
|
||||
)
|
||||
Reference in New Issue
Block a user