Break apart configuration group scenario tests

The configuration group scenario tests were broken into separate
parts to facilitate parallel runs in the gate.

Change-Id: Id6f4b0a4060d6c88e547b62e74f97df881cf4425
Partial-Bug: #1571092
This commit is contained in:
Peter Stachowski 2016-05-30 13:46:19 -04:00 committed by mariam john
parent 9147f9dd6b
commit a080a69c58
3 changed files with 123 additions and 67 deletions

View File

@ -150,6 +150,10 @@ incremental_backup_groups.extend([backup_group.GROUP_INCREMENTAL])
configuration_groups = list(instance_create_groups)
configuration_groups.extend([configuration_group.GROUP])
configuration_create_groups = list(base_groups)
configuration_create_groups.extend([configuration_group.GROUP_CFGGRP_CREATE,
configuration_group.GROUP_CFGGRP_DELETE])
database_actions_groups = list(instance_create_groups)
database_actions_groups.extend([database_actions_group.GROUP])
@ -184,6 +188,7 @@ register(["backup"], backup_groups)
register(["incremental_backup"], incremental_backup_groups)
register(["cluster"], cluster_actions_groups)
register(["configuration"], configuration_groups)
register(["configuration_create"], configuration_create_groups)
register(["database"], database_actions_groups)
register(["guest_log"], guest_log_groups)
register(["instance", "instance_actions"], instance_actions_groups)

View File

@ -21,6 +21,13 @@ from trove.tests.scenario.runners import test_runners
GROUP = "scenario.configuration_group"
GROUP_CFGGRP_CREATE = "scenario.cfggrp_create_group"
GROUP_CFGGRP_INST = "scenario.cfggrp_inst_group"
GROUP_CFGGRP_INST_CREATE = "scenario.cfggrp_inst_create_group"
GROUP_CFGGRP_INST_CREATE_WAIT = "scenario.cfggrp_inst_create_wait_group"
GROUP_CFGGRP_INST_DELETE = "scenario.cfggrp_inst_delete_group"
GROUP_CFGGRP_INST_DELETE_WAIT = "scenario.cfggrp_inst_delete_wait_group"
GROUP_CFGGRP_DELETE = "scenario.cfggrp_delete_group"
class ConfigurationRunnerFactory(test_runners.RunnerFactory):
@ -29,11 +36,12 @@ class ConfigurationRunnerFactory(test_runners.RunnerFactory):
_runner_cls = 'ConfigurationRunner'
@test(depends_on_groups=[instance_create_group.GROUP], groups=[GROUP])
class ConfigurationGroup(TestGroup):
@test(groups=[GROUP, GROUP_CFGGRP_CREATE])
class ConfigurationCreateGroup(TestGroup):
"""Test Configuration Group functionality."""
def __init__(self):
super(ConfigurationGroup, self).__init__(
super(ConfigurationCreateGroup, self).__init__(
ConfigurationRunnerFactory.instance())
@test
@ -56,20 +64,6 @@ class ConfigurationGroup(TestGroup):
"""Ensure delete bad group fails."""
self.test_runner.run_delete_bad_group_id()
@test
def attach_non_existent_group(self):
"""Ensure attach non-existent group fails."""
self.test_runner.run_attach_non_existent_group()
def attach_non_existent_group_to_non_existent_inst(self):
"""Ensure attach non-existent group to non-existent inst fails."""
self.test_runner.run_attach_non_existent_group_to_non_existent_inst()
@test
def detach_group_with_none_attached(self):
"""Test detach with none attached."""
self.test_runner.run_detach_group_with_none_attached()
@test
def create_dynamic_group(self):
"""Create a group with only dynamic entries."""
@ -80,16 +74,6 @@ class ConfigurationGroup(TestGroup):
"""Create a group with only non-dynamic entries."""
self.test_runner.run_create_non_dynamic_group()
@test(depends_on=[create_dynamic_group])
def attach_dynamic_group_to_non_existent_inst(self):
"""Ensure attach dynamic group to non-existent inst fails."""
self.test_runner.run_attach_dynamic_group_to_non_existent_inst()
@test(depends_on=[create_non_dynamic_group])
def attach_non_dynamic_group_to_non_existent_inst(self):
"""Ensure attach non-dynamic group to non-existent inst fails."""
self.test_runner.run_attach_non_dynamic_group_to_non_existent_inst()
@test(depends_on=[create_dynamic_group, create_non_dynamic_group])
def list_configuration_groups(self):
"""Test list configuration groups."""
@ -115,15 +99,49 @@ class ConfigurationGroup(TestGroup):
"""Ensure show non-dynamic fails with unauthorized user."""
self.test_runner.run_non_dynamic_conf_get_unauthorized_user()
@test(depends_on=[create_dynamic_group],
runs_after=[list_configuration_groups])
@test(depends_on_groups=[instance_create_group.GROUP,
GROUP_CFGGRP_CREATE],
groups=[GROUP, GROUP_CFGGRP_INST, GROUP_CFGGRP_INST_CREATE])
class ConfigurationInstCreateGroup(TestGroup):
"""Test Instance Configuration Group Create functionality."""
def __init__(self):
super(ConfigurationInstCreateGroup, self).__init__(
ConfigurationRunnerFactory.instance())
@test
def attach_non_existent_group(self):
"""Ensure attach non-existent group fails."""
self.test_runner.run_attach_non_existent_group()
@test
def attach_non_existent_group_to_non_existent_inst(self):
"""Ensure attach non-existent group to non-existent inst fails."""
self.test_runner.run_attach_non_existent_group_to_non_existent_inst()
@test
def detach_group_with_none_attached(self):
"""Test detach with none attached."""
self.test_runner.run_detach_group_with_none_attached()
@test
def attach_dynamic_group_to_non_existent_inst(self):
"""Ensure attach dynamic group to non-existent inst fails."""
self.test_runner.run_attach_dynamic_group_to_non_existent_inst()
@test
def attach_non_dynamic_group_to_non_existent_inst(self):
"""Ensure attach non-dynamic group to non-existent inst fails."""
self.test_runner.run_attach_non_dynamic_group_to_non_existent_inst()
@test
def list_dynamic_inst_conf_groups_before(self):
"""Count list instances for dynamic group before attach."""
self.test_runner.run_list_dynamic_inst_conf_groups_before()
@test(depends_on=[create_dynamic_group],
runs_after=[list_dynamic_inst_conf_groups_before,
attach_non_existent_group,
@test(depends_on=[list_dynamic_inst_conf_groups_before],
runs_after=[attach_non_existent_group,
detach_group_with_none_attached])
def attach_dynamic_group(self):
"""Test attach dynamic group."""
@ -158,20 +176,18 @@ class ConfigurationGroup(TestGroup):
"""Test update dynamic group."""
self.test_runner.run_update_dynamic_group()
@test(depends_on=[create_dynamic_group],
@test(depends_on=[attach_dynamic_group],
runs_after=[update_dynamic_group])
def detach_dynamic_group(self):
"""Test detach dynamic group."""
self.test_runner.run_detach_dynamic_group()
@test(depends_on=[create_non_dynamic_group],
runs_after=[detach_dynamic_group])
@test(runs_after=[detach_dynamic_group])
def list_non_dynamic_inst_conf_groups_before(self):
"""Count list instances for non-dynamic group before attach."""
self.test_runner.run_list_non_dynamic_inst_conf_groups_before()
@test(depends_on=[create_non_dynamic_group],
runs_after=[list_non_dynamic_inst_conf_groups_before,
@test(runs_after=[list_non_dynamic_inst_conf_groups_before,
attach_non_existent_group])
def attach_non_dynamic_group(self):
"""Test attach non-dynamic group."""
@ -200,8 +216,14 @@ class ConfigurationGroup(TestGroup):
"""Ensure deleting attached non-dynamic group fails."""
self.test_runner.run_delete_attached_non_dynamic_group()
@test(runs_after=[list_dynamic_inst_conf_groups_after,
list_non_dynamic_inst_conf_groups_after])
def create_instance_with_conf(self):
"""Test create instance with conf group."""
self.test_runner.run_create_instance_with_conf()
@test(depends_on=[attach_non_dynamic_group],
runs_after=[delete_attached_non_dynamic_group])
runs_after=[create_instance_with_conf])
def update_non_dynamic_group(self):
"""Test update non-dynamic group."""
self.test_runner.run_update_non_dynamic_group()
@ -212,15 +234,16 @@ class ConfigurationGroup(TestGroup):
"""Test detach non-dynamic group."""
self.test_runner.run_detach_non_dynamic_group()
@test(runs_after=[create_dynamic_group, create_non_dynamic_group,
update_dynamic_group, update_non_dynamic_group])
def create_instance_with_conf(self):
"""Test create instance with conf group."""
self.test_runner.run_create_instance_with_conf()
@test(depends_on=[create_instance_with_conf],
runs_after=[create_dynamic_group, create_non_dynamic_group,
update_dynamic_group, update_non_dynamic_group])
@test(depends_on_groups=[GROUP_CFGGRP_INST_CREATE],
groups=[GROUP, GROUP_CFGGRP_INST, GROUP_CFGGRP_INST_CREATE_WAIT])
class ConfigurationInstCreateWaitGroup(TestGroup):
"""Test that Instance Configuration Group Create Completes."""
def __init__(self):
super(ConfigurationInstCreateWaitGroup, self).__init__(
ConfigurationRunnerFactory.instance())
@test
def wait_for_conf_instance(self):
"""Test create instance with conf group completes."""
self.test_runner.run_wait_for_conf_instance()
@ -230,28 +253,53 @@ class ConfigurationGroup(TestGroup):
"""Verify configuration values on the instance."""
self.test_runner.run_verify_instance_values()
@test(depends_on=[wait_for_conf_instance],
runs_after=[verify_instance_values])
@test(depends_on_groups=[GROUP_CFGGRP_INST_CREATE_WAIT],
groups=[GROUP, GROUP_CFGGRP_INST, GROUP_CFGGRP_INST_DELETE])
class ConfigurationInstDeleteGroup(TestGroup):
"""Test Instance Configuration Group Delete functionality."""
def __init__(self):
super(ConfigurationInstDeleteGroup, self).__init__(
ConfigurationRunnerFactory.instance())
@test
def delete_conf_instance(self):
"""Test delete instance with conf group."""
self.test_runner.run_delete_conf_instance()
@test(depends_on=[create_dynamic_group],
runs_after=[list_configuration_groups, detach_dynamic_group,
dynamic_configuration_show,
dynamic_conf_get_unauthorized_user,
attach_dynamic_group_to_non_existent_inst,
delete_conf_instance])
@test(depends_on_groups=[GROUP_CFGGRP_INST_DELETE],
groups=[GROUP, GROUP_CFGGRP_INST, GROUP_CFGGRP_INST_DELETE_WAIT])
class ConfigurationInstDeleteWaitGroup(TestGroup):
"""Test that Instance Configuration Group Delete Completes."""
def __init__(self):
super(ConfigurationInstDeleteWaitGroup, self).__init__(
ConfigurationRunnerFactory.instance())
@test
def wait_for_delete_conf_instance(self):
"""Wait for delete instance with conf group to complete."""
self.test_runner.run_wait_for_delete_conf_instance()
@test(depends_on_groups=[GROUP_CFGGRP_CREATE],
runs_after_groups=[GROUP_CFGGRP_INST_DELETE_WAIT],
groups=[GROUP, GROUP_CFGGRP_DELETE])
class ConfigurationDeleteGroup(TestGroup):
"""Test Configuration Group Delete functionality."""
def __init__(self):
super(ConfigurationDeleteGroup, self).__init__(
ConfigurationRunnerFactory.instance())
@test
def delete_dynamic_group(self):
"""Test delete dynamic group."""
self.test_runner.run_delete_dynamic_group()
@test(depends_on=[create_non_dynamic_group],
runs_after=[list_configuration_groups, detach_non_dynamic_group,
non_dynamic_configuration_show,
non_dynamic_conf_get_unauthorized_user,
attach_non_dynamic_group_to_non_existent_inst,
delete_conf_instance])
@test
def delete_non_dynamic_group(self):
"""Test delete non-dynamic group."""
self.test_runner.run_delete_non_dynamic_group()

View File

@ -537,17 +537,20 @@ class ConfigurationRunner(TestRunner):
else:
raise SkipTest("No instance created with a configuration group.")
def run_delete_conf_instance(
self, expected_states=['SHUTDOWN'],
expected_http_code=202):
def run_delete_conf_instance(self, expected_http_code=202):
if self.config_inst_id:
self.assert_delete_conf_instance(
self.config_inst_id, expected_states, expected_http_code)
self.config_inst_id, expected_http_code)
else:
raise SkipTest("No instance created with a configuration group.")
def assert_delete_conf_instance(
self, instance_id, expected_state, expected_http_code):
def assert_delete_conf_instance(self, instance_id, expected_http_code):
self.auth_client.instances.delete(instance_id)
self.assert_client_code(expected_http_code)
self.assert_all_gone(instance_id, expected_state)
def run_wait_for_delete_conf_instance(
self, expected_last_state=['SHUTDOWN']):
if self.config_inst_id:
self.assert_all_gone(self.config_inst_id, expected_last_state)
else:
raise SkipTest("No instance created with a configuration group.")