602c4d42de
- Execute test groups in serial to make sure no more than 2 database instance are created at the same time. - Remove some unneccesary tests - Remove unneeded datastore, e.g. 'Test_Datastore_1' - Remove unsupported trovestack subcommands - Move unsupported DIB elements to the 'deprecated-elements' folder - Decrease default value of 'agent_call_high_timeout' to 5min - Add initial_deplay for pooling task - Use socket file to connect with database instead of using localhost IP Change-Id: Ie5030a671fbeb453eafa6cbe04e08da7b52e33c9
339 lines
11 KiB
Python
339 lines
11 KiB
Python
# Copyright 2014 OpenStack Foundation
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import proboscis
|
|
|
|
from trove import tests
|
|
from trove.tests.scenario import groups
|
|
from trove.tests.scenario.groups import backup_group
|
|
from trove.tests.scenario.groups import cluster_group
|
|
from trove.tests.scenario.groups import configuration_group
|
|
from trove.tests.scenario.groups import database_actions_group
|
|
from trove.tests.scenario.groups import guest_log_group
|
|
from trove.tests.scenario.groups import instance_actions_group
|
|
from trove.tests.scenario.groups import instance_create_group
|
|
from trove.tests.scenario.groups import instance_delete_group
|
|
from trove.tests.scenario.groups import instance_error_create_group
|
|
from trove.tests.scenario.groups import instance_force_delete_group
|
|
from trove.tests.scenario.groups import instance_upgrade_group
|
|
from trove.tests.scenario.groups import module_group
|
|
from trove.tests.scenario.groups import replication_group
|
|
from trove.tests.scenario.groups import root_actions_group
|
|
from trove.tests.scenario.groups import user_actions_group
|
|
|
|
|
|
def build_group(*groups):
|
|
def merge(collection, *items):
|
|
for item in items:
|
|
if isinstance(item, list):
|
|
merge(collection, *item)
|
|
else:
|
|
if item not in collection:
|
|
collection.append(item)
|
|
|
|
out = []
|
|
merge(out, *groups)
|
|
return out
|
|
|
|
|
|
def register(group_names, *test_groups, **kwargs):
|
|
if kwargs:
|
|
register(group_names, kwargs.values())
|
|
for suffix, grp_set in kwargs.items():
|
|
# Recursively call without the kwargs
|
|
register([name + '_' + suffix for name in group_names], *grp_set)
|
|
return
|
|
|
|
# Do the actual registration here
|
|
proboscis.register(groups=build_group(group_names),
|
|
depends_on_groups=build_group(*test_groups))
|
|
# Now register the same groups with '-' instead of '_'
|
|
proboscis.register(
|
|
groups=build_group([name.replace('_', '-') for name in group_names]),
|
|
depends_on_groups=build_group(*test_groups))
|
|
|
|
|
|
# Base groups for all other groups
|
|
base_groups = [
|
|
tests.DBAAS_API_VERSIONS,
|
|
]
|
|
|
|
# Cluster-based groups
|
|
cluster_create_groups = list(base_groups)
|
|
cluster_create_groups.extend([groups.CLUSTER_DELETE_WAIT])
|
|
|
|
cluster_actions_groups = list(cluster_create_groups)
|
|
cluster_actions_groups.extend([groups.CLUSTER_ACTIONS_SHRINK_WAIT])
|
|
|
|
cluster_root_groups = list(cluster_create_groups)
|
|
cluster_root_groups.extend([groups.CLUSTER_ACTIONS_ROOT_ENABLE])
|
|
|
|
cluster_root_actions_groups = list(cluster_actions_groups)
|
|
cluster_root_actions_groups.extend([groups.CLUSTER_ACTIONS_ROOT_ACTIONS])
|
|
|
|
cluster_restart_groups = list(cluster_create_groups)
|
|
cluster_restart_groups.extend([groups.CLUSTER_ACTIONS_RESTART_WAIT])
|
|
|
|
cluster_upgrade_groups = list(cluster_create_groups)
|
|
cluster_upgrade_groups.extend([groups.CLUSTER_UPGRADE_WAIT])
|
|
|
|
cluster_config_groups = list(cluster_create_groups)
|
|
cluster_config_groups.extend([groups.CLUSTER_CFGGRP_DELETE])
|
|
|
|
cluster_config_actions_groups = list(cluster_config_groups)
|
|
cluster_config_actions_groups.extend([groups.CLUSTER_ACTIONS_CFGGRP_ACTIONS])
|
|
|
|
cluster_groups = list(cluster_actions_groups)
|
|
cluster_groups.extend([cluster_group.GROUP])
|
|
|
|
# Single-instance based groups
|
|
instance_create_groups = list(base_groups)
|
|
instance_create_groups.extend([groups.INST_CREATE,
|
|
groups.INST_DELETE_WAIT])
|
|
|
|
instance_error_create_groups = list(base_groups)
|
|
instance_error_create_groups.extend([instance_error_create_group.GROUP])
|
|
|
|
instance_force_delete_groups = list(base_groups)
|
|
instance_force_delete_groups.extend([instance_force_delete_group.GROUP])
|
|
|
|
instance_init_groups = list(base_groups)
|
|
instance_init_groups.extend([instance_create_group.GROUP,
|
|
instance_delete_group.GROUP])
|
|
|
|
instance_upgrade_groups = list(instance_create_groups)
|
|
instance_upgrade_groups.extend([instance_upgrade_group.GROUP])
|
|
|
|
backup_groups = list(instance_create_groups)
|
|
backup_groups.extend([groups.BACKUP,
|
|
groups.BACKUP_INST])
|
|
|
|
backup_incremental_groups = list(backup_groups)
|
|
backup_incremental_groups.extend([backup_group.GROUP])
|
|
|
|
backup_negative_groups = list(backup_groups)
|
|
backup_negative_groups.extend([groups.BACKUP_CREATE_NEGATIVE])
|
|
|
|
configuration_groups = list(instance_create_groups)
|
|
configuration_groups.extend([configuration_group.GROUP])
|
|
|
|
configuration_create_groups = list(base_groups)
|
|
configuration_create_groups.extend([groups.CFGGRP_CREATE,
|
|
groups.CFGGRP_DELETE])
|
|
|
|
database_actions_groups = list(instance_create_groups)
|
|
database_actions_groups.extend([database_actions_group.GROUP])
|
|
|
|
guest_log_groups = list(instance_create_groups)
|
|
guest_log_groups.extend([guest_log_group.GROUP])
|
|
|
|
instance_actions_groups = list(instance_create_groups)
|
|
instance_actions_groups.extend([instance_actions_group.GROUP])
|
|
|
|
instance_groups = list(instance_actions_groups)
|
|
instance_groups.extend([instance_error_create_group.GROUP,
|
|
instance_force_delete_group.GROUP])
|
|
|
|
module_groups = list(instance_create_groups)
|
|
module_groups.extend([module_group.GROUP])
|
|
|
|
module_create_groups = list(base_groups)
|
|
module_create_groups.extend([groups.MODULE_CREATE,
|
|
groups.MODULE_DELETE])
|
|
|
|
replication_groups = list(instance_create_groups)
|
|
replication_groups.extend([groups.REPL_INST_DELETE_WAIT])
|
|
|
|
replication_promote_groups = list(replication_groups)
|
|
replication_promote_groups.extend([replication_group.GROUP])
|
|
|
|
root_actions_groups = list(instance_create_groups)
|
|
root_actions_groups.extend([root_actions_group.GROUP])
|
|
|
|
user_actions_groups = list(instance_create_groups)
|
|
user_actions_groups.extend([user_actions_group.GROUP])
|
|
|
|
# groups common to all datastores
|
|
common_groups = list(instance_create_groups)
|
|
# NOTE(lxkong): Remove the module related tests(module_groups) for now because
|
|
# of no use case.
|
|
common_groups.extend([guest_log_groups, instance_init_groups])
|
|
|
|
integration_groups = [
|
|
tests.DBAAS_API_VERSIONS,
|
|
tests.DBAAS_API_DATASTORES,
|
|
tests.DBAAS_API_MGMT_DATASTORES,
|
|
tests.DBAAS_API_INSTANCES,
|
|
tests.DBAAS_API_USERS_ROOT,
|
|
tests.DBAAS_API_USERS,
|
|
tests.DBAAS_API_USERS_ACCESS,
|
|
tests.DBAAS_API_DATABASES,
|
|
tests.DBAAS_API_INSTANCE_ACTIONS,
|
|
tests.DBAAS_API_BACKUPS,
|
|
tests.DBAAS_API_CONFIGURATIONS,
|
|
tests.DBAAS_API_REPLICATION,
|
|
tests.DBAAS_API_INSTANCES_DELETE
|
|
]
|
|
# We intentionally make the functional tests running in series and dependent
|
|
# on each other, so that one test case failure will stop the whole testing.
|
|
proboscis.register(groups=["mysql"],
|
|
depends_on_groups=integration_groups)
|
|
|
|
register(
|
|
["mysql_supported"],
|
|
single=[instance_create_group.GROUP,
|
|
backup_group.GROUP,
|
|
configuration_group.GROUP,
|
|
database_actions_group.GROUP,
|
|
guest_log_group.GROUP,
|
|
instance_actions_group.GROUP,
|
|
instance_error_create_group.GROUP,
|
|
instance_force_delete_group.GROUP,
|
|
root_actions_group.GROUP,
|
|
user_actions_group.GROUP,
|
|
instance_delete_group.GROUP],
|
|
multi=[replication_group.GROUP,
|
|
instance_delete_group.GROUP]
|
|
)
|
|
|
|
register(
|
|
["mariadb_supported"],
|
|
single=[instance_create_group.GROUP,
|
|
backup_group.GROUP,
|
|
configuration_group.GROUP,
|
|
database_actions_group.GROUP,
|
|
guest_log_group.GROUP,
|
|
instance_actions_group.GROUP,
|
|
instance_error_create_group.GROUP,
|
|
instance_force_delete_group.GROUP,
|
|
root_actions_group.GROUP,
|
|
user_actions_group.GROUP,
|
|
instance_delete_group.GROUP],
|
|
multi=[replication_group.GROUP,
|
|
instance_delete_group.GROUP]
|
|
)
|
|
|
|
register(
|
|
["db2_supported"],
|
|
single=[common_groups,
|
|
configuration_groups,
|
|
database_actions_groups,
|
|
user_actions_groups, ],
|
|
multi=[]
|
|
)
|
|
|
|
register(
|
|
["cassandra_supported"],
|
|
single=[common_groups,
|
|
backup_groups,
|
|
database_actions_groups,
|
|
configuration_groups,
|
|
user_actions_groups, ],
|
|
multi=[cluster_actions_groups,
|
|
cluster_root_actions_groups,
|
|
cluster_config_actions_groups, ]
|
|
)
|
|
|
|
register(
|
|
["couchbase_supported"],
|
|
single=[common_groups,
|
|
backup_groups,
|
|
root_actions_groups, ],
|
|
multi=[]
|
|
)
|
|
|
|
register(
|
|
["couchdb_supported"],
|
|
single=[common_groups,
|
|
backup_groups,
|
|
database_actions_groups,
|
|
root_actions_groups,
|
|
user_actions_groups, ],
|
|
multi=[]
|
|
)
|
|
|
|
register(
|
|
["mongodb_supported"],
|
|
single=[common_groups,
|
|
backup_groups,
|
|
configuration_groups,
|
|
database_actions_groups,
|
|
root_actions_groups,
|
|
user_actions_groups, ],
|
|
multi=[cluster_actions_groups, ]
|
|
)
|
|
|
|
register(
|
|
["percona_supported"],
|
|
single=[common_groups,
|
|
backup_incremental_groups,
|
|
configuration_groups,
|
|
database_actions_groups,
|
|
instance_upgrade_groups,
|
|
root_actions_groups,
|
|
user_actions_groups, ],
|
|
multi=[replication_promote_groups, ]
|
|
)
|
|
|
|
register(
|
|
["postgresql_supported"],
|
|
single=[common_groups,
|
|
backup_incremental_groups,
|
|
database_actions_groups,
|
|
configuration_groups,
|
|
root_actions_groups,
|
|
user_actions_groups, ],
|
|
multi=[replication_groups, ]
|
|
)
|
|
|
|
register(
|
|
["pxc_supported"],
|
|
single=[common_groups,
|
|
backup_incremental_groups,
|
|
configuration_groups,
|
|
database_actions_groups,
|
|
root_actions_groups,
|
|
user_actions_groups, ],
|
|
multi=[]
|
|
# multi=[cluster_actions_groups,
|
|
# cluster_root_actions_groups, ]
|
|
)
|
|
|
|
# Redis instances does not support inherit root state from backups,
|
|
# so a customized root actions group is created, instance backuping
|
|
# and restoring tests will not be included.
|
|
redis_root_actions_groups = list(instance_create_groups)
|
|
redis_root_actions_groups.extend([groups.ROOT_ACTION_ENABLE,
|
|
groups.ROOT_ACTION_DISABLE])
|
|
register(
|
|
["redis_supported"],
|
|
single=[common_groups,
|
|
backup_groups,
|
|
configuration_groups,
|
|
redis_root_actions_groups, ],
|
|
multi=[replication_promote_groups, ]
|
|
# multi=[cluster_actions_groups,
|
|
# replication_promote_groups, ]
|
|
)
|
|
|
|
register(
|
|
["vertica_supported"],
|
|
single=[common_groups,
|
|
configuration_groups,
|
|
root_actions_groups, ],
|
|
multi=[cluster_actions_groups,
|
|
cluster_root_actions_groups, ]
|
|
)
|