Skip to content

Commit 89dde47

Browse files
authored
fix: remove dependency on EDA_PODMAN_SOCKET_URL (#875)
1 parent 7400002 commit 89dde47

File tree

3 files changed

+63
-18
lines changed

3 files changed

+63
-18
lines changed

tests/integration/conftest.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import logging
1616
from typing import Any, Dict
17+
from unittest.mock import MagicMock, create_autospec
1718

1819
import pytest
1920
import redis
@@ -26,6 +27,7 @@
2627
)
2728
from aap_eda.core.tasking import Queue
2829
from aap_eda.core.utils.credentials import inputs_to_store
30+
from aap_eda.services.activation.engine.common import ContainerEngine
2931

3032
ADMIN_USERNAME = "test.admin"
3133
ADMIN_PASSWORD = "test.admin.123"
@@ -314,3 +316,8 @@ def default_gpg_credential(
314316
inputs=inputs_to_store({"gpg_public_key": DUMMY_GPG_KEY}),
315317
organization=default_organization,
316318
)
319+
320+
321+
@pytest.fixture
322+
def container_engine_mock() -> MagicMock:
323+
return create_autospec(ContainerEngine, instance=True)

tests/integration/services/activation/test_manager.py

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ def job_mock():
177177
def test_get_container_request(
178178
activation_with_instance: models.Activation,
179179
settings: SettingsWrapper,
180+
container_engine_mock: MagicMock,
180181
):
181182
"""Test build_cmdline."""
182183
override_settings = {
@@ -185,7 +186,10 @@ def test_get_container_request(
185186
"RULEBOOK_LIVENESS_CHECK_SECONDS": 73,
186187
}
187188
apply_settings(settings, **override_settings)
188-
activation_manager = ActivationManager(activation_with_instance)
189+
activation_manager = ActivationManager(
190+
activation_with_instance,
191+
container_engine=container_engine_mock,
192+
)
189193
request = activation_manager._get_container_request()
190194
assert isinstance(request, ContainerRequest)
191195
cmdline = request.cmdline
@@ -200,28 +204,40 @@ def test_get_container_request(
200204

201205

202206
@pytest.mark.django_db
203-
def test_get_container_request_no_instance(basic_activation):
207+
def test_get_container_request_no_instance(
208+
basic_activation, container_engine_mock
209+
):
204210
"""Test build_cmdline when no instance exists."""
205-
activation_manager = ActivationManager(basic_activation)
211+
activation_manager = ActivationManager(
212+
basic_activation, container_engine_mock
213+
)
206214
with pytest.raises(exceptions.ActivationManagerError):
207215
activation_manager._get_container_request()
208216

209217

210218
@pytest.mark.django_db
211-
def test_start_deleted_activation(activation_with_instance):
219+
def test_start_deleted_activation(
220+
activation_with_instance, container_engine_mock
221+
):
212222
"""Test start verb when activation is deleted."""
213-
activation_manager = ActivationManager(activation_with_instance)
223+
activation_manager = ActivationManager(
224+
activation_with_instance, container_engine_mock
225+
)
214226
activation_with_instance.delete()
215227
with pytest.raises(exceptions.ActivationStartError) as exc:
216228
activation_manager.start()
217229
assert "does not exist" in str(exc.value)
218230

219231

220232
@pytest.mark.django_db
221-
def test_start_disabled_activation(activation_with_instance, eda_caplog):
233+
def test_start_disabled_activation(
234+
activation_with_instance, eda_caplog, container_engine_mock
235+
):
222236
"""Test start verb when activation is deleted."""
223237
err_msg = "is disabled. Can not be started."
224-
activation_manager = ActivationManager(activation_with_instance)
238+
activation_manager = ActivationManager(
239+
activation_with_instance, container_engine_mock
240+
)
225241
activation_with_instance.is_enabled = False
226242
activation_with_instance.save(update_fields=["is_enabled"])
227243
with pytest.raises(exceptions.ActivationStartError) as exc:
@@ -232,12 +248,17 @@ def test_start_disabled_activation(activation_with_instance, eda_caplog):
232248

233249
@pytest.mark.django_db
234250
def test_start_no_awx_token(
235-
basic_activation, rulebook_with_job_template, preseed_credential_types
251+
basic_activation,
252+
rulebook_with_job_template,
253+
container_engine_mock,
254+
preseed_credential_types,
236255
):
237256
"""Test start verb when no AWX token is present."""
238257
basic_activation.rulebook = rulebook_with_job_template
239258
basic_activation.save(update_fields=["rulebook"])
240-
activation_manager = ActivationManager(basic_activation)
259+
activation_manager = ActivationManager(
260+
basic_activation, container_engine_mock
261+
)
241262
basic_activation.user.awxtoken_set.all().delete()
242263
with pytest.raises(exceptions.ActivationStartError) as exc:
243264
activation_manager.start()
@@ -249,9 +270,13 @@ def test_start_no_awx_token(
249270

250271

251272
@pytest.mark.django_db
252-
def test_start_no_decision_environment(basic_activation):
273+
def test_start_no_decision_environment(
274+
basic_activation, container_engine_mock
275+
):
253276
"""Test start verb when no decision environment is present."""
254-
activation_manager = ActivationManager(basic_activation)
277+
activation_manager = ActivationManager(
278+
basic_activation, container_engine_mock
279+
)
255280
basic_activation.decision_environment.delete()
256281
with pytest.raises(exceptions.ActivationStartError) as exc:
257282
activation_manager.start()
@@ -655,11 +680,14 @@ def test_start_max_running_activations(
655680
settings: SettingsWrapper,
656681
eda_caplog: LogCaptureFixture,
657682
job_mock: MagicMock,
683+
container_engine_mock: MagicMock,
658684
preseed_credential_types,
659685
):
660686
"""Test start verb when max running activations is reached."""
661687
apply_settings(settings, MAX_RUNNING_ACTIVATIONS=1)
662-
activation_manager = ActivationManager(basic_activation)
688+
activation_manager = ActivationManager(
689+
basic_activation, container_engine_mock
690+
)
663691

664692
with pytest.raises(exceptions.MaxRunningProcessesError), mock.patch(
665693
"aap_eda.services.activation.activation_manager.get_current_job",

tests/integration/tasks/test_orchestrator.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,21 @@ def test_manage_not_start(
154154
job_mock,
155155
activation,
156156
max_running_processes,
157+
container_engine_mock,
157158
):
158159
queue.push(
159160
ProcessParentType.ACTIVATION, activation.id, ActivationRequest.START
160161
)
161162

162163
with mock.patch(
163-
"aap_eda.services.activation.activation_manager.get_current_job",
164-
return_value=job_mock,
164+
"aap_eda.services.activation.activation_manager.new_container_engine",
165+
return_value=container_engine_mock,
165166
):
166-
orchestrator._manage(ProcessParentType.ACTIVATION, activation.id)
167+
with mock.patch(
168+
"aap_eda.services.activation.activation_manager.get_current_job",
169+
return_value=job_mock,
170+
):
171+
orchestrator._manage(ProcessParentType.ACTIVATION, activation.id)
167172

168173
start_mock.assert_not_called()
169174
assert (
@@ -255,6 +260,7 @@ def test_max_running_activation_after_start_job(
255260
job_mock,
256261
activation,
257262
max_running_processes,
263+
container_engine_mock,
258264
):
259265
"""Check if the max running processes error is handled correctly
260266
when the limit is reached after the request is started."""
@@ -277,10 +283,14 @@ def side_effect(*args, **kwargs):
277283
ProcessParentType.ACTIVATION, activation.id, ActivationRequest.START
278284
)
279285
with mock.patch(
280-
"aap_eda.services.activation.activation_manager.get_current_job",
281-
return_value=job_mock,
286+
"aap_eda.services.activation.activation_manager.new_container_engine",
287+
return_value=container_engine_mock,
282288
):
283-
orchestrator._manage(ProcessParentType.ACTIVATION, activation.id)
289+
with mock.patch(
290+
"aap_eda.services.activation.activation_manager.get_current_job",
291+
return_value=job_mock,
292+
):
293+
orchestrator._manage(ProcessParentType.ACTIVATION, activation.id)
284294
assert start_mock.call_count == 1
285295
running_processes = models.RulebookProcess.objects.filter(
286296
status__in=[ActivationStatus.STARTING, ActivationStatus.RUNNING]

0 commit comments

Comments
 (0)