Skip to content

Commit ff3566e

Browse files
author
zhiyong.dai
committed
Functional test for agent
Using json format output in compute agent functional tests. Remove resource create/delete from setupClass() and teardownClass() methods Change-Id: Ic7c6c268dfccca097709378c0473eb82cddf7bc6
1 parent e35c97a commit ff3566e

1 file changed

Lines changed: 176 additions & 57 deletions

File tree

openstackclient/tests/functional/compute/v2/test_agent.py

Lines changed: 176 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -11,67 +11,186 @@
1111
# under the License.
1212

1313
import hashlib
14+
import json
1415

1516
from openstackclient.tests.functional import base
1617

1718

1819
class ComputeAgentTests(base.TestCase):
1920
"""Functional tests for compute agent."""
2021

21-
ID = None
22-
MD5HASH = hashlib.md5().hexdigest()
23-
URL = "http://localhost"
24-
VER = "v1"
25-
OS = "TEST_OS"
26-
ARCH = "x86_64"
27-
HYPER = "kvm"
28-
29-
HEADERS = ['agent_id', 'md5hash']
30-
FIELDS = ['agent_id', 'md5hash']
31-
32-
@classmethod
33-
def setUpClass(cls):
34-
opts = cls.get_opts(cls.HEADERS)
35-
raw_output = cls.openstack('compute agent create ' +
36-
cls.OS + ' ' + cls.ARCH + ' ' +
37-
cls.VER + ' ' + cls.URL + ' ' +
38-
cls.MD5HASH + ' ' + cls.HYPER + ' ' +
39-
opts)
40-
41-
# Get agent id because agent can only be deleted by ID
42-
output_list = raw_output.split('\n', 1)
43-
cls.ID = output_list[0]
44-
45-
cls.assertOutput(cls.MD5HASH + '\n', output_list[1])
46-
47-
@classmethod
48-
def tearDownClass(cls):
49-
raw_output = cls.openstack('compute agent delete ' + cls.ID)
50-
cls.assertOutput('', raw_output)
51-
52-
def test_agent_list(self):
53-
raw_output = self.openstack('compute agent list')
54-
self.assertIn(self.ID, raw_output)
55-
self.assertIn(self.OS, raw_output)
56-
self.assertIn(self.ARCH, raw_output)
57-
self.assertIn(self.VER, raw_output)
58-
self.assertIn(self.URL, raw_output)
59-
self.assertIn(self.MD5HASH, raw_output)
60-
self.assertIn(self.HYPER, raw_output)
61-
62-
def test_agent_set(self):
63-
ver = 'v2'
64-
url = "http://openstack"
65-
md5hash = hashlib.md5().hexdigest()
66-
67-
self.openstack('compute agent set '
68-
+ self.ID
69-
+ ' --agent-version ' + ver
70-
+ ' --url ' + url
71-
+ ' --md5hash ' + md5hash)
72-
73-
raw_output = self.openstack('compute agent list')
74-
self.assertIn(self.ID, raw_output)
75-
self.assertIn(ver, raw_output)
76-
self.assertIn(url, raw_output)
77-
self.assertIn(md5hash, raw_output)
22+
# Generate two different md5hash
23+
MD5HASH1 = hashlib.md5()
24+
MD5HASH1.update('agent_1')
25+
MD5HASH1 = MD5HASH1.hexdigest()
26+
MD5HASH2 = hashlib.md5()
27+
MD5HASH2.update('agent_2')
28+
MD5HASH2 = MD5HASH2.hexdigest()
29+
30+
def test_compute_agent_delete(self):
31+
"""Test compute agent create, delete multiple"""
32+
os1 = "os_1"
33+
arch1 = "x86_64"
34+
ver1 = "v1"
35+
url1 = "http://localhost"
36+
md5hash1 = self.MD5HASH1
37+
hyper1 = "kvm"
38+
cmd1 = ' '.join((os1, arch1, ver1, url1, md5hash1, hyper1))
39+
40+
cmd_output = json.loads(self.openstack(
41+
'compute agent create -f json ' +
42+
cmd1
43+
))
44+
agent_id1 = str(cmd_output["agent_id"])
45+
46+
os2 = "os_2"
47+
arch2 = "x86"
48+
ver2 = "v2"
49+
url2 = "http://openstack"
50+
md5hash2 = self.MD5HASH2
51+
hyper2 = "xen"
52+
cmd2 = ' '.join((os2, arch2, ver2, url2, md5hash2, hyper2))
53+
54+
cmd_output = json.loads(self.openstack(
55+
'compute agent create -f json ' +
56+
cmd2
57+
))
58+
agent_id2 = str(cmd_output["agent_id"])
59+
60+
# Test compute agent delete
61+
del_output = self.openstack(
62+
'compute agent delete ' +
63+
agent_id1 + ' ' + agent_id2
64+
)
65+
self.assertOutput('', del_output)
66+
67+
def test_compute_agent_list(self):
68+
"""Test compute agent create and list"""
69+
os1 = "os_1"
70+
arch1 = "x86_64"
71+
ver1 = "v1"
72+
url1 = "http://localhost"
73+
md5hash1 = self.MD5HASH1
74+
hyper1 = "kvm"
75+
cmd1 = ' '.join((os1, arch1, ver1, url1, md5hash1, hyper1))
76+
77+
cmd_output = json.loads(self.openstack(
78+
'compute agent create -f json ' +
79+
cmd1
80+
))
81+
agent_id1 = str(cmd_output["agent_id"])
82+
self.addCleanup(self.openstack, 'compute agent delete ' + agent_id1)
83+
84+
os2 = "os_2"
85+
arch2 = "x86"
86+
ver2 = "v2"
87+
url2 = "http://openstack"
88+
md5hash2 = self.MD5HASH2
89+
hyper2 = "xen"
90+
cmd2 = ' '.join((os2, arch2, ver2, url2, md5hash2, hyper2))
91+
92+
cmd_output = json.loads(self.openstack(
93+
'compute agent create -f json ' +
94+
cmd2
95+
))
96+
agent_id2 = str(cmd_output["agent_id"])
97+
self.addCleanup(self.openstack, 'compute agent delete ' + agent_id2)
98+
99+
# Test compute agent list
100+
cmd_output = json.loads(self.openstack(
101+
'compute agent list -f json'
102+
))
103+
104+
hypervisors = [x["Hypervisor"] for x in cmd_output]
105+
self.assertIn(hyper1, hypervisors)
106+
self.assertIn(hyper2, hypervisors)
107+
108+
os = [x['OS'] for x in cmd_output]
109+
self.assertIn(os1, os)
110+
self.assertIn(os2, os)
111+
112+
archs = [x['Architecture'] for x in cmd_output]
113+
self.assertIn(arch1, archs)
114+
self.assertIn(arch2, archs)
115+
116+
versions = [x['Version'] for x in cmd_output]
117+
self.assertIn(ver1, versions)
118+
self.assertIn(ver2, versions)
119+
120+
md5hashes = [x['Md5Hash'] for x in cmd_output]
121+
self.assertIn(md5hash1, md5hashes)
122+
self.assertIn(md5hash2, md5hashes)
123+
124+
urls = [x['URL'] for x in cmd_output]
125+
self.assertIn(url1, urls)
126+
self.assertIn(url2, urls)
127+
128+
# Test compute agent list --hypervisor
129+
cmd_output = json.loads(self.openstack(
130+
'compute agent list -f json ' +
131+
'--hypervisor kvm'
132+
))
133+
134+
hypervisors = [x["Hypervisor"] for x in cmd_output]
135+
self.assertIn(hyper1, hypervisors)
136+
self.assertNotIn(hyper2, hypervisors)
137+
138+
os = [x['OS'] for x in cmd_output]
139+
self.assertIn(os1, os)
140+
self.assertNotIn(os2, os)
141+
142+
archs = [x['Architecture'] for x in cmd_output]
143+
self.assertIn(arch1, archs)
144+
self.assertNotIn(arch2, archs)
145+
146+
versions = [x['Version'] for x in cmd_output]
147+
self.assertIn(ver1, versions)
148+
self.assertNotIn(ver2, versions)
149+
150+
md5hashes = [x['Md5Hash'] for x in cmd_output]
151+
self.assertIn(md5hash1, md5hashes)
152+
self.assertNotIn(md5hash2, md5hashes)
153+
154+
urls = [x['URL'] for x in cmd_output]
155+
self.assertIn(url1, urls)
156+
self.assertNotIn(url2, urls)
157+
158+
def test_compute_agent_set(self):
159+
"""Test compute agent set"""
160+
os1 = "os_1"
161+
arch1 = "x86_64"
162+
ver1 = "v1"
163+
ver2 = "v2"
164+
url1 = "http://localhost"
165+
url2 = "http://openstack"
166+
md5hash1 = self.MD5HASH1
167+
md5hash2 = self.MD5HASH2
168+
hyper1 = "kvm"
169+
cmd = ' '.join((os1, arch1, ver1, url1, md5hash1, hyper1))
170+
171+
cmd_output = json.loads(self.openstack(
172+
'compute agent create -f json ' +
173+
cmd
174+
))
175+
agent_id = str(cmd_output["agent_id"])
176+
self.assertEqual(ver1, cmd_output["version"])
177+
self.assertEqual(url1, cmd_output["url"])
178+
self.assertEqual(md5hash1, cmd_output["md5hash"])
179+
180+
self.addCleanup(self.openstack, 'compute agent delete ' + agent_id)
181+
182+
raw_output = self.openstack(
183+
'compute agent set ' +
184+
agent_id + ' ' +
185+
'--agent-version ' + ver2 + ' ' +
186+
'--url ' + url2 + ' ' +
187+
'--md5hash ' + md5hash2
188+
)
189+
self.assertOutput('', raw_output)
190+
191+
cmd_output = json.loads(self.openstack(
192+
'compute agent list -f json'
193+
))
194+
self.assertEqual(ver2, cmd_output[0]["Version"])
195+
self.assertEqual(url2, cmd_output[0]["URL"])
196+
self.assertEqual(md5hash2, cmd_output[0]["Md5Hash"])

0 commit comments

Comments
 (0)