From ab9fc33206a7dbc90770cd2a83c1a34160c1109a Mon Sep 17 00:00:00 2001 From: Claudiu Belu Date: Thu, 13 Aug 2026 09:17:33 +0000 Subject: [PATCH] tests: Various integration tests fixes - un-mock `_change_binary_se_context`, it is required for using certain Linux workers. - skip `test_list_destination_minion_pool_options` if the import provider does not support minion pools. - cancel running executions before deleting disks. --- coriolis/tests/integration/base.py | 30 ++++++-------------- coriolis/tests/integration/test_endpoints.py | 10 +++++++ 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/coriolis/tests/integration/base.py b/coriolis/tests/integration/base.py index 1964898c..23d93968 100644 --- a/coriolis/tests/integration/base.py +++ b/coriolis/tests/integration/base.py @@ -322,12 +322,9 @@ def setUp(self): # mock a few commands that are going to be ran through ssh; they won't # pass anyway. bkup = "coriolis.providers.backup_writers.HTTPBackupWriterBootstrapper" - repl = "coriolis.providers.replicator.Replicator" for prop in [ "coriolis.providers.backup_writers._disable_lvm2_lvmetad", f"{bkup}._add_firewalld_port", - f"{bkup}._change_binary_se_context", - f"{repl}._change_binary_se_context", ]: mocker = mock.patch(prop) mocker.start() @@ -352,28 +349,19 @@ def _cleanup_provider_dst_devices(self): ctxt = self._get_db_context() try: - transfer = db_api.get_transfer( - ctxt, self._transfer.id, include_task_info=True) - volumes_info = transfer.get("info", {}).get( - self._instance_name, {}).get('volumes_info', []) + executions = db_api.get_transfer_tasks_executions( + ctxt, self._transfer.id, sort_keys=["number"], + sort_dirs=["desc"], limit=1) + if executions: + self._cleanup_execution(self._transfer.id, executions[0].id) except Exception as ex: - LOG.warn("Could not get volumes info for cleanup. Ex: %s", ex) - return - - if not volumes_info: - LOG.info("No volume info. Nothing to cleanup.") - return + LOG.warn("Could not cancel execution during cleanup. Ex: %s", ex) try: - self._imp_provider.delete_replica_disks( - ctxt, - self._imp_conn_info, - self._imp_env_options, - volumes_info, - ) + deletion = self._client.transfers.delete_disks(self._transfer.id) + self.wait_for_execution(deletion.id, timeout=60) except Exception as ex: - LOG.warn( - "Could not clean up provider dst devices. Ex: %s", ex) + LOG.warn("Could not clean up provider dest devices. Ex: %s", ex) def _execute_and_wait(self, transfer_id, timeout=600): """Trigger one execution of *transfer_id* and wait for completion.""" diff --git a/coriolis/tests/integration/test_endpoints.py b/coriolis/tests/integration/test_endpoints.py index 7528f71a..bf705103 100644 --- a/coriolis/tests/integration/test_endpoints.py +++ b/coriolis/tests/integration/test_endpoints.py @@ -15,6 +15,9 @@ - endpoint_instances.list and endpoint_instances.get """ +import unittest + +from coriolis.providers import base as provider_base from coriolis.tests.integration import base @@ -97,6 +100,13 @@ def test_list_destination_options(self): len(options) > 0, "Expected at least one destination option") def test_list_destination_minion_pool_options(self): + if not isinstance( + self._imp_provider, + provider_base.BaseDestinationMinionPoolProvider): + raise unittest.SkipTest( + "Destination provider '%s' does not support minion pools" + % self._imp_platform) + options = self._client.endpoint_destination_minion_pool_options.list( self._dst_endpoint.id) self.assertIsInstance(options, list)