summaryrefslogtreecommitdiff
path: root/openstackclient/tests/functional
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-02-09 06:35:56 +0000
committerGerrit Code Review <review@openstack.org>2017-02-09 06:35:56 +0000
commit46d1df0adf00862a4b9ff21925836539a0e2f98f (patch)
tree95363e4fc1676fb5647e7239ae4bb4a20d34677d /openstackclient/tests/functional
parent2966bd0639bba203f1f46216b52a41e7a6596375 (diff)
parentff3566ef48f1a68d5267cd758d42fdc2140d14b0 (diff)
downloadpython-openstackclient-46d1df0adf00862a4b9ff21925836539a0e2f98f.tar.gz
Merge "Functional test for agent"
Diffstat (limited to 'openstackclient/tests/functional')
-rw-r--r--openstackclient/tests/functional/compute/v2/test_agent.py233
1 files changed, 176 insertions, 57 deletions
diff --git a/openstackclient/tests/functional/compute/v2/test_agent.py b/openstackclient/tests/functional/compute/v2/test_agent.py
index 7115db1f..1a112e82 100644
--- a/openstackclient/tests/functional/compute/v2/test_agent.py
+++ b/openstackclient/tests/functional/compute/v2/test_agent.py
@@ -11,6 +11,7 @@
# under the License.
import hashlib
+import json
from openstackclient.tests.functional import base
@@ -18,60 +19,178 @@ from openstackclient.tests.functional import base
class ComputeAgentTests(base.TestCase):
"""Functional tests for compute agent."""
- ID = None
- MD5HASH = hashlib.md5().hexdigest()
- URL = "http://localhost"
- VER = "v1"
- OS = "TEST_OS"
- ARCH = "x86_64"
- HYPER = "kvm"
-
- HEADERS = ['agent_id', 'md5hash']
- FIELDS = ['agent_id', 'md5hash']
-
- @classmethod
- def setUpClass(cls):
- opts = cls.get_opts(cls.HEADERS)
- raw_output = cls.openstack('compute agent create ' +
- cls.OS + ' ' + cls.ARCH + ' ' +
- cls.VER + ' ' + cls.URL + ' ' +
- cls.MD5HASH + ' ' + cls.HYPER + ' ' +
- opts)
-
- # Get agent id because agent can only be deleted by ID
- output_list = raw_output.split('\n', 1)
- cls.ID = output_list[0]
-
- cls.assertOutput(cls.MD5HASH + '\n', output_list[1])
-
- @classmethod
- def tearDownClass(cls):
- raw_output = cls.openstack('compute agent delete ' + cls.ID)
- cls.assertOutput('', raw_output)
-
- def test_agent_list(self):
- raw_output = self.openstack('compute agent list')
- self.assertIn(self.ID, raw_output)
- self.assertIn(self.OS, raw_output)
- self.assertIn(self.ARCH, raw_output)
- self.assertIn(self.VER, raw_output)
- self.assertIn(self.URL, raw_output)
- self.assertIn(self.MD5HASH, raw_output)
- self.assertIn(self.HYPER, raw_output)
-
- def test_agent_set(self):
- ver = 'v2'
- url = "http://openstack"
- md5hash = hashlib.md5().hexdigest()
-
- self.openstack('compute agent set '
- + self.ID
- + ' --agent-version ' + ver
- + ' --url ' + url
- + ' --md5hash ' + md5hash)
-
- raw_output = self.openstack('compute agent list')
- self.assertIn(self.ID, raw_output)
- self.assertIn(ver, raw_output)
- self.assertIn(url, raw_output)
- self.assertIn(md5hash, raw_output)
+ # Generate two different md5hash
+ MD5HASH1 = hashlib.md5()
+ MD5HASH1.update('agent_1')
+ MD5HASH1 = MD5HASH1.hexdigest()
+ MD5HASH2 = hashlib.md5()
+ MD5HASH2.update('agent_2')
+ MD5HASH2 = MD5HASH2.hexdigest()
+
+ def test_compute_agent_delete(self):
+ """Test compute agent create, delete multiple"""
+ os1 = "os_1"
+ arch1 = "x86_64"
+ ver1 = "v1"
+ url1 = "http://localhost"
+ md5hash1 = self.MD5HASH1
+ hyper1 = "kvm"
+ cmd1 = ' '.join((os1, arch1, ver1, url1, md5hash1, hyper1))
+
+ cmd_output = json.loads(self.openstack(
+ 'compute agent create -f json ' +
+ cmd1
+ ))
+ agent_id1 = str(cmd_output["agent_id"])
+
+ os2 = "os_2"
+ arch2 = "x86"
+ ver2 = "v2"
+ url2 = "http://openstack"
+ md5hash2 = self.MD5HASH2
+ hyper2 = "xen"
+ cmd2 = ' '.join((os2, arch2, ver2, url2, md5hash2, hyper2))
+
+ cmd_output = json.loads(self.openstack(
+ 'compute agent create -f json ' +
+ cmd2
+ ))
+ agent_id2 = str(cmd_output["agent_id"])
+
+ # Test compute agent delete
+ del_output = self.openstack(
+ 'compute agent delete ' +
+ agent_id1 + ' ' + agent_id2
+ )
+ self.assertOutput('', del_output)
+
+ def test_compute_agent_list(self):
+ """Test compute agent create and list"""
+ os1 = "os_1"
+ arch1 = "x86_64"
+ ver1 = "v1"
+ url1 = "http://localhost"
+ md5hash1 = self.MD5HASH1
+ hyper1 = "kvm"
+ cmd1 = ' '.join((os1, arch1, ver1, url1, md5hash1, hyper1))
+
+ cmd_output = json.loads(self.openstack(
+ 'compute agent create -f json ' +
+ cmd1
+ ))
+ agent_id1 = str(cmd_output["agent_id"])
+ self.addCleanup(self.openstack, 'compute agent delete ' + agent_id1)
+
+ os2 = "os_2"
+ arch2 = "x86"
+ ver2 = "v2"
+ url2 = "http://openstack"
+ md5hash2 = self.MD5HASH2
+ hyper2 = "xen"
+ cmd2 = ' '.join((os2, arch2, ver2, url2, md5hash2, hyper2))
+
+ cmd_output = json.loads(self.openstack(
+ 'compute agent create -f json ' +
+ cmd2
+ ))
+ agent_id2 = str(cmd_output["agent_id"])
+ self.addCleanup(self.openstack, 'compute agent delete ' + agent_id2)
+
+ # Test compute agent list
+ cmd_output = json.loads(self.openstack(
+ 'compute agent list -f json'
+ ))
+
+ hypervisors = [x["Hypervisor"] for x in cmd_output]
+ self.assertIn(hyper1, hypervisors)
+ self.assertIn(hyper2, hypervisors)
+
+ os = [x['OS'] for x in cmd_output]
+ self.assertIn(os1, os)
+ self.assertIn(os2, os)
+
+ archs = [x['Architecture'] for x in cmd_output]
+ self.assertIn(arch1, archs)
+ self.assertIn(arch2, archs)
+
+ versions = [x['Version'] for x in cmd_output]
+ self.assertIn(ver1, versions)
+ self.assertIn(ver2, versions)
+
+ md5hashes = [x['Md5Hash'] for x in cmd_output]
+ self.assertIn(md5hash1, md5hashes)
+ self.assertIn(md5hash2, md5hashes)
+
+ urls = [x['URL'] for x in cmd_output]
+ self.assertIn(url1, urls)
+ self.assertIn(url2, urls)
+
+ # Test compute agent list --hypervisor
+ cmd_output = json.loads(self.openstack(
+ 'compute agent list -f json ' +
+ '--hypervisor kvm'
+ ))
+
+ hypervisors = [x["Hypervisor"] for x in cmd_output]
+ self.assertIn(hyper1, hypervisors)
+ self.assertNotIn(hyper2, hypervisors)
+
+ os = [x['OS'] for x in cmd_output]
+ self.assertIn(os1, os)
+ self.assertNotIn(os2, os)
+
+ archs = [x['Architecture'] for x in cmd_output]
+ self.assertIn(arch1, archs)
+ self.assertNotIn(arch2, archs)
+
+ versions = [x['Version'] for x in cmd_output]
+ self.assertIn(ver1, versions)
+ self.assertNotIn(ver2, versions)
+
+ md5hashes = [x['Md5Hash'] for x in cmd_output]
+ self.assertIn(md5hash1, md5hashes)
+ self.assertNotIn(md5hash2, md5hashes)
+
+ urls = [x['URL'] for x in cmd_output]
+ self.assertIn(url1, urls)
+ self.assertNotIn(url2, urls)
+
+ def test_compute_agent_set(self):
+ """Test compute agent set"""
+ os1 = "os_1"
+ arch1 = "x86_64"
+ ver1 = "v1"
+ ver2 = "v2"
+ url1 = "http://localhost"
+ url2 = "http://openstack"
+ md5hash1 = self.MD5HASH1
+ md5hash2 = self.MD5HASH2
+ hyper1 = "kvm"
+ cmd = ' '.join((os1, arch1, ver1, url1, md5hash1, hyper1))
+
+ cmd_output = json.loads(self.openstack(
+ 'compute agent create -f json ' +
+ cmd
+ ))
+ agent_id = str(cmd_output["agent_id"])
+ self.assertEqual(ver1, cmd_output["version"])
+ self.assertEqual(url1, cmd_output["url"])
+ self.assertEqual(md5hash1, cmd_output["md5hash"])
+
+ self.addCleanup(self.openstack, 'compute agent delete ' + agent_id)
+
+ raw_output = self.openstack(
+ 'compute agent set ' +
+ agent_id + ' ' +
+ '--agent-version ' + ver2 + ' ' +
+ '--url ' + url2 + ' ' +
+ '--md5hash ' + md5hash2
+ )
+ self.assertOutput('', raw_output)
+
+ cmd_output = json.loads(self.openstack(
+ 'compute agent list -f json'
+ ))
+ self.assertEqual(ver2, cmd_output[0]["Version"])
+ self.assertEqual(url2, cmd_output[0]["URL"])
+ self.assertEqual(md5hash2, cmd_output[0]["Md5Hash"])