Skip to content

Commit

Permalink
Add basic tests for DNSPolicy health checks
Browse files Browse the repository at this point in the history
  • Loading branch information
averevki committed Nov 2, 2023
1 parent 91b33c3 commit 18b74eb
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 0 deletions.
Empty file.
28 changes: 28 additions & 0 deletions testsuite/tests/mgc/dnspolicy/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""Conftest for DNSPolicy tests"""
import pytest

from testsuite.openshift.objects.gateway_api.gateway import MGCGateway


@pytest.fixture(scope="module")
def upstream_gateway(request, openshift, blame, hostname, module_label):
"""Creates and returns configured and ready upstream Gateway with disabled tls"""
upstream_gateway = MGCGateway.create_instance(
openshift=openshift,
name=blame("mgc-gateway"),
gateway_class="kuadrant-multi-cluster-gateway-instance-per-cluster",
hostname=f"*.{hostname}",
tls=False,
placement="http-gateway",
labels={"app": module_label},
)
request.addfinalizer(upstream_gateway.delete)
upstream_gateway.commit()

return upstream_gateway


@pytest.fixture(scope="module")
def tls_policy():
"""Don't need TLSPolicy in the DNSPolicy only tests"""
return None
Empty file.
47 changes: 47 additions & 0 deletions testsuite/tests/mgc/dnspolicy/health_check/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""Conftest for DNSPolicy health checks"""
import time
import pytest

from testsuite.openshift.objects.gateway_api.gateway import MGCGateway
from testsuite.openshift.objects.dnspolicy import DNSPolicy


@pytest.fixture(scope="module")
def upstream_gateway(request, openshift, blame, module_label, initial_host):
"""
Creates and returns configured and ready upstream Gateway with FQDN hostname
Health checks available only with Fully Qualified Domain Names in gateway (no wildcards are allowed)
"""
upstream_gateway = MGCGateway.create_instance(
openshift=openshift,
name=blame("mgc-gateway"),
gateway_class="kuadrant-multi-cluster-gateway-instance-per-cluster",
hostname=initial_host,
tls=False,
placement="http-gateway",
labels={"app": module_label},
)
request.addfinalizer(upstream_gateway.delete)
upstream_gateway.commit()

return upstream_gateway


@pytest.fixture(scope="module")
def dns_policy(blame, upstream_gateway, module_label, health_check):
"""DNSPolicy with health check"""
policy = DNSPolicy.create_instance(
upstream_gateway.openshift,
blame("dns"),
upstream_gateway,
healthCheck=health_check,
labels={"app": module_label},
)
return policy


@pytest.fixture(scope="module")
def dns_health_probe(dns_policy, route): # pylint: disable=unused-argument
"""Wait for health check to start monitoring endpoint and return according DNSHealthCheckProbe object"""
time.sleep(10)
return dns_policy.get_dns_health_probe()
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""Tests for DNSPolicy health checks - healthy endpoint"""
import pytest

from testsuite.openshift.objects.dnspolicy import HealthCheck

pytestmark = [pytest.mark.mgc]


@pytest.fixture(scope="module")
def health_check():
"""Returns healthy endpoint specification for DNSPolicy health check"""
return HealthCheck(
allowInsecureCertificates=True,
endpoint="/get",
interval="5s",
port=80,
protocol="http",
)


def test_healthy_endpoint(dns_health_probe):
"""Test healthy endpoint check"""
assert dns_health_probe.is_healthy()
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""Tests for DNSPolicy health checks - unhealthy endpoint"""
import pytest

from testsuite.openshift.objects.dnspolicy import HealthCheck

pytestmark = [pytest.mark.mgc]


@pytest.fixture(scope="module")
def health_check():
"""Returns unhealthy endpoint specification for DNSPolicy health check"""
return HealthCheck(
allowInsecureCertificates=True,
endpoint="/unknown-endpoint",
interval="5s",
port=80,
protocol="http",
)


def test_unhealthy_endpoint(dns_health_probe):
"""Test unhealthy endpoint check"""
assert not dns_health_probe.is_healthy()

0 comments on commit 18b74eb

Please sign in to comment.