Skip to content

Commit e1e6880

Browse files
committed
Add unit tests for compute v2 aggregate
This patch add the complete unit tests to cover compute v2 aggregate object. Change-Id: Ifcf9248eabb5ca3ee5ca01c5843e96ba681c3b5a Closes-Bug: #1560832
1 parent 4cbcd02 commit e1e6880

1 file changed

Lines changed: 331 additions & 5 deletions

File tree

openstackclient/tests/compute/v2/test_aggregate.py

Lines changed: 331 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,24 @@
2020

2121
class TestAggregate(compute_fakes.TestComputev2):
2222

23+
fake_ag = compute_fakes.FakeAggregate.create_one_aggregate()
24+
25+
columns = (
26+
'availability_zone',
27+
'hosts',
28+
'id',
29+
'metadata',
30+
'name',
31+
)
32+
33+
data = (
34+
fake_ag.availability_zone,
35+
fake_ag.hosts,
36+
fake_ag.id,
37+
fake_ag.metadata,
38+
fake_ag.name,
39+
)
40+
2341
def setUp(self):
2442
super(TestAggregate, self).setUp()
2543

@@ -28,9 +46,317 @@ def setUp(self):
2846
self.aggregate_mock.reset_mock()
2947

3048

31-
class TestAggregateUnset(TestAggregate):
49+
class TestAggregateAddHost(TestAggregate):
3250

33-
fake_ag = compute_fakes.FakeAggregate.create_one_aggregate()
51+
def setUp(self):
52+
super(TestAggregateAddHost, self).setUp()
53+
54+
self.aggregate_mock.get.return_value = self.fake_ag
55+
self.aggregate_mock.add_host.return_value = self.fake_ag
56+
self.cmd = aggregate.AddAggregateHost(self.app, None)
57+
58+
def test_aggregate_add_host(self):
59+
arglist = [
60+
'ag1',
61+
'host1',
62+
]
63+
verifylist = [
64+
('aggregate', 'ag1'),
65+
('host', 'host1'),
66+
]
67+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
68+
columns, data = self.cmd.take_action(parsed_args)
69+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
70+
self.aggregate_mock.add_host.assert_called_once_with(self.fake_ag,
71+
parsed_args.host)
72+
self.assertEqual(self.columns, columns)
73+
self.assertEqual(self.data, data)
74+
75+
76+
class TestAggregateCreate(TestAggregate):
77+
78+
def setUp(self):
79+
super(TestAggregateCreate, self).setUp()
80+
81+
self.aggregate_mock.create.return_value = self.fake_ag
82+
self.aggregate_mock.set_metadata.return_value = self.fake_ag
83+
self.cmd = aggregate.CreateAggregate(self.app, None)
84+
85+
def test_aggregate_create(self):
86+
arglist = [
87+
'ag1',
88+
]
89+
verifylist = [
90+
('name', 'ag1'),
91+
]
92+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
93+
columns, data = self.cmd.take_action(parsed_args)
94+
self.aggregate_mock.create.assert_called_once_with(parsed_args.name,
95+
None)
96+
self.assertEqual(self.columns, columns)
97+
self.assertEqual(self.data, data)
98+
99+
def test_aggregate_create_with_zone(self):
100+
arglist = [
101+
'--zone', 'zone1',
102+
'ag1',
103+
]
104+
verifylist = [
105+
('zone', 'zone1'),
106+
('name', 'ag1'),
107+
]
108+
109+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
110+
columns, data = self.cmd.take_action(parsed_args)
111+
self.aggregate_mock.create.assert_called_once_with(parsed_args.name,
112+
parsed_args.zone)
113+
self.assertEqual(self.columns, columns)
114+
self.assertEqual(self.data, data)
115+
116+
def test_aggregate_create_with_property(self):
117+
arglist = [
118+
'--property', 'key1=value1',
119+
'--property', 'key2=value2',
120+
'ag1',
121+
]
122+
verifylist = [
123+
('property', {'key1': 'value1', 'key2': 'value2'}),
124+
('name', 'ag1'),
125+
]
126+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
127+
columns, data = self.cmd.take_action(parsed_args)
128+
self.aggregate_mock.create.assert_called_once_with(parsed_args.name,
129+
None)
130+
self.aggregate_mock.set_metadata.assert_called_once_with(
131+
self.fake_ag, parsed_args.property)
132+
self.assertEqual(self.columns, columns)
133+
self.assertEqual(self.data, data)
134+
135+
136+
class TestAggregateDelete(TestAggregate):
137+
138+
def setUp(self):
139+
super(TestAggregateDelete, self).setUp()
140+
141+
self.aggregate_mock.get.return_value = self.fake_ag
142+
self.cmd = aggregate.DeleteAggregate(self.app, None)
143+
144+
def test_aggregate_delete(self):
145+
arglist = [
146+
'ag1',
147+
]
148+
verifylist = [
149+
('aggregate', 'ag1'),
150+
]
151+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
152+
result = self.cmd.take_action(parsed_args)
153+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
154+
self.aggregate_mock.delete.assert_called_once_with(self.fake_ag.id)
155+
self.assertIsNone(result)
156+
157+
158+
class TestAggregateList(TestAggregate):
159+
160+
list_columns = (
161+
"ID",
162+
"Name",
163+
"Availability Zone",
164+
)
165+
166+
list_columns_long = (
167+
"ID",
168+
"Name",
169+
"Availability Zone",
170+
"Properties",
171+
)
172+
173+
list_data = ((
174+
TestAggregate.fake_ag.id,
175+
TestAggregate.fake_ag.name,
176+
TestAggregate.fake_ag.availability_zone,
177+
), )
178+
179+
list_data_long = ((
180+
TestAggregate.fake_ag.id,
181+
TestAggregate.fake_ag.name,
182+
TestAggregate.fake_ag.availability_zone,
183+
{},
184+
), )
185+
186+
def setUp(self):
187+
super(TestAggregateList, self).setUp()
188+
189+
self.aggregate_mock.list.return_value = [self.fake_ag]
190+
self.cmd = aggregate.ListAggregate(self.app, None)
191+
192+
def test_aggregate_list(self):
193+
194+
parsed_args = self.check_parser(self.cmd, [], [])
195+
columns, data = self.cmd.take_action(parsed_args)
196+
197+
self.assertEqual(self.list_columns, columns)
198+
self.assertEqual(self.list_data, tuple(data))
199+
200+
def test_aggregate_list_with_long(self):
201+
arglist = [
202+
'--long',
203+
]
204+
vertifylist = [
205+
('long', True),
206+
]
207+
parsed_args = self.check_parser(self.cmd, arglist, vertifylist)
208+
columns, data = self.cmd.take_action(parsed_args)
209+
210+
self.assertEqual(self.list_columns_long, columns)
211+
self.assertEqual(self.list_data_long, tuple(data))
212+
213+
214+
class TestAggregateRemoveHost(TestAggregate):
215+
216+
def setUp(self):
217+
super(TestAggregateRemoveHost, self).setUp()
218+
219+
self.aggregate_mock.get.return_value = self.fake_ag
220+
self.aggregate_mock.remove_host.return_value = self.fake_ag
221+
self.cmd = aggregate.RemoveAggregateHost(self.app, None)
222+
223+
def test_aggregate_add_host(self):
224+
arglist = [
225+
'ag1',
226+
'host1',
227+
]
228+
verifylist = [
229+
('aggregate', 'ag1'),
230+
('host', 'host1'),
231+
]
232+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
233+
columns, data = self.cmd.take_action(parsed_args)
234+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
235+
self.aggregate_mock.remove_host.assert_called_once_with(
236+
self.fake_ag, parsed_args.host)
237+
self.assertEqual(self.columns, columns)
238+
self.assertEqual(self.data, data)
239+
240+
241+
class TestAggregateSet(TestAggregate):
242+
243+
def setUp(self):
244+
super(TestAggregateSet, self).setUp()
245+
246+
self.aggregate_mock.get.return_value = self.fake_ag
247+
self.cmd = aggregate.SetAggregate(self.app, None)
248+
249+
def test_aggregate_set_no_option(self):
250+
arglist = [
251+
'ag1',
252+
]
253+
verifylist = [
254+
('aggregate', 'ag1'),
255+
]
256+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
257+
result = self.cmd.take_action(parsed_args)
258+
259+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
260+
self.assertNotCalled(self.aggregate_mock.update)
261+
self.assertNotCalled(self.aggregate_mock.set_metadata)
262+
self.assertIsNone(result)
263+
264+
def test_aggregate_set_with_name(self):
265+
arglist = [
266+
'--name', 'new_name',
267+
'ag1',
268+
]
269+
verifylist = [
270+
('name', 'new_name'),
271+
('aggregate', 'ag1'),
272+
]
273+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
274+
result = self.cmd.take_action(parsed_args)
275+
276+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
277+
self.aggregate_mock.update.assert_called_once_with(
278+
self.fake_ag, {'name': parsed_args.name})
279+
self.assertNotCalled(self.aggregate_mock.set_metadata)
280+
self.assertIsNone(result)
281+
282+
def test_aggregate_set_with_zone(self):
283+
arglist = [
284+
'--zone', 'new_zone',
285+
'ag1',
286+
]
287+
verifylist = [
288+
('zone', 'new_zone'),
289+
('aggregate', 'ag1'),
290+
]
291+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
292+
result = self.cmd.take_action(parsed_args)
293+
294+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
295+
self.aggregate_mock.update.assert_called_once_with(
296+
self.fake_ag, {'availability_zone': parsed_args.zone})
297+
self.assertNotCalled(self.aggregate_mock.set_metadata)
298+
self.assertIsNone(result)
299+
300+
def test_aggregate_set_with_property(self):
301+
arglist = [
302+
'--property', 'key1=value1',
303+
'--property', 'key2=value2',
304+
'ag1',
305+
]
306+
verifylist = [
307+
('property', {'key1': 'value1', 'key2': 'value2'}),
308+
('aggregate', 'ag1'),
309+
]
310+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
311+
result = self.cmd.take_action(parsed_args)
312+
313+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
314+
self.assertNotCalled(self.aggregate_mock.update)
315+
self.aggregate_mock.set_metadata.assert_called_once_with(
316+
self.fake_ag, parsed_args.property)
317+
self.assertIsNone(result)
318+
319+
320+
class TestAggregateShow(TestAggregate):
321+
322+
columns = (
323+
'availability_zone',
324+
'hosts',
325+
'id',
326+
'name',
327+
'properties',
328+
)
329+
330+
data = (
331+
TestAggregate.fake_ag.availability_zone,
332+
TestAggregate.fake_ag.hosts,
333+
TestAggregate.fake_ag.id,
334+
TestAggregate.fake_ag.name,
335+
'',
336+
)
337+
338+
def setUp(self):
339+
super(TestAggregateShow, self).setUp()
340+
341+
self.aggregate_mock.get.return_value = self.fake_ag
342+
self.cmd = aggregate.ShowAggregate(self.app, None)
343+
344+
def test_aggregate_show(self):
345+
arglist = [
346+
'ag1',
347+
]
348+
verifylist = [
349+
('aggregate', 'ag1'),
350+
]
351+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
352+
columns, data = self.cmd.take_action(parsed_args)
353+
self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)
354+
355+
self.assertEqual(self.columns, columns)
356+
self.assertEqual(self.data, data)
357+
358+
359+
class TestAggregateUnset(TestAggregate):
34360

35361
def setUp(self):
36362
super(TestAggregateUnset, self).setUp()
@@ -41,11 +367,11 @@ def setUp(self):
41367
def test_aggregate_unset(self):
42368
arglist = [
43369
'--property', 'unset_key',
44-
'ag1'
370+
'ag1',
45371
]
46372
verifylist = [
47373
('property', ['unset_key']),
48-
('aggregate', 'ag1')
374+
('aggregate', 'ag1'),
49375
]
50376

51377
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -56,7 +382,7 @@ def test_aggregate_unset(self):
56382

57383
def test_aggregate_unset_no_property(self):
58384
arglist = [
59-
'ag1'
385+
'ag1',
60386
]
61387
verifylist = None
62388
self.assertRaises(tests_utils.ParserException,

0 commit comments

Comments
 (0)