57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
from abc import ABC, abstractmethod
|
|
|
|
from frostfs_testlib.load.load_config import LoadParams
|
|
from frostfs_testlib.shell.interfaces import Shell
|
|
from frostfs_testlib.storage.cluster import ClusterNode
|
|
from frostfs_testlib.storage.dataclasses.wallet import WalletInfo
|
|
|
|
|
|
class Loader(ABC):
|
|
@abstractmethod
|
|
def get_shell(self) -> Shell:
|
|
"""Get shell for the loader"""
|
|
|
|
@property
|
|
@abstractmethod
|
|
def ip(self):
|
|
"""Get address of the loader"""
|
|
|
|
|
|
class ScenarioRunner(ABC):
|
|
@abstractmethod
|
|
def prepare(
|
|
self,
|
|
load_params: LoadParams,
|
|
nodes_under_load: list[ClusterNode],
|
|
k6_dir: str,
|
|
):
|
|
"""Preparation steps before running the load"""
|
|
|
|
@abstractmethod
|
|
def init_k6_instances(self, load_params: LoadParams, endpoints: list[str], k6_dir: str):
|
|
"""Init K6 instances"""
|
|
|
|
@abstractmethod
|
|
def start(self):
|
|
"""Start K6 instances"""
|
|
|
|
@abstractmethod
|
|
def stop(self):
|
|
"""Stop K6 instances"""
|
|
|
|
@abstractmethod
|
|
def preset(self):
|
|
"""Run preset for load"""
|
|
|
|
@property
|
|
@abstractmethod
|
|
def is_running(self) -> bool:
|
|
"""Returns True if load is running at the moment"""
|
|
|
|
@abstractmethod
|
|
def wait_until_finish(self):
|
|
"""Wait until load is finished"""
|
|
|
|
@abstractmethod
|
|
def get_results(self) -> dict:
|
|
"""Get results from K6 run"""
|