From 15a079faa6a6cbae465bc96a6069c892af9c0e04 Mon Sep 17 00:00:00 2001 From: Dean Troyer <dtroyer@gmail.com> Date: Thu, 14 Jun 2018 09:31:01 -0500 Subject: [PATCH] Fix volume type functional tests Convert functional VolumeTypeTests to not use class methods for setup. Depends-On: https://review.openstack.org/577147 Change-Id: I855583ad1a50bf5f5046acdb85e977ab9e3c45d2 --- .../functional/volume/v1/test_volume_type.py | 119 ++++++++++----- .../tests/functional/volume/v2/test_qos.py | 5 +- .../functional/volume/v2/test_volume_type.py | 138 ++++++++++++------ 3 files changed, 180 insertions(+), 82 deletions(-) diff --git a/openstackclient/tests/functional/volume/v1/test_volume_type.py b/openstackclient/tests/functional/volume/v1/test_volume_type.py index c5886a696a..eb9d7f64ae 100644 --- a/openstackclient/tests/functional/volume/v1/test_volume_type.py +++ b/openstackclient/tests/functional/volume/v1/test_volume_type.py @@ -20,62 +20,92 @@ from openstackclient.tests.functional.volume.v1 import common class VolumeTypeTests(common.BaseVolumeTests): """Functional tests for volume type. """ - NAME = uuid.uuid4().hex + def test_volume_type_create_list(self): + name = uuid.uuid4().hex + cmd_output = json.loads(self.openstack( + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + + name, + ) + self.assertEqual(name, cmd_output['name']) - @classmethod - def setUpClass(cls): - super(VolumeTypeTests, cls).setUpClass() - cmd_output = json.loads(cls.openstack( - 'volume type create -f json %s' % cls.NAME)) - cls.assertOutput(cls.NAME, cmd_output['name']) + cmd_output = json.loads(self.openstack( + 'volume type show -f json %s' % name + )) + self.assertEqual(self.NAME, cmd_output['name']) - @classmethod - def tearDownClass(cls): - try: - raw_output = cls.openstack('volume type delete %s' % cls.NAME) - cls.assertOutput('', raw_output) - finally: - super(VolumeTypeTests, cls).tearDownClass() - - def test_volume_type_list(self): cmd_output = json.loads(self.openstack('volume type list -f json')) self.assertIn(self.NAME, [t['Name'] for t in cmd_output]) - def test_volume_type_show(self): cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) - self.assertEqual(self.NAME, cmd_output['name']) + 'volume type list -f json --default' + )) + self.assertEqual(1, len(cmd_output)) + self.assertEqual('lvmdriver-1', cmd_output[0]['Name']) def test_volume_type_set_unset_properties(self): - raw_output = self.openstack( - 'volume type set --property a=b --property c=d %s' % self.NAME) - self.assertEqual("", raw_output) - + name = uuid.uuid4().hex cmd_output = json.loads(self.openstack( - 'volume type show -f json ' + self.NAME)) + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name + ) + self.assertEqual(name, cmd_output['name']) + + raw_output = self.openstack( + 'volume type set --property a=b --property c=d %s' % name + ) + self.assertEqual("", raw_output) + cmd_output = json.loads(self.openstack( + 'volume type show -f json %s' % name + )) + # TODO(amotoki): properties output should be machine-readable self.assertEqual("a='b', c='d'", cmd_output['properties']) - raw_output = self.openstack('volume type unset --property a %s' % - self.NAME) + raw_output = self.openstack( + 'volume type unset --property a %s' % name + ) self.assertEqual("", raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type show -f json %s' % name + )) self.assertEqual("c='d'", cmd_output['properties']) def test_volume_type_set_unset_multiple_properties(self): - raw_output = self.openstack( - 'volume type set --property a=b --property c=d %s' % self.NAME) - self.assertEqual("", raw_output) - + name = uuid.uuid4().hex cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name + ) + self.assertEqual(name, cmd_output['name']) + + raw_output = self.openstack( + 'volume type set --property a=b --property c=d %s' % name + ) + self.assertEqual("", raw_output) + cmd_output = json.loads(self.openstack( + 'volume type show -f json %s' % name + )) self.assertEqual("a='b', c='d'", cmd_output['properties']) raw_output = self.openstack( - 'volume type unset --property a --property c %s' % self.NAME) + 'volume type unset --property a --property c %s' % name + ) self.assertEqual("", raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type show -f json %s' % name + )) self.assertEqual("", cmd_output['properties']) def test_multi_delete(self): @@ -140,8 +170,21 @@ class VolumeTypeTests(common.BaseVolumeTests): '--encryption-control-location front-end ' + self.NAME) self.assertEqual('', raw_output) + + name = uuid.uuid4().hex cmd_output = json.loads(self.openstack( - 'volume type show -f json --encryption-type ' + self.NAME)) + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name, + ) + self.assertEqual(name, cmd_output['name']) + + cmd_output = json.loads(self.openstack( + 'volume type show -f json --encryption-type ' + name + )) expected = ["provider='LuksEncryptor'", "cipher='aes-xts-plain64'", "key_size='128'", @@ -150,10 +193,12 @@ class VolumeTypeTests(common.BaseVolumeTests): self.assertIn(attr, cmd_output['encryption']) # test unset encryption type raw_output = self.openstack( - 'volume type unset --encryption-type ' + self.NAME) + 'volume type unset --encryption-type ' + name + ) self.assertEqual('', raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json --encryption-type ' + self.NAME)) + 'volume type show -f json --encryption-type ' + name + )) self.assertEqual('', cmd_output['encryption']) # test delete encryption type raw_output = self.openstack('volume type delete ' + encryption_type) diff --git a/openstackclient/tests/functional/volume/v2/test_qos.py b/openstackclient/tests/functional/volume/v2/test_qos.py index 888f12b1e2..646becc1a7 100644 --- a/openstackclient/tests/functional/volume/v2/test_qos.py +++ b/openstackclient/tests/functional/volume/v2/test_qos.py @@ -125,7 +125,6 @@ class QosTests(common.BaseVolumeTests): def test_volume_qos_asso_disasso(self): """Tests associate and disassociate qos with volume type""" vol_type1 = uuid.uuid4().hex - vol_type2 = uuid.uuid4().hex cmd_output = json.loads(self.openstack( 'volume type create -f json ' + vol_type1 @@ -134,6 +133,9 @@ class QosTests(common.BaseVolumeTests): vol_type1, cmd_output['name'] ) + self.addCleanup(self.openstack, 'volume type delete ' + vol_type1) + + vol_type2 = uuid.uuid4().hex cmd_output = json.loads(self.openstack( 'volume type create -f json ' + vol_type2 @@ -142,7 +144,6 @@ class QosTests(common.BaseVolumeTests): vol_type2, cmd_output['name'] ) - self.addCleanup(self.openstack, 'volume type delete ' + vol_type1) self.addCleanup(self.openstack, 'volume type delete ' + vol_type2) name = uuid.uuid4().hex diff --git a/openstackclient/tests/functional/volume/v2/test_volume_type.py b/openstackclient/tests/functional/volume/v2/test_volume_type.py index 5c551ca945..d8dd5bd626 100644 --- a/openstackclient/tests/functional/volume/v2/test_volume_type.py +++ b/openstackclient/tests/functional/volume/v2/test_volume_type.py @@ -20,76 +20,113 @@ from openstackclient.tests.functional.volume.v2 import common class VolumeTypeTests(common.BaseVolumeTests): """Functional tests for volume type. """ - NAME = uuid.uuid4().hex - - @classmethod - def setUpClass(cls): - super(VolumeTypeTests, cls).setUpClass() - cmd_output = json.loads(cls.openstack( - 'volume type create -f json --private %s' % cls.NAME)) - cls.assertOutput(cls.NAME, cmd_output['name']) - - @classmethod - def tearDownClass(cls): - try: - raw_output = cls.openstack('volume type delete %s' % cls.NAME) - cls.assertOutput('', raw_output) - finally: - super(VolumeTypeTests, cls).tearDownClass() - - def test_volume_type_list(self): - cmd_output = json.loads(self.openstack('volume type list -f json')) - self.assertIn(self.NAME, [t['Name'] for t in cmd_output]) - - def test_volume_type_list_default(self): + def test_volume_type_create_list(self): + name = uuid.uuid4().hex cmd_output = json.loads(self.openstack( - 'volume type list -f json --default')) + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name, + ) + self.assertEqual(name, cmd_output['name']) + + cmd_output = json.loads(self.openstack( + 'volume type show -f json %s' % name + )) + self.assertEqual(name, cmd_output['name']) + + cmd_output = json.loads(self.openstack('volume type list -f json')) + self.assertIn(name, [t['Name'] for t in cmd_output]) + + cmd_output = json.loads(self.openstack( + 'volume type list -f json --default' + )) self.assertEqual(1, len(cmd_output)) self.assertEqual('lvmdriver-1', cmd_output[0]['Name']) - def test_volume_type_show(self): - cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) - self.assertEqual(self.NAME, cmd_output['name']) - def test_volume_type_set_unset_properties(self): + name = uuid.uuid4().hex + cmd_output = json.loads(self.openstack( + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name + ) + self.assertEqual(name, cmd_output['name']) + raw_output = self.openstack( - 'volume type set --property a=b --property c=d %s' % self.NAME) + 'volume type set --property a=b --property c=d %s' % name + ) self.assertEqual("", raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type show -f json %s' % name + )) # TODO(amotoki): properties output should be machine-readable self.assertEqual("a='b', c='d'", cmd_output['properties']) - raw_output = self.openstack('volume type unset --property a %s' % - self.NAME) + raw_output = self.openstack( + 'volume type unset --property a %s' % name + ) self.assertEqual("", raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type show -f json %s' % name + )) self.assertEqual("c='d'", cmd_output['properties']) def test_volume_type_set_unset_multiple_properties(self): + name = uuid.uuid4().hex + cmd_output = json.loads(self.openstack( + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name + ) + self.assertEqual(name, cmd_output['name']) + raw_output = self.openstack( - 'volume type set --property a=b --property c=d %s' % self.NAME) + 'volume type set --property a=b --property c=d %s' % name + ) self.assertEqual("", raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type show -f json %s' % name + )) self.assertEqual("a='b', c='d'", cmd_output['properties']) raw_output = self.openstack( - 'volume type unset --property a --property c %s' % self.NAME) + 'volume type unset --property a --property c %s' % name + ) self.assertEqual("", raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json %s' % self.NAME)) + 'volume type show -f json %s' % name + )) self.assertEqual("", cmd_output['properties']) def test_volume_type_set_unset_project(self): + name = uuid.uuid4().hex + cmd_output = json.loads(self.openstack( + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name + ) + self.assertEqual(name, cmd_output['name']) + raw_output = self.openstack( - 'volume type set --project admin %s' % self.NAME) + 'volume type set --project admin %s' % name + ) self.assertEqual("", raw_output) raw_output = self.openstack( - 'volume type unset --project admin %s' % self.NAME) + 'volume type unset --project admin %s' % name + ) self.assertEqual("", raw_output) def test_multi_delete(self): @@ -108,6 +145,7 @@ class VolumeTypeTests(common.BaseVolumeTests): # these to new test format when beef up all tests for # volume tye commands. def test_encryption_type(self): + name = uuid.uuid4().hex encryption_type = uuid.uuid4().hex # test create new encryption type cmd_output = json.loads(self.openstack( @@ -162,16 +200,28 @@ class VolumeTypeTests(common.BaseVolumeTests): for attr in expected: self.assertIn(attr, cmd_output['encryption']) # test set new encryption type + cmd_output = json.loads(self.openstack( + 'volume type create -f json --private ' + + name, + )) + self.addCleanup( + self.openstack, + 'volume type delete ' + name, + ) + self.assertEqual(name, cmd_output['name']) + raw_output = self.openstack( 'volume type set ' '--encryption-provider LuksEncryptor ' '--encryption-cipher aes-xts-plain64 ' '--encryption-key-size 128 ' '--encryption-control-location front-end ' + - self.NAME) + name) self.assertEqual('', raw_output) + cmd_output = json.loads(self.openstack( - 'volume type show -f json --encryption-type ' + self.NAME)) + 'volume type show -f json --encryption-type ' + name + )) expected = ["provider='LuksEncryptor'", "cipher='aes-xts-plain64'", "key_size='128'", @@ -180,10 +230,12 @@ class VolumeTypeTests(common.BaseVolumeTests): self.assertIn(attr, cmd_output['encryption']) # test unset encryption type raw_output = self.openstack( - 'volume type unset --encryption-type ' + self.NAME) + 'volume type unset --encryption-type ' + name + ) self.assertEqual('', raw_output) cmd_output = json.loads(self.openstack( - 'volume type show -f json --encryption-type ' + self.NAME)) + 'volume type show -f json --encryption-type ' + name + )) self.assertEqual('', cmd_output['encryption']) # test delete encryption type raw_output = self.openstack('volume type delete ' + encryption_type)