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
|
@ -61,7 +61,7 @@ class K6:
|
|||
self._k6_dir: str = k6_dir
|
||||
|
||||
command = (
|
||||
f"{self._k6_dir}/k6 run {self._generate_env_variables()} "
|
||||
f"{self._generate_env_variables()}{self._k6_dir}/k6 run {self._generate_k6_variables()} "
|
||||
f"{self._k6_dir}/scenarios/{self.load_params.scenario.value}.js"
|
||||
)
|
||||
user = STORAGE_USER_NAME if self.load_params.scenario == LoadScenario.LOCAL else None
|
||||
|
@ -75,12 +75,12 @@ class K6:
|
|||
def _get_fill_percents(self):
|
||||
fill_percents = self.shell.exec("df -H --output=source,pcent,target | grep frostfs").stdout.split("\n")
|
||||
return [line.split() for line in fill_percents][:-1]
|
||||
|
||||
|
||||
def check_fill_percent(self):
|
||||
fill_percents = self._get_fill_percents()
|
||||
percent_mean = 0
|
||||
for line in fill_percents:
|
||||
percent_mean += float(line[1].split('%')[0])
|
||||
percent_mean += float(line[1].split("%")[0])
|
||||
percent_mean = percent_mean / len(fill_percents)
|
||||
logger.info(f"{self.loader.ip} mean fill percent is {percent_mean}")
|
||||
return percent_mean >= self.load_params.fill_percent
|
||||
|
@ -125,9 +125,9 @@ class K6:
|
|||
self.preset_output = result.stdout.strip("\n")
|
||||
return self.preset_output
|
||||
|
||||
@reporter.step("Generate K6 command")
|
||||
def _generate_env_variables(self) -> str:
|
||||
env_vars = self.load_params.get_env_vars()
|
||||
@reporter.step("Generate K6 variables")
|
||||
def _generate_k6_variables(self) -> str:
|
||||
env_vars = self.load_params.get_k6_vars()
|
||||
|
||||
env_vars[f"{self.load_params.load_type.value.upper()}_ENDPOINTS"] = ",".join(self.endpoints)
|
||||
env_vars["SUMMARY_JSON"] = self.summary_json
|
||||
|
@ -135,6 +135,14 @@ class K6:
|
|||
reporter.attach("\n".join(f"{param}: {value}" for param, value in env_vars.items()), "K6 ENV variables")
|
||||
return " ".join([f"-e {param}='{value}'" for param, value in env_vars.items() if value is not None])
|
||||
|
||||
@reporter.step("Generate env variables")
|
||||
def _generate_env_variables(self) -> str:
|
||||
env_vars = self.load_params.get_env_vars()
|
||||
if not env_vars:
|
||||
return ""
|
||||
reporter.attach("\n".join(f"{param}: {value}" for param, value in env_vars.items()), "ENV variables")
|
||||
return " ".join([f"{param}='{value}'" for param, value in env_vars.items() if value is not None]) + " "
|
||||
|
||||
def get_start_time(self) -> datetime:
|
||||
return datetime.fromtimestamp(self._k6_process.start_time())
|
||||
|
||||
|
@ -188,23 +196,25 @@ class K6:
|
|||
wait_interval = min_wait_interval
|
||||
if self._k6_process is None:
|
||||
assert "No k6 instances were executed"
|
||||
|
||||
|
||||
while timeout > 0:
|
||||
if not self.load_params.fill_percent is None:
|
||||
with reporter.step(f"Check the percentage of filling of all data disks on the node"):
|
||||
if self.check_fill_percent():
|
||||
logger.info(f"Stopping load on because disks is filled more then {self.load_params.fill_percent}%")
|
||||
logger.info(
|
||||
f"Stopping load on because disks is filled more then {self.load_params.fill_percent}%"
|
||||
)
|
||||
event.set()
|
||||
self.stop()
|
||||
return
|
||||
|
||||
|
||||
if event.is_set():
|
||||
self.stop()
|
||||
return
|
||||
|
||||
|
||||
if not self._k6_process.running():
|
||||
return
|
||||
|
||||
|
||||
remaining_time_hours = f"{timeout//3600}h" if timeout // 3600 != 0 else ""
|
||||
remaining_time_minutes = f"{timeout//60%60}m" if timeout // 60 % 60 != 0 else ""
|
||||
logger.info(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue