Initialize tests of real clouds
We want to start testing sdk and osc on real clouds. They are all different, have different settings, policies, etc. In order to cope with that it would be necessary to rework lot of tests and code to ensure all of those "feautres" are properly detected by sdk and osc. Block-storage test base class should not set operator cloud, only tests that require it explicitly should use it Change-Id: I09d118097bade8f0d8ff497957846a754ebc7c1e
This commit is contained in:
parent
13117610fe
commit
70dbcfcd66
7
include-acceptance-regular-user.txt
Normal file
7
include-acceptance-regular-user.txt
Normal file
@ -0,0 +1,7 @@
|
||||
# This file contains list of tests that can work with regular user privileges
|
||||
# Until all tests are modified to properly identify whether they are able to
|
||||
# run or must skip the ones that are known to work are listed here.
|
||||
openstack.tests.functional.block_storage.v3.test_volume
|
||||
# Do not enable test_backup for now, since it is not capable to determine
|
||||
# backup capabilities of the cloud
|
||||
# openstack.tests.functional.block_storage.v3.test_backup
|
@ -12,6 +12,8 @@
|
||||
|
||||
import operator
|
||||
import os
|
||||
import time
|
||||
import uuid
|
||||
|
||||
from keystoneauth1 import discover
|
||||
|
||||
@ -57,10 +59,11 @@ class BaseFunctionalTest(base.TestCase):
|
||||
|
||||
self.config = openstack.config.OpenStackConfig()
|
||||
self._set_user_cloud()
|
||||
self._set_operator_cloud()
|
||||
if self._op_name:
|
||||
self._set_operator_cloud()
|
||||
|
||||
self.identity_version = \
|
||||
self.operator_cloud.config.get_api_version('identity')
|
||||
self.user_cloud.config.get_api_version('identity')
|
||||
|
||||
self.flavor = self._pick_flavor()
|
||||
self.image = self._pick_image()
|
||||
@ -78,10 +81,11 @@ class BaseFunctionalTest(base.TestCase):
|
||||
|
||||
# This cloud is used by the project_cleanup test, so you can't rely on
|
||||
# it
|
||||
user_config_alt = self.config.get_one(
|
||||
cloud=self._demo_name_alt, **kwargs)
|
||||
self.user_cloud_alt = connection.Connection(config=user_config_alt)
|
||||
_disable_keep_alive(self.user_cloud_alt)
|
||||
if self._demo_name_alt:
|
||||
user_config_alt = self.config.get_one(
|
||||
cloud=self._demo_name_alt, **kwargs)
|
||||
self.user_cloud_alt = connection.Connection(config=user_config_alt)
|
||||
_disable_keep_alive(self.user_cloud_alt)
|
||||
|
||||
def _set_operator_cloud(self, **kwargs):
|
||||
operator_config = self.config.get_one(cloud=self._op_name, **kwargs)
|
||||
@ -216,6 +220,15 @@ class BaseFunctionalTest(base.TestCase):
|
||||
f'{min_microversion}'
|
||||
)
|
||||
|
||||
def getUniqueString(self, prefix=None):
|
||||
"""Generate unique resource name"""
|
||||
# Globally unique names can only rely on some form of uuid
|
||||
# unix_t is also used to easier determine orphans when running real
|
||||
# functional tests on a real cloud
|
||||
return (prefix if prefix else '') + "{time}-{uuid}".format(
|
||||
time=int(time.time()),
|
||||
uuid=uuid.uuid4().hex)
|
||||
|
||||
|
||||
class KeystoneBaseFunctionalTest(BaseFunctionalTest):
|
||||
|
||||
|
@ -20,7 +20,5 @@ class BaseBlockStorageTest(base.BaseFunctionalTest):
|
||||
def setUp(self):
|
||||
super(BaseBlockStorageTest, self).setUp()
|
||||
self._set_user_cloud(block_storage_api_version='3')
|
||||
self._set_operator_cloud(block_storage_api_version='3')
|
||||
|
||||
if not self.user_cloud.has_service('block-storage', '3'):
|
||||
self.skipTest('block-storage service not supported by cloud')
|
||||
|
@ -22,7 +22,9 @@ class TestType(base.BaseBlockStorageTest):
|
||||
|
||||
self.TYPE_NAME = self.getUniqueString()
|
||||
self.TYPE_ID = None
|
||||
|
||||
if not self._op_name:
|
||||
self.skip("Operator cloud must be set for this test")
|
||||
self._set_operator_cloud(block_storage_api_version='3')
|
||||
sot = self.operator_cloud.block_storage.create_type(
|
||||
name=self.TYPE_NAME)
|
||||
assert isinstance(sot, _type.Type)
|
||||
|
17
tox.ini
17
tox.ini
@ -38,6 +38,23 @@ commands =
|
||||
stestr --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs}
|
||||
stestr slowest
|
||||
|
||||
# Acceptance tests are the ones running on real clouds
|
||||
[testenv:acceptance-regular-user]
|
||||
# This env intends to test functions of a regular user without admin privileges
|
||||
# Some jobs (especially heat) takes longer, therefore increase default timeout
|
||||
# This timeout should not be smaller, than the longest individual timeout
|
||||
setenv =
|
||||
{[testenv]setenv}
|
||||
OS_TEST_TIMEOUT=600
|
||||
OPENSTACKSDK_FUNC_TEST_TIMEOUT_LOAD_BALANCER=600
|
||||
# OPENSTACKSDK_DEMO_CLOUD and OS_CLOUD should point to the cloud to test
|
||||
# Othee clouds are explicitly set empty to let tests detect absense
|
||||
OPENSTACKSDK_DEMO_CLOUD_ALT=
|
||||
OPENSTACKSDK_OPERATOR_CLOUD=
|
||||
commands =
|
||||
stestr --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs} --include-list include-acceptance-regular-user.txt
|
||||
stestr slowest
|
||||
|
||||
[testenv:pep8]
|
||||
deps =
|
||||
hacking>=3.1.0,<4.0.0 # Apache-2.0
|
||||
|
Loading…
Reference in New Issue
Block a user