forked from TrueCloudLab/frostfs-testlib
[#185] Add prometheus load parameters
This commit is contained in:
parent
3fc3eaadf3
commit
f5a7ff5c90
3 changed files with 67 additions and 13 deletions
|
@ -94,16 +94,18 @@ def metadata_field(
|
|||
string_repr: Optional[bool] = True,
|
||||
distributed: Optional[bool] = False,
|
||||
formatter: Optional[Callable] = None,
|
||||
env_variable: Optional[str] = None,
|
||||
):
|
||||
return field(
|
||||
default=None,
|
||||
metadata={
|
||||
"applicable_scenarios": applicable_scenarios,
|
||||
"preset_argument": preset_param,
|
||||
"env_variable": scenario_variable,
|
||||
"scenario_variable": scenario_variable,
|
||||
"string_repr": string_repr,
|
||||
"distributed": distributed,
|
||||
"formatter": formatter,
|
||||
"env_variable": env_variable,
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -172,6 +174,20 @@ class Preset:
|
|||
local: Optional[bool] = metadata_field(grpc_preset_scenarios, "local", None, False)
|
||||
|
||||
|
||||
@dataclass
|
||||
class PrometheusParams:
|
||||
# Prometheus server URL
|
||||
server_url: Optional[str] = metadata_field(
|
||||
all_load_scenarios, env_variable="K6_PROMETHEUS_RW_SERVER_URL", string_repr=False
|
||||
)
|
||||
# Prometheus trend stats
|
||||
trend_stats: Optional[str] = metadata_field(
|
||||
all_load_scenarios, env_variable="K6_PROMETHEUS_RW_TREND_STATS", string_repr=False
|
||||
)
|
||||
# Additional tags
|
||||
metrics_tags: Optional[str] = metadata_field(all_load_scenarios, None, "METRIC_TAGS", False)
|
||||
|
||||
|
||||
@dataclass
|
||||
class LoadParams:
|
||||
# ------- CONTROL PARAMS -------
|
||||
|
@ -223,6 +239,10 @@ class LoadParams:
|
|||
fill_percent: Optional[float] = None
|
||||
# if set, the payload is generated on the fly and is not read into memory fully.
|
||||
streaming: Optional[int] = metadata_field(all_load_scenarios, None, "STREAMING", False)
|
||||
# Output format
|
||||
output: Optional[str] = metadata_field(all_load_scenarios, None, "K6_OUT", False)
|
||||
# Prometheus params
|
||||
prometheus: Optional[PrometheusParams] = None
|
||||
|
||||
# ------- COMMON SCENARIO PARAMS -------
|
||||
# Load time is the maximum duration for k6 to give load. Default is the BACKGROUND_LOAD_DEFAULT_TIME value.
|
||||
|
@ -339,6 +359,17 @@ class LoadParams:
|
|||
if self.preset:
|
||||
self.preset.pregen_json = os.path.join(self.working_dir, f"{load_id}_prepare.json")
|
||||
|
||||
def get_k6_vars(self):
|
||||
env_vars = {
|
||||
meta_field.metadata["scenario_variable"]: meta_field.value
|
||||
for meta_field in self._get_meta_fields(self)
|
||||
if self.scenario in meta_field.metadata["applicable_scenarios"]
|
||||
and meta_field.metadata["scenario_variable"]
|
||||
and meta_field.value is not None
|
||||
}
|
||||
|
||||
return env_vars
|
||||
|
||||
def get_env_vars(self):
|
||||
env_vars = {
|
||||
meta_field.metadata["env_variable"]: meta_field.value
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue