Merge "Initialize tests of real clouds"
This commit is contained in:
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 operator
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
|
||||||
from keystoneauth1 import discover
|
from keystoneauth1 import discover
|
||||||
|
|
||||||
@@ -57,10 +59,11 @@ class BaseFunctionalTest(base.TestCase):
|
|||||||
|
|
||||||
self.config = openstack.config.OpenStackConfig()
|
self.config = openstack.config.OpenStackConfig()
|
||||||
self._set_user_cloud()
|
self._set_user_cloud()
|
||||||
self._set_operator_cloud()
|
if self._op_name:
|
||||||
|
self._set_operator_cloud()
|
||||||
|
|
||||||
self.identity_version = \
|
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.flavor = self._pick_flavor()
|
||||||
self.image = self._pick_image()
|
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
|
# This cloud is used by the project_cleanup test, so you can't rely on
|
||||||
# it
|
# it
|
||||||
user_config_alt = self.config.get_one(
|
if self._demo_name_alt:
|
||||||
cloud=self._demo_name_alt, **kwargs)
|
user_config_alt = self.config.get_one(
|
||||||
self.user_cloud_alt = connection.Connection(config=user_config_alt)
|
cloud=self._demo_name_alt, **kwargs)
|
||||||
_disable_keep_alive(self.user_cloud_alt)
|
self.user_cloud_alt = connection.Connection(config=user_config_alt)
|
||||||
|
_disable_keep_alive(self.user_cloud_alt)
|
||||||
|
|
||||||
def _set_operator_cloud(self, **kwargs):
|
def _set_operator_cloud(self, **kwargs):
|
||||||
operator_config = self.config.get_one(cloud=self._op_name, **kwargs)
|
operator_config = self.config.get_one(cloud=self._op_name, **kwargs)
|
||||||
@@ -216,6 +220,15 @@ class BaseFunctionalTest(base.TestCase):
|
|||||||
f'{min_microversion}'
|
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):
|
class KeystoneBaseFunctionalTest(BaseFunctionalTest):
|
||||||
|
|
||||||
|
@@ -20,7 +20,5 @@ class BaseBlockStorageTest(base.BaseFunctionalTest):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(BaseBlockStorageTest, self).setUp()
|
super(BaseBlockStorageTest, self).setUp()
|
||||||
self._set_user_cloud(block_storage_api_version='3')
|
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'):
|
if not self.user_cloud.has_service('block-storage', '3'):
|
||||||
self.skipTest('block-storage service not supported by cloud')
|
self.skipTest('block-storage service not supported by cloud')
|
||||||
|
@@ -22,7 +22,9 @@ class TestType(base.BaseBlockStorageTest):
|
|||||||
|
|
||||||
self.TYPE_NAME = self.getUniqueString()
|
self.TYPE_NAME = self.getUniqueString()
|
||||||
self.TYPE_ID = None
|
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(
|
sot = self.operator_cloud.block_storage.create_type(
|
||||||
name=self.TYPE_NAME)
|
name=self.TYPE_NAME)
|
||||||
assert isinstance(sot, _type.Type)
|
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 --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs}
|
||||||
stestr slowest
|
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]
|
[testenv:pep8]
|
||||||
deps =
|
deps =
|
||||||
hacking>=3.1.0,<4.0.0 # Apache-2.0
|
hacking>=3.1.0,<4.0.0 # Apache-2.0
|
||||||
|
Reference in New Issue
Block a user