Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[6.15.z][Sanity Testing] Capsule Sanity Testing for capsule sync (#16558) #16798

Merged
merged 1 commit into from
Nov 11, 2024
Merged
Show file tree
Hide file tree
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
5 changes: 4 additions & 1 deletion pytest_fixtures/core/sat_cap_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,8 +199,11 @@ def large_capsule_configured(large_capsule_host, target_sat):
@pytest.fixture(scope='module')
def module_capsule_configured(request, module_capsule_host, module_target_sat):
"""Configure the capsule instance with the satellite from settings.server.hostname"""
if not request.config.option.n_minus:
if not any([request.config.option.n_minus, 'build_sanity' in request.config.option.markexpr]):
module_capsule_host.capsule_setup(sat_host=module_target_sat)
# The capsule is being set here by capsule installation test of `test_installer.py` for sanity
if 'build_sanity' in request.config.option.markexpr:
return Capsule.get_host_by_hostname(settings.capsule.hostname)
return module_capsule_host


Expand Down
8 changes: 7 additions & 1 deletion pytest_fixtures/core/xdist.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pytest

from robottelo.config import configure_airgun, configure_nailgun, settings
from robottelo.hosts import Satellite
from robottelo.hosts import Capsule, Satellite
from robottelo.logging import logger


Expand All @@ -16,6 +16,12 @@ def align_to_satellite(request, worker_id, satellite_factory):
if 'build_sanity' in request.config.option.markexpr:
settings.set("server.hostname", None)
yield
# Checkout Sanity Capsule finally
if settings.capsule.hostname:
sanity_cap = Capsule.get_host_by_hostname(settings.capsule.hostname)
sanity_cap.unregister()
Broker(hosts=[sanity_cap]).checkin()
# Checkout Sanity Satellite finally
if settings.server.hostname:
sanity_sat = Satellite(settings.server.hostname)
sanity_sat.unregister()
Expand Down
8 changes: 8 additions & 0 deletions robottelo/hosts.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from manifester import Manifester
from nailgun import entities
from packaging.version import Version
import pytest
import requests
from ssh2.exceptions import AuthenticationError
from wait_for import TimedOutError, wait_for
Expand Down Expand Up @@ -397,6 +398,13 @@ def setup(self):
def teardown(self):
logger.debug('START: tearing down host %s', self)
if not self.blank and not getattr(self, '_skip_context_checkin', False):
if (
hasattr(pytest, 'capsule_sanity')
and pytest.capsule_sanity is True
and type(self) is Capsule
):
logger.debug('END: Skipping tearing down caspule host %s for sanity', self)
return
self.unregister()
if type(self) is not Satellite: # do not delete Satellite's host record
self._delete_host_record()
Expand Down
2 changes: 2 additions & 0 deletions tests/foreman/api/test_capsulecontent.py
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,8 @@ def test_positive_iso_library_sync(
assert set(sat_isos) == set(caps_isos)

@pytest.mark.tier4
@pytest.mark.build_sanity
@pytest.mark.order(after="tests/foreman/installer/test_installer.py::test_capsule_installation")
@pytest.mark.skip_if_not_set('capsule', 'fake_manifest')
def test_positive_on_demand_sync(
self,
Expand Down
12 changes: 11 additions & 1 deletion tests/foreman/installer/test_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1555,7 +1555,7 @@ def sat_non_default_install(module_sat_ready_rhels):
ids=["un_auth_proxy"],
)
def test_capsule_installation(
sat_fapolicyd_install, cap_ready_rhel, module_sca_manifest, setting_update
pytestconfig, sat_fapolicyd_install, cap_ready_rhel, module_sca_manifest, setting_update
):
"""Run a basic Capsule installation with fapolicyd

Expand All @@ -1579,6 +1579,12 @@ def test_capsule_installation(

:customerscenario: true
"""
# Setup Capsule Hostname for further sanity caspule testing
if 'build_sanity' in pytestconfig.option.markexpr:
settings.capsule.hostname = cap_ready_rhel.hostname
cap_ready_rhel._skip_context_checkin = True
pytest.capsule_sanity = True

# Create testing organization
org = sat_fapolicyd_install.api.Organization().create()

Expand Down Expand Up @@ -1637,6 +1643,10 @@ def test_capsule_installation(
result = cap_ready_rhel.execute(r'grep -iR "error" /var/log/foreman-proxy/*')
assert len(result.stdout) == 0

# Enabling firewall
cap_ready_rhel.execute('firewall-cmd --add-service RH-Satellite-6-capsule')
cap_ready_rhel.execute('firewall-cmd --runtime-to-permanent')

result = cap_ready_rhel.cli.Health.check()
assert 'FAIL' not in result.stdout

Expand Down