impuls/lib/python3.11/site-packages/pymemcache/test/conftest.py
2023-11-06 16:54:45 +01:00

117 lines
2.9 KiB
Python

import os.path
import socket
import ssl
import pytest
def pytest_addoption(parser):
parser.addoption(
"--server", action="store", default="localhost", help="memcached server"
)
parser.addoption(
"--port", action="store", default="11211", help="memcached server port"
)
parser.addoption(
"--tls-server", action="store", default="localhost", help="TLS memcached server"
)
parser.addoption(
"--tls-port", action="store", default="11212", help="TLS memcached server port"
)
parser.addoption(
"--size", action="store", default=1024, help="size of data in benchmarks"
)
parser.addoption(
"--count",
action="store",
default=10000,
help="number of iterations to run each benchmark",
)
parser.addoption(
"--keys",
action="store",
default=20,
help="number of keys to use for multi benchmarks",
)
@pytest.fixture(scope="session")
def host(request):
return request.config.option.server
@pytest.fixture(scope="session")
def port(request):
return int(request.config.option.port)
@pytest.fixture(scope="session")
def tls_host(request):
return request.config.option.tls_server
@pytest.fixture(scope="session")
def tls_port(request):
return int(request.config.option.tls_port)
@pytest.fixture(scope="session")
def size(request):
return int(request.config.option.size)
@pytest.fixture(scope="session")
def count(request):
return int(request.config.option.count)
@pytest.fixture(scope="session")
def keys(request):
return int(request.config.option.keys)
@pytest.fixture(scope="session")
def pairs(size, keys):
return {"pymemcache_test:%d" % i: "X" * size for i in range(keys)}
@pytest.fixture(scope="session")
def tls_context():
return ssl.create_default_context(
cafile=os.path.join(os.path.dirname(__file__), "certs/ca-root.crt")
)
def pytest_generate_tests(metafunc):
if "socket_module" in metafunc.fixturenames:
socket_modules = [socket]
try:
from gevent import socket as gevent_socket # type: ignore
except ImportError:
print("Skipping gevent (not installed)")
else:
socket_modules.append(gevent_socket)
metafunc.parametrize("socket_module", socket_modules)
if "client_class" in metafunc.fixturenames:
from pymemcache.client.base import Client, PooledClient
from pymemcache.client.hash import HashClient
class HashClientSingle(HashClient):
def __init__(self, server, *args, **kwargs):
super().__init__([server], *args, **kwargs)
metafunc.parametrize("client_class", [Client, PooledClient, HashClientSingle])
if "key_prefix" in metafunc.fixturenames:
mark = metafunc.definition.get_closest_marker("parametrize")
if not mark or "key_prefix" not in mark.args[0]:
metafunc.parametrize("key_prefix", [b"", b"prefix"])