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

Add unit tests for coriolis.conductor.* modules #293

Merged
merged 2 commits into from
Apr 3, 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
11 changes: 4 additions & 7 deletions coriolis/conductor/rpc/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -1704,7 +1704,7 @@ def report_migration_minions_allocation_error(
awaiting_minions_status = (
constants.EXECUTION_STATUS_AWAITING_MINION_ALLOCATIONS)
if migration.last_execution_status != awaiting_minions_status:
raise exception.InvalidReplicaState(
raise exception.InvalidMigrationState(
Dany9966 marked this conversation as resolved.
Show resolved Hide resolved
"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))
Expand Down Expand Up @@ -3291,19 +3291,16 @@ def confirm_task_cancellation(self, ctxt, task_id, cancellation_details):
"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):
Expand Down
34 changes: 34 additions & 0 deletions coriolis/tests/conductor/rpc/data/cancel_migration_config.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions coriolis/tests/conductor/rpc/data/confirm_task_cancellation.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 38 additions & 0 deletions coriolis/tests/conductor/rpc/data/update_replica_config.yml
Original file line number Diff line number Diff line change
@@ -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
Loading
Loading