-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #261 from averevki/test-dns-health-check
Add basic tests for DNSPolicy health checks
- Loading branch information
Showing
9 changed files
with
169 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
"""Conftest for DNSPolicy health checks""" | ||
import time | ||
import pytest | ||
|
||
from testsuite.openshift.objects.gateway_api.gateway import MGCGateway | ||
|
||
|
||
@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(dns_policy, health_check): | ||
"""Add health check to DNSPolicy""" | ||
dns_policy.set_health_check(health_check) | ||
return dns_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() |
23 changes: 23 additions & 0 deletions
23
testsuite/tests/mgc/dnspolicy/health_check/test_healthy_endpoint.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
23 changes: 23 additions & 0 deletions
23
testsuite/tests/mgc/dnspolicy/health_check/test_unhealthy_endpoint.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |