aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorgalaxycrab <UgnineSirdis@ydb.tech>2022-07-08 10:56:19 +0300
committergalaxycrab <UgnineSirdis@ydb.tech>2022-07-08 10:56:19 +0300
commit3f5056deffaa871aa49c77d6bc14d0c49a6b60c2 (patch)
treefd0dbf540b1ea0a38fc5184ec9fccfe1e2c4b37f /library
parentd783e97de9fbfbbcec1ff6ef52c8c2515d9b3576 (diff)
downloadydb-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.h22
-rw-r--r--library/cpp/actors/http/http_proxy.cpp4
-rw-r--r--library/cpp/actors/http/http_proxy.h25
-rw-r--r--library/python/pytest/plugins/conftests.py4
-rw-r--r--library/python/pytest/plugins/ya.py3
-rw-r--r--library/python/testing/import_test/import_test.py12
-rw-r--r--library/python/testing/recipe/__init__.py10
-rw-r--r--library/python/testing/yatest_common/yatest/common/runtime.py32
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():