Skip to content

Commit

Permalink
recording ui-session-id for report portal logging
Browse files Browse the repository at this point in the history
  • Loading branch information
omkarkhatavkar committed Nov 16, 2023
1 parent f10676e commit 2fa8683
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 11 deletions.
3 changes: 2 additions & 1 deletion pytest_fixtures/component/maintain.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ def module_stash(request):
@pytest.fixture(scope='module')
def sat_maintain(request, module_target_sat, module_capsule_configured):
if settings.remotedb.server:
yield Satellite(settings.remotedb.server)
sat = Satellite(settings.remotedb.server)
yield sat
else:
module_target_sat.register_to_cdn(pool_ids=settings.subscription.fm_rhn_poolid.split())
hosts = {'satellite': module_target_sat, 'capsule': module_capsule_configured}
Expand Down
2 changes: 1 addition & 1 deletion pytest_fixtures/core/sat_cap_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def resolve_deploy_args(args_dict):


@contextmanager
def _target_satellite_host(request, satellite_factory):
def _target_satellite_host(request, satellite_factory, record_property):
if 'sanity' not in request.config.option.markexpr:
new_sat = satellite_factory()
yield new_sat
Expand Down
3 changes: 2 additions & 1 deletion pytest_fixtures/core/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ def test_foo(session):
session.architecture.create({'name': 'bar'})
"""
return target_sat.ui_session(test_name, ui_user.login, ui_user.password)
with target_sat.ui_session(test_name, ui_user.login, ui_user.password) as session:
yield session


@pytest.fixture
Expand Down
28 changes: 20 additions & 8 deletions robottelo/hosts.py
Original file line number Diff line number Diff line change
Expand Up @@ -1726,6 +1726,7 @@ def __init__(self, hostname=None, **kwargs):
# create dummy classes for later population
self._api = type('api', (), {'_configured': False})
self._cli = type('cli', (), {'_configured': False})
self.record_property = None

def _swap_nailgun(self, new_version):
"""Install a different version of nailgun from GitHub and invalidate the module cache."""
Expand Down Expand Up @@ -1814,6 +1815,7 @@ def omit_credentials(self):
yield
self.omitting_credentials = False

@contextmanager
def ui_session(self, testname=None, user=None, password=None, url=None, login=True):
"""Initialize an airgun Session object and store it as self.ui_session"""

Expand All @@ -1826,14 +1828,24 @@ def get_caller():
if frame.function.startswith('test_'):
return frame.function

return Session(
session_name=testname or get_caller(),
user=user or settings.server.admin_username,
password=password or settings.server.admin_password,
url=url,
hostname=self.hostname,
login=login,
)
try:
ui_session = Session(
session_name=testname or get_caller(),
user=user or settings.server.admin_username,
password=password or settings.server.admin_password,
url=url,
hostname=self.hostname,
login=login,
)
yield ui_session
except Exception:
raise
finally:
video_url = settings.ui.grid_url.replace(
':4444', f'/videos/{ui_session.ui_session_id}.mp4'
)
self.record_property('video_url', video_url)
self.record_property('session_id', ui_session.ui_session_id)

@property
def satellite(self):
Expand Down
23 changes: 23 additions & 0 deletions tests/foreman/ui/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import pytest

from robottelo.hosts import Satellite


@pytest.fixture(autouse=True)
def ui_session_record_property(request, record_property):
"""
Autouse fixture to set the record_property attribute for Satellite instances in the test.
This fixture iterates over all fixtures in the current test node
(excluding the current fixture) and sets the record_property attribute
for instances of the Satellite class.
Args:
request: The pytest request object.
record_property: The value to set for the record_property attribute.
"""
for fixture in request.node.fixturenames:
if request.fixturename != fixture:
if isinstance(request.getfixturevalue(fixture), Satellite):
sat = request.getfixturevalue(fixture)
sat.record_property = record_property

0 comments on commit 2fa8683

Please sign in to comment.