Skip to content

Commit 9fd145e

Browse files
author
jiahui.qiang
committed
Functional test for volume qos
Refactor functional tests for testing more command options. Change-Id: I6d5a82eb0e84f72e8da76b17c952e4daae9dbc08
1 parent e8eb091 commit 9fd145e

2 files changed

Lines changed: 202 additions & 73 deletions

File tree

openstackclient/tests/functional/volume/v1/test_qos.py

Lines changed: 100 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import json
1314
import uuid
1415

1516
from openstackclient.tests.functional.volume.v1 import common
@@ -18,38 +19,103 @@
1819
class QosTests(common.BaseVolumeTests):
1920
"""Functional tests for volume qos. """
2021

21-
NAME = uuid.uuid4().hex
22-
HEADERS = ['Name']
23-
FIELDS = ['id', 'name']
24-
ID = None
25-
26-
@classmethod
27-
def setUpClass(cls):
28-
super(QosTests, cls).setUpClass()
29-
opts = cls.get_opts(cls.FIELDS)
30-
raw_output = cls.openstack('volume qos create ' + cls.NAME + opts)
31-
cls.ID, name, rol = raw_output.split('\n')
32-
cls.assertOutput(cls.NAME, name)
33-
34-
@classmethod
35-
def tearDownClass(cls):
36-
raw_output = cls.openstack('volume qos delete ' + cls.ID)
37-
cls.assertOutput('', raw_output)
38-
39-
def test_volume_qos_list(self):
40-
opts = self.get_opts(self.HEADERS)
41-
raw_output = self.openstack('volume qos list' + opts)
42-
self.assertIn(self.NAME, raw_output)
43-
44-
def test_volume_qos_show(self):
45-
opts = self.get_opts(self.FIELDS)
46-
raw_output = self.openstack('volume qos show ' + self.ID + opts)
47-
self.assertEqual(self.ID + "\n" + self.NAME + "\n", raw_output)
48-
49-
def test_volume_qos_metadata(self):
22+
def test_volume_qos_create_list(self):
23+
"""Test create, list, delete multiple"""
24+
name1 = uuid.uuid4().hex
25+
cmd_output = json.loads(self.openstack(
26+
'volume qos create -f json ' +
27+
name1
28+
))
29+
self.assertEqual(
30+
name1,
31+
cmd_output['name']
32+
)
33+
34+
name2 = uuid.uuid4().hex
35+
cmd_output = json.loads(self.openstack(
36+
'volume qos create -f json ' +
37+
name2
38+
))
39+
self.assertEqual(
40+
name2,
41+
cmd_output['name']
42+
)
43+
44+
# Test list
45+
cmd_output = json.loads(self.openstack(
46+
'volume qos list -f json'
47+
))
48+
names = [x["Name"] for x in cmd_output]
49+
self.assertIn(name1, names)
50+
self.assertIn(name2, names)
51+
52+
# Test delete multiple
53+
del_output = self.openstack('volume qos delete ' + name1 + ' ' + name2)
54+
self.assertOutput('', del_output)
55+
56+
def test_volume_qos_set_show_unset(self):
57+
"""Tests create volume qos, set, unset, show, delete"""
58+
59+
name = uuid.uuid4().hex
60+
cmd_output = json.loads(self.openstack(
61+
'volume qos create -f json ' +
62+
'--consumer front-end '
63+
'--property Alpha=a ' +
64+
name
65+
))
66+
self.addCleanup(self.openstack, 'volume qos delete ' + name)
67+
self.assertEqual(
68+
name,
69+
cmd_output['name']
70+
)
71+
72+
self.assertEqual(
73+
"front-end",
74+
cmd_output['consumer']
75+
)
76+
77+
# Test volume qos set
78+
raw_output = self.openstack(
79+
'volume qos set ' +
80+
'--property Alpha=c ' +
81+
'--property Beta=b ' +
82+
name,
83+
)
84+
self.assertOutput('', raw_output)
85+
86+
# Test volume qos show
87+
cmd_output = json.loads(self.openstack(
88+
'volume qos show -f json ' +
89+
name
90+
))
91+
self.assertEqual(
92+
name,
93+
cmd_output['name']
94+
)
95+
self.assertEqual(
96+
"Alpha='c', Beta='b'",
97+
cmd_output['specs']
98+
)
99+
100+
# Test volume qos unset
50101
raw_output = self.openstack(
51-
'volume qos set --property a=b --property c=d ' + self.ID)
52-
self.assertEqual("", raw_output)
53-
opts = self.get_opts(['name', 'specs'])
54-
raw_output = self.openstack('volume qos show ' + self.ID + opts)
55-
self.assertEqual(self.NAME + "\na='b', c='d'\n", raw_output)
102+
'volume qos unset ' +
103+
'--property Alpha ' +
104+
name,
105+
)
106+
self.assertOutput('', raw_output)
107+
108+
cmd_output = json.loads(self.openstack(
109+
'volume qos show -f json ' +
110+
name
111+
))
112+
self.assertEqual(
113+
name,
114+
cmd_output['name']
115+
)
116+
self.assertEqual(
117+
"Beta='b'",
118+
cmd_output['specs']
119+
)
120+
121+
# TODO(qiangjiahui): Add tests for associate and disassociate volume type

openstackclient/tests/functional/volume/v2/test_qos.py

Lines changed: 102 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import json
1314
import uuid
1415

1516
from openstackclient.tests.functional.volume.v2 import common
@@ -18,45 +19,107 @@
1819
class QosTests(common.BaseVolumeTests):
1920
"""Functional tests for volume qos. """
2021

21-
NAME = uuid.uuid4().hex
22-
HEADERS = ['Name']
23-
FIELDS = ['id', 'name']
24-
ID = None
25-
26-
@classmethod
27-
def setUpClass(cls):
28-
super(QosTests, cls).setUpClass()
29-
opts = cls.get_opts(cls.FIELDS)
30-
raw_output = cls.openstack('volume qos create ' + cls.NAME + opts)
31-
cls.ID, name, rol = raw_output.split('\n')
32-
cls.assertOutput(cls.NAME, name)
33-
34-
@classmethod
35-
def tearDownClass(cls):
36-
raw_output = cls.openstack('volume qos delete ' + cls.ID)
37-
cls.assertOutput('', raw_output)
38-
39-
def test_volume_qos_list(self):
40-
opts = self.get_opts(self.HEADERS)
41-
raw_output = self.openstack('volume qos list' + opts)
42-
self.assertIn(self.NAME, raw_output)
43-
44-
def test_volume_qos_show(self):
45-
opts = self.get_opts(self.FIELDS)
46-
raw_output = self.openstack('volume qos show ' + self.ID + opts)
47-
self.assertEqual(self.ID + "\n" + self.NAME + "\n", raw_output)
48-
49-
def test_volume_qos_metadata(self):
22+
def test_volume_qos_create_delete_list(self):
23+
"""Test create, list, delete multiple"""
24+
name1 = uuid.uuid4().hex
25+
cmd_output = json.loads(self.openstack(
26+
'volume qos create -f json ' +
27+
name1
28+
))
29+
self.assertEqual(
30+
name1,
31+
cmd_output['name']
32+
)
33+
34+
name2 = uuid.uuid4().hex
35+
cmd_output = json.loads(self.openstack(
36+
'volume qos create -f json ' +
37+
name2
38+
))
39+
self.assertEqual(
40+
name2,
41+
cmd_output['name']
42+
)
43+
44+
# Test list
45+
cmd_output = json.loads(self.openstack(
46+
'volume qos list -f json'
47+
))
48+
names = [x["Name"] for x in cmd_output]
49+
self.assertIn(name1, names)
50+
self.assertIn(name2, names)
51+
52+
# Test delete multiple
53+
del_output = self.openstack('volume qos delete ' + name1 + ' ' + name2)
54+
self.assertOutput('', del_output)
55+
56+
def test_volume_qos_set_show_unset(self):
57+
"""Tests create volume qos, set, unset, show, delete"""
58+
59+
name = uuid.uuid4().hex
60+
cmd_output = json.loads(self.openstack(
61+
'volume qos create -f json ' +
62+
'--consumer front-end '
63+
'--property Alpha=a ' +
64+
name
65+
))
66+
self.addCleanup(self.openstack, 'volume qos delete ' + name)
67+
self.assertEqual(
68+
name,
69+
cmd_output['name']
70+
)
71+
72+
self.assertEqual(
73+
"front-end",
74+
cmd_output['consumer']
75+
)
76+
self.assertEqual(
77+
"Alpha='a'",
78+
cmd_output['properties']
79+
)
80+
81+
# Test volume qos set
5082
raw_output = self.openstack(
51-
'volume qos set --property a=b --property c=d ' + self.ID)
52-
self.assertEqual("", raw_output)
53-
opts = self.get_opts(['name', 'properties'])
54-
raw_output = self.openstack('volume qos show ' + self.ID + opts)
55-
self.assertEqual(self.NAME + "\na='b', c='d'\n", raw_output)
83+
'volume qos set ' +
84+
'--property Alpha=c ' +
85+
'--property Beta=b ' +
86+
name,
87+
)
88+
self.assertOutput('', raw_output)
89+
90+
# Test volume qos show
91+
cmd_output = json.loads(self.openstack(
92+
'volume qos show -f json ' +
93+
name
94+
))
95+
self.assertEqual(
96+
name,
97+
cmd_output['name']
98+
)
99+
self.assertEqual(
100+
"Alpha='c', Beta='b'",
101+
cmd_output['properties']
102+
)
56103

104+
# Test volume qos unset
57105
raw_output = self.openstack(
58-
'volume qos unset --property a ' + self.ID)
59-
self.assertEqual("", raw_output)
60-
opts = self.get_opts(['name', 'properties'])
61-
raw_output = self.openstack('volume qos show ' + self.ID + opts)
62-
self.assertEqual(self.NAME + "\nc='d'\n", raw_output)
106+
'volume qos unset ' +
107+
'--property Alpha ' +
108+
name,
109+
)
110+
self.assertOutput('', raw_output)
111+
112+
cmd_output = json.loads(self.openstack(
113+
'volume qos show -f json ' +
114+
name
115+
))
116+
self.assertEqual(
117+
name,
118+
cmd_output['name']
119+
)
120+
self.assertEqual(
121+
"Beta='b'",
122+
cmd_output['properties']
123+
)
124+
125+
# TODO(qiangjiahui): Add tests for associate and disassociate volume type

0 commit comments

Comments
 (0)