Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 28 additions & 19 deletions health_monitoring/test_health_monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,44 +8,45 @@
from framework import templates, tester
from framework.parameterize import param, parameterize, parameterize_class
from helpers import tempesta, tf_cfg
from helpers.tf_cfg import cfg

__author__ = "Tempesta Technologies, Inc."
__copyright__ = "Copyright (C) 2022 Tempesta Technologies, Inc."
__license__ = "GPL2"

REQ_COUNT = 100
SERVER_IP = cfg.get("Server", "ip")

TEMPESTA_CONFIG = """
TEMPESTA_CONFIG = f"""

server_failover_http 404 50 5;
server_failover_http 502 50 5;
server_failover_http 403 50 5;
cache 0;

health_check h_monitor1 {
health_check h_monitor1 {{
request "GET / HTTP/1.1\r\n\r\n";
request_url "/";
resp_code 200;
resp_crc32 auto;
timeout 1;
}

}}

srv_group srv_grp1 {
server ${server_ip}:8080;
server ${server_ip}:8081;
server ${server_ip}:8082;
srv_group srv_grp1 {{
server {SERVER_IP}:8080;
server {SERVER_IP}:8081;
server {SERVER_IP}:8082;

health h_monitor1;
}
}}

vhost srv_grp1{
vhost srv_grp1 {{
proxy_pass srv_grp1;
}
}}

http_chain {
http_chain {{
-> srv_grp1;
}
}}
%s
"""

Expand Down Expand Up @@ -90,6 +91,10 @@
}
"""

TEMPESTA_CONFIG_INVALID = """
TEMPESTA_CONFIG_INVALID
"""


class TestHealthMonitor(tester.TempestaTest):
"""Test for health monitor functionality with stress option.
Expand All @@ -104,10 +109,6 @@ class TestHealthMonitor(tester.TempestaTest):
4. Now 403/404 backends are marked unhealthy and must be gone
"""

tempesta = {
"config": TEMPESTA_CONFIG % "",
}

backends = [
{
"id": "nginx1",
Expand Down Expand Up @@ -177,9 +178,17 @@ def run_curl(self, n=1):
res.append(int((curl.proc_results[0].decode("utf-8"))[:-1]))
return res

def test(self):
@parameterize.expand([param(name="reload", reload=True), param(name="no_reload", reload=False)])
def test(self, name, reload):
"""Test health monitor functionality with described stages"""
self.start_tempesta()
tempesta = self.get_tempesta()
tempesta.config.set_defconfig(TEMPESTA_CONFIG % "")
tempesta.start()

if reload:
self.oops_ignore = ["ERROR"]
tempesta.config.set_defconfig(TEMPESTA_CONFIG_INVALID)
tempesta.reload()

# 1
back1 = self.get_server("nginx1")
Expand Down