|
11 | 11 | # under the License. |
12 | 12 |
|
13 | 13 | import hashlib |
| 14 | +import json |
14 | 15 |
|
15 | 16 | from openstackclient.tests.functional import base |
16 | 17 |
|
17 | 18 |
|
18 | 19 | class ComputeAgentTests(base.TestCase): |
19 | 20 | """Functional tests for compute agent.""" |
20 | 21 |
|
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