Merge "tests: Remove 'test_servers.ServersTestBase'"

This commit is contained in:
Zuul 2020-07-24 09:24:53 +00:00 committed by Gerrit Code Review
commit 7bcce51066
16 changed files with 65 additions and 101 deletions

View File

@ -25,10 +25,10 @@ from sqlalchemy import select
from nova import context
from nova.db import api as db
from nova.db.sqlalchemy import api as sqlalchemy_api
from nova.tests.functional import test_servers
from nova.tests.functional import integrated_helpers
class TestDatabaseArchive(test_servers.ServersTestBase):
class TestDatabaseArchive(integrated_helpers._IntegratedTestBase):
"""Tests DB API for archiving (soft) deleted records"""
def setUp(self):

View File

@ -60,9 +60,6 @@ class VirtualInterfaceListMigrationTestCase(
ADMIN_API = True
api_major_version = 'v2.1'
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
def setUp(self):
super(VirtualInterfaceListMigrationTestCase, self).setUp()

View File

@ -22,7 +22,7 @@ import mock
from nova import conf
from nova.objects import fields as obj_fields
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import test_servers as base
from nova.tests.functional import integrated_helpers
from nova.tests.unit.virt.libvirt import fake_imagebackend
from nova.tests.unit.virt.libvirt import fakelibvirt
@ -30,7 +30,8 @@ from nova.tests.unit.virt.libvirt import fakelibvirt
CONF = conf.CONF
class ServersTestBase(base.ServersTestBase):
class ServersTestBase(integrated_helpers._IntegratedTestBase):
"""A libvirt-specific variant of the integrated test base."""
ADDITIONAL_FILTERS = []

View File

@ -40,6 +40,11 @@ _DEFAULT_HOST = 'host1'
class VGPUTestBase(base.ServersTestBase):
# We want to target some hosts for some created instances
api_major_version = 'v2.1'
microversion = 'latest'
ADMIN_API = True
FAKE_LIBVIRT_VERSION = 5000000
FAKE_QEMU_VERSION = 3001000
@ -131,11 +136,6 @@ class VGPUTestBase(base.ServersTestBase):
class VGPUTests(VGPUTestBase):
# We want to target some hosts for some created instances
api_major_version = 'v2.1'
ADMIN_API = True
microversion = 'latest'
def setUp(self):
super(VGPUTests, self).setUp()
extra_spec = {"resources:VGPU": "1"}
@ -327,8 +327,7 @@ class VGPUMultipleTypesTests(VGPUTestBase):
def test_create_servers_with_vgpu(self):
self._create_server(
image_uuid='155d900f-4e14-4e4c-a73d-069cbf4541e6',
flavor_id=self.flavor, host=self.compute1.host,
expected_state='ACTIVE')
flavor_id=self.flavor, networks='auto', host=self.compute1.host)
mdevs = self.compute1.driver._get_mediated_devices()
self.assertEqual(1, len(mdevs))
@ -388,8 +387,7 @@ class VGPUMultipleTypesTests(VGPUTestBase):
# Use the new flavor for booting
server = self._create_server(
image_uuid='155d900f-4e14-4e4c-a73d-069cbf4541e6',
flavor_id=flavor, host=self.compute1.host,
expected_state='ACTIVE')
flavor_id=flavor, networks='auto', host=self.compute1.host)
# Get the instance we just created
inst = objects.Instance.get_by_uuid(self.context, server['id'])

View File

@ -30,8 +30,6 @@ class ResizeEvacuateTestCase(integrated_helpers._IntegratedTestBase):
# Set variables used in the parent class.
REQUIRES_LOCKING = False
ADMIN_API = True
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
api_major_version = 'v2.1'
microversion = '2.11' # Need at least 2.11 for the force-down API

View File

@ -30,8 +30,6 @@ class MultiCellEvacuateTestCase(integrated_helpers._IntegratedTestBase):
NUMBER_OF_CELLS = 2
REQUIRES_LOCKING = False
ADMIN_API = True
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
api_major_version = 'v2.1'
microversion = '2.11' # Need at least 2.11 for the force-down API

View File

@ -20,12 +20,11 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client as api_client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.functional import test_servers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
class BootFromVolumeTest(test_servers.ServersTestBase):
class BootFromVolumeTest(integrated_helpers._IntegratedTestBase):
def _get_hypervisor_stats(self):
response = self.admin_api.api_get('/os-hypervisors/statistics')

View File

@ -16,10 +16,10 @@ import six
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import test_servers
from nova.tests.functional import integrated_helpers
class ConfigurableMaxDiskDevicesTest(test_servers.ServersTestBase):
class ConfigurableMaxDiskDevicesTest(integrated_helpers._IntegratedTestBase):
def setUp(self):
super(ConfigurableMaxDiskDevicesTest, self).setUp()
self.cinder = self.useFixture(

View File

@ -14,10 +14,10 @@ from oslo_utils.fixture import uuidsentinel as uuids
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import test_servers
from nova.tests.functional import integrated_helpers
class ImagesTest(test_servers.ServersTestBase):
class ImagesTest(integrated_helpers._IntegratedTestBase):
def test_create_images_negative_invalid_state(self):
# Create server

View File

@ -22,12 +22,11 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.functional import test_servers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
class InstanceActionsTestV2(test_servers.ServersTestBase):
class InstanceActionsTestV2(integrated_helpers._IntegratedTestBase):
"""Tests Instance Actions API"""
def test_get_instance_actions(self):

View File

@ -16,10 +16,10 @@
from nova.api import openstack
from nova.api.openstack import wsgi
from nova.tests.functional.api import client
from nova.tests.functional import test_servers
from nova.tests.functional import integrated_helpers
class LegacyV2CompatibleTestBase(test_servers.ServersTestBase):
class LegacyV2CompatibleTestBase(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2'
def setUp(self):

View File

@ -25,8 +25,6 @@ class TestMultiattachVolumes(integrated_helpers._IntegratedTestBase):
# These are all used in _IntegratedTestBase.
api_major_version = 'v2.1'
microversion = '2.60'
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
def setUp(self):
# Everything has been upgraded to the latest code to support

View File

@ -1765,8 +1765,6 @@ class TestNovaManagePlacementAudit(
class TestDBArchiveDeletedRows(integrated_helpers._IntegratedTestBase):
"""Functional tests for the "nova-manage db archive_deleted_rows" CLI."""
api_major_version = 'v2.1'
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
def setUp(self):
super(TestDBArchiveDeletedRows, self).setUp()

View File

@ -61,30 +61,8 @@ CONF = cfg.CONF
LOG = logging.getLogger(__name__)
class ServersTestBase(integrated_helpers._IntegratedTestBase):
class ServersTest(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2'
_force_delete_parameter = 'forceDelete'
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
_access_ipv4_parameter = 'accessIPv4'
_access_ipv6_parameter = 'accessIPv6'
_return_resv_id_parameter = 'return_reservation_id'
_min_count_parameter = 'min_count'
def setUp(self):
super(ServersTestBase, self).setUp()
def _get_access_ips_params(self):
return {self._access_ipv4_parameter: "172.19.0.2",
self._access_ipv6_parameter: "fe80::2"}
def _verify_access_ips(self, server):
self.assertEqual('172.19.0.2',
server[self._access_ipv4_parameter])
self.assertEqual('fe80::2', server[self._access_ipv6_parameter])
class ServersTest(ServersTestBase):
def test_get_servers(self):
# Simple check that listing servers works.
@ -225,22 +203,20 @@ class ServersTest(ServersTestBase):
self.api.post_server, post)
# With an invalid imageRef, this throws 500.
server[self._image_ref_parameter] = uuids.fake
server['imageRef'] = uuids.fake
# TODO(justinsb): Check whatever the spec says should be thrown here
self.assertRaises(client.OpenStackApiException,
self.api.post_server, post)
# Add a valid imageRef
server[self._image_ref_parameter] = good_server.get(
self._image_ref_parameter)
server['imageRef'] = good_server.get('imageRef')
# Without flavorRef, this throws 500
# TODO(justinsb): Check whatever the spec says should be thrown here
self.assertRaises(client.OpenStackApiException,
self.api.post_server, post)
server[self._flavor_ref_parameter] = good_server.get(
self._flavor_ref_parameter)
server['flavorRef'] = good_server.get('flavorRef')
# Without a name, this throws 500
# TODO(justinsb): Check whatever the spec says should be thrown here
@ -407,8 +383,7 @@ class ServersTest(ServersTestBase):
'SOFT_DELETED')
# Force delete server
self.api.post_server_action(created_server_id,
{self._force_delete_parameter: {}})
self.api.post_server_action(created_server_id, {'forceDelete': {}})
# Wait for real deletion
self._wait_until_deleted(found_server)
@ -516,13 +491,16 @@ class ServersTest(ServersTestBase):
# rebuild the server with metadata and other server attributes
post = {}
post['rebuild'] = {
self._image_ref_parameter: "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
"name": "blah",
self._access_ipv4_parameter: "172.19.0.2",
self._access_ipv6_parameter: "fe80::2",
"metadata": {'some': 'thing'},
'imageRef': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6',
'name': 'blah',
'accessIPv4': '172.19.0.2',
'accessIPv6': 'fe80::2',
'metadata': {'some': 'thing'},
}
post['rebuild'].update(self._get_access_ips_params())
post['rebuild'].update({
'accessIPv4': '172.19.0.2',
'accessIPv6': 'fe80::2',
})
self.api.post_server_action(created_server_id, post)
LOG.debug("rebuilt server: %s", created_server)
@ -532,14 +510,15 @@ class ServersTest(ServersTestBase):
self.assertEqual(created_server_id, found_server['id'])
self.assertEqual({'some': 'thing'}, found_server.get('metadata'))
self.assertEqual('blah', found_server.get('name'))
self.assertEqual(post['rebuild'][self._image_ref_parameter],
self.assertEqual(post['rebuild']['imageRef'],
found_server.get('image')['id'])
self._verify_access_ips(found_server)
self.assertEqual('172.19.0.2', found_server['accessIPv4'])
self.assertEqual('fe80::2', found_server['accessIPv6'])
# rebuild the server with empty metadata and nothing else
post = {}
post['rebuild'] = {
self._image_ref_parameter: "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
'imageRef': "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
"metadata": {},
}
@ -551,9 +530,10 @@ class ServersTest(ServersTestBase):
self.assertEqual(created_server_id, found_server['id'])
self.assertEqual({}, found_server.get('metadata'))
self.assertEqual('blah', found_server.get('name'))
self.assertEqual(post['rebuild'][self._image_ref_parameter],
self.assertEqual(post['rebuild']['imageRef'],
found_server.get('image')['id'])
self._verify_access_ips(found_server)
self.assertEqual('172.19.0.2', found_server['accessIPv4'])
self.assertEqual('fe80::2', found_server['accessIPv6'])
# Cleanup
self._delete_server(found_server)
@ -584,8 +564,8 @@ class ServersTest(ServersTestBase):
# Create 2 servers, setting 'return_reservation_id, which should
# return a reservation_id
server = self._build_server()
server[self._min_count_parameter] = 2
server[self._return_resv_id_parameter] = True
server['min_count'] = 2
server['return_reservation_id'] = True
post = {'server': server}
response = self.api.post_server(post)
self.assertIn('reservation_id', response)
@ -816,7 +796,7 @@ class ServersTestV21(ServersTest):
api_major_version = 'v2.1'
class ServersTestV219(ServersTestBase):
class ServersTestV219(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2.1'
def _create_server(self, set_desc = True, desc = None):
@ -838,13 +818,16 @@ class ServersTestV219(ServersTestBase):
new_name = integrated_helpers.generate_random_alphanumeric(8)
post = {}
post['rebuild'] = {
"name": new_name,
self._image_ref_parameter: "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
self._access_ipv4_parameter: "172.19.0.2",
self._access_ipv6_parameter: "fe80::2",
"metadata": {'some': 'thing'},
'name': new_name,
'imageRef': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6',
'accessIPv4': '172.19.0.2',
'accessIPv6': 'fe80::2',
'metadata': {'some': 'thing'},
}
post['rebuild'].update(self._get_access_ips_params())
post['rebuild'].update({
'accessIPv4': '172.19.0.2',
'accessIPv6': 'fe80::2',
})
if set_desc:
post['rebuild']['description'] = desc
self.api.api_post('/servers/%s/action' % server_id, post)
@ -1021,7 +1004,7 @@ class ServersTestV219(ServersTestBase):
self._rebuild_assertRaisesRegex(server_id, 'x' * 256)
class ServerTestV220(ServersTestBase):
class ServerTestV220(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2.1'
def setUp(self):
@ -1096,7 +1079,7 @@ class ServerTestV220(ServersTestBase):
self._delete_server(found_server)
class ServerTestV269(ServersTestBase):
class ServerTestV269(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2.1'
NUMBER_OF_CELLS = 3
@ -1551,7 +1534,7 @@ class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase):
'volume-backed server', six.text_type(resp))
class ServersTestV280(ServersTestBase):
class ServersTestV280(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2.1'
def setUp(self):
@ -4550,7 +4533,7 @@ class TraitsBasedSchedulingTest(integrated_helpers.ProviderUsageBaseTestCase):
server['fault']['message'])
class ServerTestV256Common(ServersTestBase):
class ServerTestV256Common(integrated_helpers._IntegratedTestBase):
api_major_version = 'v2.1'
microversion = '2.56'
ADMIN_API = True

View File

@ -15,10 +15,10 @@
# under the License.
from nova.tests.functional.api import client
from nova.tests.functional import test_servers
from nova.tests.functional import integrated_helpers
class InterfaceFullstack(test_servers.ServersTestBase):
class InterfaceFullstack(integrated_helpers._IntegratedTestBase):
"""Tests for port interfaces command.
Functional Test Scope:

View File

@ -33,18 +33,14 @@ class SecgroupsFullstack(testscenarios.WithScenarios, test.TestCase):
"""
REQUIRES_LOCKING = True
_image_ref_parameter = 'imageRef'
_flavor_ref_parameter = 'flavorRef'
# This test uses ``testscenarios`` which matrix multiplies the
# test across the scenarios listed below setting the attributes
# in the dictionary on ``self`` for each scenario.
scenarios = [
('v2', {
'api_major_version': 'v2'}),
('v2', {'api_major_version': 'v2'}),
# test v2.1 base microversion
('v2_1', {
'api_major_version': 'v2.1'}),
('v2_1', {'api_major_version': 'v2.1'}),
]
def setUp(self):
@ -65,19 +61,18 @@ class SecgroupsFullstack(testscenarios.WithScenarios, test.TestCase):
image = self.api.get_images()[0]
LOG.info("Image: %s", image)
if self._image_ref_parameter in image:
image_href = image[self._image_ref_parameter]
if 'imageRef' in image:
image_href = image['imageRef']
else:
image_href = image['id']
image_href = 'http://fake.server/%s' % image_href
# We now have a valid imageId
server[self._image_ref_parameter] = image_href
server['imageRef'] = image_href
# Set a valid flavorId
flavor = self.api.get_flavors()[1]
server[self._flavor_ref_parameter] = ('http://fake.server/%s'
% flavor['id'])
server['flavorRef'] = 'http://fake.server/%s' % flavor['id']
server['name'] = name
return server