Functional tests for server's description
Functional tests for microversion 2.19 have been added. They include several actions with server's description mentioned in Testing section of the appropriate spec [1] for Python nova-client and openstack-client, namely: - Add a description to the tests that create a server - Add a description to the tests that rebuild a server - Set and remove the description on an existing server - Check that the description is returned as part of server details for an individual server and for a server list - [Negative] The description passed to the API is longer than 255 characters - The description passed to the API is an empty string. This is allowed Tests that are not implemented yet: - [Negative] The description passed to the API is not valid printable unicode [1] http://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/user-settable-server-description.html Change-Id: Ieab77bf5569871380987769c47e9f4dab2ec9e4b
This commit is contained in:
parent
d63800d5ec
commit
96fde33630
@ -10,8 +10,12 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import random
|
||||
import string
|
||||
|
||||
from novaclient.tests.functional import base
|
||||
from novaclient.tests.functional.v2.legacy import test_servers
|
||||
from novaclient.v2 import shell
|
||||
|
||||
|
||||
class TestServersBootNovaClient(test_servers.TestServersBootNovaClient):
|
||||
@ -62,18 +66,64 @@ class TestServersDescription(base.ClientTestBase):
|
||||
return server, descr
|
||||
|
||||
def test_create(self):
|
||||
# Add a description to the tests that create a server
|
||||
server, descr = self._boot_server_with_description()
|
||||
|
||||
output = self.nova("show %s" % server.id)
|
||||
self.assertEqual(descr, self._get_value_from_the_table(output,
|
||||
"description"))
|
||||
|
||||
def test_update(self):
|
||||
def test_list_servers_with_description(self):
|
||||
# Check that the description is returned as part of server details
|
||||
# for a server list
|
||||
server, descr = self._boot_server_with_description()
|
||||
output = self.nova("list --fields description")
|
||||
self.assertEqual(server.id,
|
||||
self._get_column_value_from_single_row_table(
|
||||
output, "ID"))
|
||||
self.assertEqual(descr,
|
||||
self._get_column_value_from_single_row_table(
|
||||
output, "Description"))
|
||||
|
||||
# remove description
|
||||
def test_rebuild(self):
|
||||
# Add a description to the tests that rebuild a server
|
||||
server, descr = self._boot_server_with_description()
|
||||
descr = "New description for rebuilt VM."
|
||||
self.nova("rebuild --description '%s' %s %s" %
|
||||
(descr, server.id, self.image.name))
|
||||
shell._poll_for_status(
|
||||
self.client.servers.get, server.id,
|
||||
'rebuild', ['active'])
|
||||
output = self.nova("show %s" % server.id)
|
||||
self.assertEqual(descr, self._get_value_from_the_table(output,
|
||||
"description"))
|
||||
|
||||
def test_remove_description(self):
|
||||
# Remove description from server booted with it
|
||||
server, descr = self._boot_server_with_description()
|
||||
self.nova("update %s --description ''" % server.id)
|
||||
|
||||
output = self.nova("show %s" % server.id)
|
||||
self.assertEqual("-", self._get_value_from_the_table(output,
|
||||
"description"))
|
||||
|
||||
def test_add_remove_description_on_existing_server(self):
|
||||
# Set and remove the description on an existing server
|
||||
server = self._create_server()
|
||||
descr = "Add a description for previously-booted VM."
|
||||
self.nova("update %s --description '%s'" % (server.id, descr))
|
||||
output = self.nova("show %s" % server.id)
|
||||
self.assertEqual(descr, self._get_value_from_the_table(output,
|
||||
"description"))
|
||||
self.nova("update %s --description ''" % server.id)
|
||||
output = self.nova("show %s" % server.id)
|
||||
self.assertEqual("-", self._get_value_from_the_table(output,
|
||||
"description"))
|
||||
|
||||
def test_update_with_description_longer_than_255_symbols(self):
|
||||
# Negative case for description longer than 255 characters
|
||||
server = self._create_server()
|
||||
descr = ''.join(random.choice(string.letters) for i in range(256))
|
||||
output = self.nova("update %s --description '%s'" % (server.id, descr),
|
||||
fail_ok=True, merge_stderr=True)
|
||||
self.assertIn("\nERROR (BadRequest): Invalid input for field/attribute"
|
||||
" description. Value: %s. u\'%s\' is too long (HTTP 400)"
|
||||
% (descr, descr), output)
|
||||
|
Loading…
x
Reference in New Issue
Block a user