diff options
author | galaxycrab <UgnineSirdis@ydb.tech> | 2022-07-08 10:56:19 +0300 |
---|---|---|
committer | galaxycrab <UgnineSirdis@ydb.tech> | 2022-07-08 10:56:19 +0300 |
commit | 3f5056deffaa871aa49c77d6bc14d0c49a6b60c2 (patch) | |
tree | fd0dbf540b1ea0a38fc5184ec9fccfe1e2c4b37f /library | |
parent | d783e97de9fbfbbcec1ff6ef52c8c2515d9b3576 (diff) | |
download | ydb-3f5056deffaa871aa49c77d6bc14d0c49a6b60c2.tar.gz |
Create kesuses for rate limiting in YQ
Fill config in kikimr runner
Create coordination nodes
Pass to config
Protos
Diffstat (limited to 'library')
-rw-r--r-- | library/cpp/actors/http/http.h | 22 | ||||
-rw-r--r-- | library/cpp/actors/http/http_proxy.cpp | 4 | ||||
-rw-r--r-- | library/cpp/actors/http/http_proxy.h | 25 | ||||
-rw-r--r-- | library/python/pytest/plugins/conftests.py | 4 | ||||
-rw-r--r-- | library/python/pytest/plugins/ya.py | 3 | ||||
-rw-r--r-- | library/python/testing/import_test/import_test.py | 12 | ||||
-rw-r--r-- | library/python/testing/recipe/__init__.py | 10 | ||||
-rw-r--r-- | library/python/testing/yatest_common/yatest/common/runtime.py | 32 |
8 files changed, 81 insertions, 31 deletions
diff --git a/library/cpp/actors/http/http.h b/library/cpp/actors/http/http.h index 318000389c0..295b8f97b5c 100644 --- a/library/cpp/actors/http/http.h +++ b/library/cpp/actors/http/http.h @@ -54,6 +54,27 @@ struct TEqNoCase { } }; +struct TSensors { + TString Direction; + TString Host; + TString Url; + TString Status; + TDuration Time; + + TSensors( + TStringBuf direction, + TStringBuf host, + TStringBuf url, + TStringBuf status, + TDuration time) + : Direction(direction) + , Host(host) + , Url(url) + , Status(status) + , Time(time) + {} +}; + struct TUrlParameters { THashMap<TStringBuf, TStringBuf> Parameters; @@ -840,6 +861,7 @@ public: // it's temporary accessible for cleanup //protected: THttpIncomingRequestPtr Request; + std::unique_ptr<TSensors> Sensors; }; } diff --git a/library/cpp/actors/http/http_proxy.cpp b/library/cpp/actors/http/http_proxy.cpp index 394cb17bd3a..7cf83d38d88 100644 --- a/library/cpp/actors/http/http_proxy.cpp +++ b/library/cpp/actors/http/http_proxy.cpp @@ -260,6 +260,10 @@ TEvHttpProxy::TEvReportSensors* BuildOutgoingRequestSensors(const THttpOutgoingR } TEvHttpProxy::TEvReportSensors* BuildIncomingRequestSensors(const THttpIncomingRequestPtr& request, const THttpOutgoingResponsePtr& response) { + const auto& sensors = response->Sensors; + if (sensors) { + return new TEvHttpProxy::TEvReportSensors(*sensors); + } return new TEvHttpProxy::TEvReportSensors( "in", request->Host, diff --git a/library/cpp/actors/http/http_proxy.h b/library/cpp/actors/http/http_proxy.h index b95954e5614..0ed09119e43 100644 --- a/library/cpp/actors/http/http_proxy.h +++ b/library/cpp/actors/http/http_proxy.h @@ -20,7 +20,7 @@ struct TSocketDescriptor : NActors::TSharedDescriptor, THttpConfig { SocketType Socket; TSocketDescriptor() = default; - + TSocketDescriptor(int af) : Socket(af) { @@ -213,24 +213,11 @@ struct TEvHttpProxy { {} }; - struct TEvReportSensors : NActors::TEventLocal<TEvReportSensors, EvReportSensors> { - TString Direction; - TString Host; - TString Url; - TString Status; - TDuration Time; - - TEvReportSensors( - TStringBuf direction, - TStringBuf host, - TStringBuf url, - TStringBuf status, - TDuration time) - : Direction(direction) - , Host(host) - , Url(url) - , Status(status) - , Time(time) + struct TEvReportSensors : TSensors, NActors::TEventLocal<TEvReportSensors, EvReportSensors> { + using TSensors::TSensors; + + TEvReportSensors(const TSensors& sensors) + : TSensors(sensors) {} }; }; diff --git a/library/python/pytest/plugins/conftests.py b/library/python/pytest/plugins/conftests.py index 3c855c9c113..2ea36ae4c21 100644 --- a/library/python/pytest/plugins/conftests.py +++ b/library/python/pytest/plugins/conftests.py @@ -3,7 +3,10 @@ import importlib import sys import inspect +import yatest.common as yc + from pytest import hookimpl +from yatest_lib.ya import Ya from .fixtures import metrics, links # noqa @@ -23,6 +26,7 @@ conftest_modules = [] @hookimpl(trylast=True) def pytest_load_initial_conftests(early_config, parser, args): + yc.runtime._set_ya_config(ya=Ya()) conftests = filter(lambda name: name.endswith(".conftest"), sys.extra_modules) def conftest_key(name): diff --git a/library/python/pytest/plugins/ya.py b/library/python/pytest/plugins/ya.py index 5b48ab775df..715d24ce5b9 100644 --- a/library/python/pytest/plugins/ya.py +++ b/library/python/pytest/plugins/ya.py @@ -30,6 +30,7 @@ import _pytest.skipping from _pytest.warning_types import PytestUnhandledCoroutineWarning from yatest_lib import test_splitter +import yatest.common as yatest_common try: import resource @@ -283,6 +284,8 @@ def pytest_configure(config): if config.option.pdb_on_sigusr1: configure_pdb_on_demand() + yatest_common.runtime._set_ya_config(config=config) + # Dump python backtrace in case of any errors faulthandler.enable() if hasattr(signal, "SIGQUIT"): diff --git a/library/python/testing/import_test/import_test.py b/library/python/testing/import_test/import_test.py index 5290ae3cae5..114723a4c6a 100644 --- a/library/python/testing/import_test/import_test.py +++ b/library/python/testing/import_test/import_test.py @@ -11,6 +11,15 @@ import __res from __res import importer +def setup_test_environment(): + try: + from yatest_lib.ya import Ya + import yatest.common as yc + yc.runtime._set_ya_config(ya=Ya()) + except ImportError: + pass + + def check_imports(no_check=(), extra=(), skip_func=None, py_main=None): """ tests all bundled modules are importable @@ -18,6 +27,7 @@ def check_imports(no_check=(), extra=(), skip_func=None, py_main=None): "PEERDIR(library/python/import_test)" to your CMakeLists.txt and "from import_test import test_imports" to your python test source file. """ + str_ = lambda s: s if not isinstance(b'', str): str_ = lambda s: s.decode('UTF-8') @@ -99,6 +109,8 @@ test_imports = check_imports def main(): + setup_test_environment() + skip_names = sys.argv[1:] try: diff --git a/library/python/testing/recipe/__init__.py b/library/python/testing/recipe/__init__.py index 5ef9c5c1895..5f48628ad38 100644 --- a/library/python/testing/recipe/__init__.py +++ b/library/python/testing/recipe/__init__.py @@ -8,6 +8,8 @@ import argparse from yatest_lib.ya import Ya +import yatest.common as yc + RECIPE_START_OPTION = "start" RECIPE_STOP_OPTION = "stop" @@ -16,6 +18,13 @@ collect_cores = None sanitizer_extra_checks = None +class Config: + def __init__(self): + self.ya = ya + self.collect_cores = collect_cores + self.sanitizer_extra_checks = sanitizer_extra_checks + + def _setup_logging(level=logging.DEBUG): root_logger = logging.getLogger() root_logger.setLevel(level) @@ -60,6 +69,7 @@ def get_options(): os.environ[envvar] = os.environ[envvar + '_ORIGINAL'] collect_cores = args.collect_cores + yc.runtime._set_ya_config(config=Config()) for recipe_option in RECIPE_START_OPTION, RECIPE_STOP_OPTION: if recipe_option in opts: return args, opts[opts.index(recipe_option):] diff --git a/library/python/testing/yatest_common/yatest/common/runtime.py b/library/python/testing/yatest_common/yatest/common/runtime.py index 6e6c3c87591..b8d5964d1d2 100644 --- a/library/python/testing/yatest_common/yatest/common/runtime.py +++ b/library/python/testing/yatest_common/yatest/common/runtime.py @@ -9,22 +9,30 @@ import six _lock = threading.Lock() +_config = None + + +def _set_ya_config(config=None, ya=None): + global _config + if config: + _config = config + elif ya: + class Config: + def __init__(self): + self.ya = None + _config = Config() + _config.ya = ya + def _get_ya_config(): - try: - import library.python.pytest.plugins.ya as ya_plugin - if ya_plugin.pytest_config is not None: - return ya_plugin.pytest_config - import pytest - return pytest.config - except (ImportError, AttributeError): + if _config: + return _config + else: try: - import library.python.testing.recipe - if library.python.testing.recipe.ya: - return library.python.testing.recipe + import pytest + return pytest.config except (ImportError, AttributeError): - pass - raise NotImplementedError("yatest.common.* is only available from the testing runtime") + raise NotImplementedError("yatest.common.* is only available from the testing runtime") def _get_ya_plugin_instance(): |