2
0
Эх сурвалжийг харах

Add tests for `coriolis.conductor.rpc.server` module

Cristian Matiut 2 жил өмнө
parent
commit
80d7ce0a80

+ 4 - 7
coriolis/conductor/rpc/server.py

@@ -1704,7 +1704,7 @@ class ConductorServerEndpoint(object):
         awaiting_minions_status = (
             constants.EXECUTION_STATUS_AWAITING_MINION_ALLOCATIONS)
         if migration.last_execution_status != awaiting_minions_status:
-            raise exception.InvalidReplicaState(
+            raise exception.InvalidMigrationState(
                 "Migration is in '%s' status instead of the expected '%s' to "
                 "have minion machines allocations fail for it." % (
                     migration.last_execution_status, awaiting_minions_status))
@@ -3291,19 +3291,16 @@ class ConductorServerEndpoint(object):
                 "NOT altering state of finalized task '%s' ('%s') following "
                 "confirmation of cancellation. Updating its exception "
                 "details though: %s", task.id, task.status, exception_details)
-            db_api.set_task_status(
-                ctxt, task.id, final_status,
-                exception_details=exception_details)
         else:
             LOG.info(
                 "Transitioning canceled task '%s' from '%s' to '%s' following "
                 "confirmation of its cancellation.",
                 task.id, task.status, final_status)
-            db_api.set_task_status(
-                ctxt, task.id, final_status,
-                exception_details=exception_details)
             execution = db_api.get_tasks_execution(ctxt, task.execution_id)
             self._advance_execution_state(ctxt, execution, requery=False)
+        db_api.set_task_status(
+            ctxt, task.id, final_status,
+            exception_details=exception_details)
 
     @parent_tasks_execution_synchronized
     def set_task_error(self, ctxt, task_id, exception_details):

+ 34 - 0
coriolis/tests/conductor/rpc/data/cancel_migration_config.yml

@@ -0,0 +1,34 @@
+- config:
+    force: False
+    execution_statuses: [EXECUTION_STATUS_RUNNING]
+  raises_exception: False
+
+- config:
+    force: False
+    execution_statuses: []
+  raises_exception: True
+
+- config:
+    force: False
+    execution_statuses: [EXECUTION_STATUS_COMPLETED]
+  raises_exception: True
+
+- config:
+    force: True
+    execution_statuses: [EXECUTION_STATUS_CANCELLING]
+  raises_exception: False
+
+- config:
+    force: False
+    execution_statuses: [EXECUTION_STATUS_CANCELLING]
+  raises_exception: True
+
+- config:
+    force: False
+    execution_statuses: [EXECUTION_STATUS_AWAITING_MINION_ALLOCATIONS]
+  raises_exception: False
+
+- config:
+    force: True
+    execution_statuses: [EXECUTION_STATUS_RUNNING, EXECUTION_STATUS_CANCELLING, EXECUTION_STATUS_AWAITING_MINION_ALLOCATIONS]
+  raises_exception: True

+ 19 - 0
coriolis/tests/conductor/rpc/data/confirm_task_cancellation.yml

@@ -0,0 +1,19 @@
+- task_status: TASK_STATUS_CANCELLING_AFTER_COMPLETION
+  expected_final_status: TASK_STATUS_CANCELED
+  expected_advance_execution_state_call: True
+
+- task_status: TASK_STATUS_FORCE_CANCELED
+  expected_final_status: TASK_STATUS_FORCE_CANCELED
+  expected_advance_execution_state_call: False
+
+- task_status: TASK_STATUS_FAILED_TO_CANCEL
+  expected_final_status: TASK_STATUS_CANCELED
+  expected_advance_execution_state_call: True
+
+- task_status: TASK_STATUS_COMPLETED
+  expected_final_status: TASK_STATUS_COMPLETED
+  expected_advance_execution_state_call: False
+
+- task_status: EXECUTION_STATUS_RUNNING
+  expected_final_status: TASK_STATUS_CANCELED
+  expected_advance_execution_state_call: True

+ 38 - 0
coriolis/tests/conductor/rpc/data/update_replica_config.yml

@@ -0,0 +1,38 @@
+- config:
+    replica:
+      instances: ['mock_instance_1', 'mock_instance_2']
+      info:
+        mock_instance_1: {}
+        mock_instance_2: {}
+    updated_properties:
+      origin_minion_pool_id: "mock_origin_minion_pool_id"
+      destination_minion_pool_id: "mock_destination_minion_pool_id"
+      instance_osmorphing_minion_pool_mappings:
+        mock_instance_1: "mock_pool"
+        mock_instance_2: "mock_pool"
+      user_scripts: "mock_user_scripts"
+      instances: ['mock_instance_1', 'mock_instance_2']
+      destination_environment:
+        network_map: "mock_network_map"
+  has_updated_values: True
+  has_replica_instance: True
+
+- config:
+    replica: {}
+    updated_properties:
+      origin_minion_pool_id: "mock_origin_minion_pool_id"
+      destination_minion_pool_id: "mock_destination_minion_pool_id"
+      instance_osmorphing_minion_pool_mappings:
+        mock_instance_1: "mock_pool"
+        mock_instance_2: "mock_pool"
+      user_scripts: "mock_user_scripts"
+      destination_environment:
+        network_map: "mock_network_map"
+  has_updated_values: True
+  has_replica_instance: False
+
+- config:
+    replica: {}
+    updated_properties: {}
+  has_updated_values: False
+  has_replica_instance: False

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 1182 - 104
coriolis/tests/conductor/rpc/test_server.py


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно