Adding upstream version 1.1.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
f13b7abbd8
commit
77504588ab
196 changed files with 10121 additions and 3780 deletions
57
tests/benchmark/conftest.py
Normal file
57
tests/benchmark/conftest.py
Normal file
|
@ -0,0 +1,57 @@
|
|||
# Copyright (c) 2023-2024 Arista Networks, Inc.
|
||||
# Use of this source code is governed by the Apache License 2.0
|
||||
# that can be found in the LICENSE file.
|
||||
"""Fixtures for benchmarking ANTA."""
|
||||
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
import respx
|
||||
from _pytest.terminal import TerminalReporter
|
||||
|
||||
from anta.catalog import AntaCatalog
|
||||
|
||||
from .utils import AntaMockEnvironment
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
TEST_CASE_COUNT = None
|
||||
|
||||
|
||||
@pytest.fixture(name="anta_mock_env", scope="session") # We want this fixture to have a scope set to session to avoid reparsing all the unit tests data.
|
||||
def anta_mock_env_fixture() -> AntaMockEnvironment:
|
||||
"""Return an AntaMockEnvironment for this test session. Also configure respx to mock eAPI responses."""
|
||||
global TEST_CASE_COUNT # noqa: PLW0603
|
||||
eapi_route = respx.post(path="/command-api", headers={"Content-Type": "application/json-rpc"})
|
||||
env = AntaMockEnvironment()
|
||||
TEST_CASE_COUNT = env.tests_count
|
||||
eapi_route.side_effect = env.eapi_response
|
||||
return env
|
||||
|
||||
|
||||
@pytest.fixture # This fixture should have a scope set to function as the indexing result is stored in this object
|
||||
def catalog(anta_mock_env: AntaMockEnvironment) -> AntaCatalog:
|
||||
"""Fixture that return an ANTA catalog from the AntaMockEnvironment of this test session."""
|
||||
return anta_mock_env.catalog
|
||||
|
||||
|
||||
def pytest_terminal_summary(terminalreporter: TerminalReporter) -> None:
|
||||
"""Display the total number of ANTA unit test cases used to benchmark."""
|
||||
terminalreporter.write_sep("=", f"{TEST_CASE_COUNT} ANTA test cases")
|
||||
|
||||
|
||||
def pytest_generate_tests(metafunc: pytest.Metafunc) -> None:
|
||||
"""Parametrize inventory for benchmark tests."""
|
||||
if "inventory" in metafunc.fixturenames:
|
||||
for marker in metafunc.definition.iter_markers(name="parametrize"):
|
||||
if "inventory" in marker.args[0]:
|
||||
# Do not override test function parametrize marker for inventory arg
|
||||
return
|
||||
metafunc.parametrize(
|
||||
"inventory",
|
||||
[
|
||||
pytest.param({"count": 1, "disable_cache": True, "reachable": True}, id="1-device"),
|
||||
pytest.param({"count": 2, "disable_cache": True, "reachable": True}, id="2-devices"),
|
||||
],
|
||||
indirect=True,
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue