Skip to content

Commit 33ca1c7

Browse files
committed
Update slo architecture
1 parent 6db6c3c commit 33ca1c7

20 files changed

+888
-883
lines changed

tests/slo/src/core/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Core utilities
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class DummyMetrics:
2+
def start(self, labels):
3+
return 0
4+
5+
def stop(self, labels, start_time, attempts=1, error=None):
6+
pass
File renamed without changes.
File renamed without changes.

tests/slo/src/jobs.py

Lines changed: 0 additions & 337 deletions
This file was deleted.

tests/slo/src/jobs/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Job modules

tests/slo/src/jobs/base.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from abc import ABC, abstractmethod
2+
import logging
3+
import threading
4+
import time
5+
from ratelimiter import RateLimiter
6+
7+
logger = logging.getLogger(__name__)
8+
9+
10+
class BaseJobManager(ABC):
11+
def __init__(self, driver, args, metrics):
12+
self.driver = driver
13+
self.args = args
14+
self.metrics = metrics
15+
16+
@abstractmethod
17+
def run_tests(self):
18+
pass
19+
20+
def _run_metric_job(self):
21+
if not self.args.prom_pgw:
22+
return []
23+
24+
limiter = RateLimiter(max_calls=10**6 // self.args.report_period, period=1)
25+
26+
future = threading.Thread(
27+
name="slo_metrics_sender",
28+
target=self._metric_sender,
29+
args=(limiter, self.args.time),
30+
)
31+
future.start()
32+
return [future]
33+
34+
def _metric_sender(self, limiter, runtime):
35+
start_time = time.time()
36+
logger.info("Start push metrics")
37+
38+
while time.time() - start_time < runtime:
39+
with limiter:
40+
self.metrics.push()
41+
42+
logger.info("Stop push metrics")

0 commit comments

Comments
 (0)