forked from TrueCloudLab/frostfs-testlib
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
from abc import ABC, abstractmethod
|
|
|
|
from frostfs_testlib.load.k6 import K6
|
|
from frostfs_testlib.load.load_config import LoadParams
|
|
from frostfs_testlib.storage.cluster import ClusterNode
|
|
|
|
|
|
class ScenarioRunner(ABC):
|
|
@abstractmethod
|
|
def prepare(
|
|
self,
|
|
load_params: LoadParams,
|
|
cluster_nodes: list[ClusterNode],
|
|
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 get_k6_instances(self) -> list[K6]:
|
|
"""Get 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, soft_timeout: int = 0):
|
|
"""Wait until load is finished"""
|
|
|
|
@abstractmethod
|
|
def get_results(self) -> dict:
|
|
"""Get results from K6 run"""
|