Move and update test_resize_volume_backed_server_confirm

There is a bug in nova where the libvirt driver incorrectly removes
the local guest files for the hypervisor from shared storage because
it does not realize the instance is volume-backed. Nova runs an NFS
CI job in the experimental queue but it's not failing on resize
tests because they aren't volume-backed, so to recreate the failure
and make sure we don't regress the fix, this test is added. Nova
also runs a Ceph job which applies here too.

This moves the existing scenario test to be a compute API test. The
test ID is maintained in case people are blacklisting it, but the
slow tag is dropped because it's not a particularly slow test and
if the slow tag is applied, it won't actually be run in the jobs
that we care about testing this, e.g. NFS and Ceph jobs.

The additional wrinkle of getting the console log after the resize
is what shows the failure when the bug is not fixed, so that's added
here.

Depends-On: I29fac80d08baf64bf69e54cf673e55123174de2a

Change-Id: Id7de5186b2ea0ff7af86d9950c69203914498d88
Related-Bug: #1728603
This commit is contained in:
Matt Riedemann 2017-10-30 12:52:51 -04:00 committed by Ken'ichi Ohmichi
parent ced8d3cc1a
commit 1df75ee502
2 changed files with 16 additions and 22 deletions

View File

@ -315,6 +315,22 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
def test_resize_server_confirm(self):
self._test_resize_server_confirm(self.server_id, stop=False)
@decorators.idempotent_id('e6c28180-7454-4b59-b188-0257af08a63b')
@decorators.related_bug('1728603')
@testtools.skipUnless(CONF.compute_feature_enabled.resize,
'Resize not available.')
@utils.services('volume')
def test_resize_volume_backed_server_confirm(self):
# We have to create a new server that is volume-backed since the one
# from setUp is not volume-backed.
server = self.create_test_server(
volume_backed=True, wait_until='ACTIVE')
self._test_resize_server_confirm(server['id'])
# Now do something interactive with the guest like get its console
# output; we don't actually care about the output, just that it doesn't
# raise an error.
self.client.get_console_output(server['id'])
@decorators.idempotent_id('138b131d-66df-48c9-a171-64f45eb92962')
@testtools.skipUnless(CONF.compute_feature_enabled.resize,
'Resize not available.')

View File

@ -41,28 +41,6 @@ class TestServerAdvancedOps(manager.ScenarioTest):
cls.set_network_resources()
super(TestServerAdvancedOps, cls).setup_credentials()
@decorators.attr(type='slow')
@decorators.idempotent_id('e6c28180-7454-4b59-b188-0257af08a63b')
@testtools.skipUnless(CONF.compute_feature_enabled.resize,
'Resize is not available.')
@utils.services('compute', 'volume')
def test_resize_volume_backed_server_confirm(self):
# We create an instance for use in this test
instance = self.create_server(volume_backed=True)
instance_id = instance['id']
resize_flavor = CONF.compute.flavor_ref_alt
LOG.debug("Resizing instance %s from flavor %s to flavor %s",
instance['id'], instance['flavor']['id'], resize_flavor)
self.servers_client.resize_server(instance_id, resize_flavor)
waiters.wait_for_server_status(self.servers_client, instance_id,
'VERIFY_RESIZE')
LOG.debug("Confirming resize of instance %s", instance_id)
self.servers_client.confirm_resize_server(instance_id)
waiters.wait_for_server_status(self.servers_client, instance_id,
'ACTIVE')
@decorators.attr(type='slow')
@decorators.idempotent_id('949da7d5-72c8-4808-8802-e3d70df98e2c')
@testtools.skipUnless(CONF.compute_feature_enabled.suspend,