Jay Pipes | 13b479b | 2012-06-11 14:52:27 -0400 | [diff] [blame] | 1 | # vim: tabstop=4 shiftwidth=4 softtabstop=4 |
| 2 | |
ZhiQiang Fan | 39f9722 | 2013-09-20 04:49:44 +0800 | [diff] [blame] | 3 | # Copyright 2012 OpenStack Foundation |
Jay Pipes | 13b479b | 2012-06-11 14:52:27 -0400 | [diff] [blame] | 4 | # All Rights Reserved. |
| 5 | # |
| 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| 7 | # not use this file except in compliance with the License. You may obtain |
| 8 | # a copy of the License at |
| 9 | # |
| 10 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 11 | # |
| 12 | # Unless required by applicable law or agreed to in writing, software |
| 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| 15 | # License for the specific language governing permissions and limitations |
| 16 | # under the License. |
| 17 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 18 | import sys |
LingxianKong | b2ca96f | 2013-09-28 23:09:30 +0800 | [diff] [blame] | 19 | import uuid |
Jay Pipes | 13b479b | 2012-06-11 14:52:27 -0400 | [diff] [blame] | 20 | |
Sean Dague | 1937d09 | 2013-05-17 16:36:38 -0400 | [diff] [blame] | 21 | from tempest.api.compute import base |
Matthew Treinish | 481466b | 2012-12-20 17:16:01 -0500 | [diff] [blame] | 22 | from tempest import clients |
Matthew Treinish | a83a16e | 2012-12-07 13:44:02 -0500 | [diff] [blame] | 23 | from tempest.common.utils.data_utils import rand_name |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 24 | from tempest import exceptions |
Chris Yeoh | 9465b0b | 2013-02-09 22:19:15 +1030 | [diff] [blame] | 25 | from tempest.test import attr |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 26 | |
| 27 | |
Xiao Hanyu | ab61c07 | 2013-06-26 15:33:42 +0800 | [diff] [blame] | 28 | class ServersNegativeTestJSON(base.BaseComputeTest): |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 29 | _interface = 'json' |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 30 | |
| 31 | @classmethod |
| 32 | def setUpClass(cls): |
Xiao Hanyu | ab61c07 | 2013-06-26 15:33:42 +0800 | [diff] [blame] | 33 | super(ServersNegativeTestJSON, cls).setUpClass() |
Daryl Walleck | c725196 | 2012-03-12 17:26:54 -0500 | [diff] [blame] | 34 | cls.client = cls.servers_client |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 35 | cls.img_client = cls.images_client |
Matthew Treinish | 481466b | 2012-12-20 17:16:01 -0500 | [diff] [blame] | 36 | cls.alt_os = clients.AltManager() |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 37 | cls.alt_client = cls.alt_os.servers_client |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 38 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 39 | @attr(type=['negative', 'gate']) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 40 | def test_server_name_blank(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 41 | # Create a server with name parameter empty |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 42 | |
| 43 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 44 | self.create_server, |
| 45 | name='') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 46 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 47 | @attr(type=['negative', 'gate']) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 48 | def test_personality_file_contents_not_encoded(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 49 | # Use an unencoded file when creating a server with personality |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 50 | |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 51 | file_contents = 'This is a test file.' |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 52 | person = [{'path': '/etc/testfile.txt', |
| 53 | 'contents': file_contents}] |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 54 | |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 55 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 56 | self.create_server, |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 57 | personality=person) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 58 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 59 | @attr(type=['negative', 'gate']) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 60 | def test_create_with_invalid_image(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 61 | # Create a server with an unknown image |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 62 | |
| 63 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 64 | self.create_server, |
| 65 | image_id=-1) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 66 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 67 | @attr(type=['negative', 'gate']) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 68 | def test_create_with_invalid_flavor(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 69 | # Create a server with an unknown flavor |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 70 | |
| 71 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 72 | self.create_server, |
| 73 | flavor=-1,) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 74 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 75 | @attr(type=['negative', 'gate']) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 76 | def test_invalid_access_ip_v4_address(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 77 | # An access IPv4 address must match a valid address pattern |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 78 | |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 79 | IPv4 = '1.1.1.1.1.1' |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 80 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 81 | self.create_server, accessIPv4=IPv4) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 82 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 83 | @attr(type=['negative', 'gate']) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 84 | def test_invalid_ip_v6_address(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 85 | # An access IPv6 address must match a valid address pattern |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 86 | |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 87 | IPv6 = 'notvalid' |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 88 | |
| 89 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 90 | self.create_server, accessIPv6=IPv6) |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 91 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 92 | @attr(type=['negative', 'gate']) |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 93 | def test_reboot_deleted_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 94 | # Reboot a deleted server |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 95 | resp, server = self.create_server() |
| 96 | self.server_id = server['id'] |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 97 | self.client.delete_server(self.server_id) |
David Kranz | 1b39dd4 | 2012-05-30 17:04:09 -0400 | [diff] [blame] | 98 | self.client.wait_for_server_termination(self.server_id) |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 99 | self.assertRaises(exceptions.NotFound, self.client.reboot, |
| 100 | self.server_id, 'SOFT') |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 101 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 102 | @attr(type=['negative', 'gate']) |
Anju Tiwari | 8c78976 | 2013-07-22 11:02:05 +0530 | [diff] [blame] | 103 | def test_pause_paused_server(self): |
| 104 | # Pause a paused server. |
| 105 | resp, server = self.create_server(wait_until='ACTIVE') |
| 106 | self.server_id = server['id'] |
| 107 | self.client.pause_server(self.server_id) |
| 108 | self.client.wait_for_server_status(self.server_id, 'PAUSED') |
| 109 | self.assertRaises(exceptions.Duplicate, |
| 110 | self.client.pause_server, |
| 111 | self.server_id) |
| 112 | |
| 113 | @attr(type=['negative', 'gate']) |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 114 | def test_rebuild_deleted_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 115 | # Rebuild a deleted server |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 116 | |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 117 | resp, server = self.create_server() |
| 118 | self.server_id = server['id'] |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 119 | self.client.delete_server(self.server_id) |
David Kranz | 1b39dd4 | 2012-05-30 17:04:09 -0400 | [diff] [blame] | 120 | self.client.wait_for_server_termination(self.server_id) |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 121 | |
| 122 | self.assertRaises(exceptions.NotFound, |
| 123 | self.client.rebuild, |
| 124 | self.server_id, self.image_ref_alt) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 125 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 126 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 127 | def test_create_numeric_server_name(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 128 | # Create a server with a numeric name |
Sean Dague | e623f75 | 2013-02-27 14:52:15 -0500 | [diff] [blame] | 129 | if self.__class__._interface == "xml": |
| 130 | raise self.skipException("Not testable in XML") |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 131 | |
| 132 | server_name = 12345 |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 133 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 134 | self.create_server, |
| 135 | name=server_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 136 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 137 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 138 | def test_create_server_name_length_exceeds_256(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 139 | # Create a server with name length exceeding 256 characters |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 140 | |
| 141 | server_name = 'a' * 256 |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 142 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 143 | self.create_server, |
| 144 | name=server_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 145 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 146 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 147 | def test_create_with_invalid_network_uuid(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 148 | # Pass invalid network uuid while creating a server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 149 | |
Chris Yeoh | fc9e333 | 2013-01-21 09:28:13 +1030 | [diff] [blame] | 150 | networks = [{'fixed_ip': '10.0.1.1', 'uuid': 'a-b-c-d-e-f-g-h-i-j'}] |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 151 | |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 152 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 153 | self.create_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 154 | networks=networks) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 155 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 156 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 157 | def test_create_with_non_existant_keypair(self): |
Chang Bo Guo | f099f80 | 2013-09-13 19:01:46 -0700 | [diff] [blame] | 158 | # Pass a non-existent keypair while creating a server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 159 | |
| 160 | key_name = rand_name('key') |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 161 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 162 | self.create_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 163 | key_name=key_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 164 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 165 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 166 | def test_create_server_metadata_exceeds_length_limit(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 167 | # Pass really long metadata while creating a server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 168 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 169 | metadata = {'a': 'b' * 260} |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 170 | self.assertRaises(exceptions.OverLimit, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 171 | self.create_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 172 | meta=metadata) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 173 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 174 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 175 | def test_update_name_of_non_existent_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 176 | # Update name of a non-existent server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 177 | |
| 178 | server_name = rand_name('server') |
| 179 | new_name = rand_name('server') + '_updated' |
| 180 | |
| 181 | self.assertRaises(exceptions.NotFound, self.client.update_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 182 | server_name, name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 183 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 184 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 185 | def test_update_server_set_empty_name(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 186 | # Update name of the server to an empty string |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 187 | |
| 188 | server_name = rand_name('server') |
| 189 | new_name = '' |
| 190 | |
| 191 | self.assertRaises(exceptions.BadRequest, self.client.update_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 192 | server_name, name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 193 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 194 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 195 | def test_update_server_of_another_tenant(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 196 | # Update name of a server that belongs to another tenant |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 197 | |
Sean Dague | e623f75 | 2013-02-27 14:52:15 -0500 | [diff] [blame] | 198 | resp, server = self.create_server(wait_until='ACTIVE') |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 199 | new_name = server['id'] + '_new' |
| 200 | self.assertRaises(exceptions.NotFound, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 201 | self.alt_client.update_server, server['id'], |
| 202 | name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 203 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 204 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 205 | def test_update_server_name_length_exceeds_256(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 206 | # Update name of server exceed the name length limit |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 207 | |
Sean Dague | e623f75 | 2013-02-27 14:52:15 -0500 | [diff] [blame] | 208 | resp, server = self.create_server(wait_until='ACTIVE') |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 209 | new_name = 'a' * 256 |
| 210 | self.assertRaises(exceptions.BadRequest, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 211 | self.client.update_server, |
| 212 | server['id'], |
| 213 | name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 214 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 215 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 216 | def test_delete_non_existent_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 217 | # Delete a non existent server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 218 | |
| 219 | self.assertRaises(exceptions.NotFound, self.client.delete_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 220 | '999erra43') |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 221 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 222 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 223 | def test_delete_a_server_of_another_tenant(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 224 | # Delete a server that belongs to another tenant |
Matthew Treinish | 38c4dc4 | 2013-07-30 14:30:07 -0400 | [diff] [blame] | 225 | resp, server = self.create_server(wait_until='ACTIVE') |
| 226 | self.assertRaises(exceptions.NotFound, |
| 227 | self.alt_client.delete_server, |
| 228 | server['id']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 229 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 230 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 231 | def test_delete_server_pass_negative_id(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 232 | # Pass an invalid string parameter to delete server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 233 | |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 234 | self.assertRaises(exceptions.NotFound, self.client.delete_server, -1) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 235 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 236 | @attr(type=['negative', 'gate']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 237 | def test_delete_server_pass_id_exceeding_length_limit(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 238 | # Pass a server ID that exceeds length limit to delete server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 239 | |
| 240 | self.assertRaises(exceptions.NotFound, self.client.delete_server, |
| 241 | sys.maxint + 1) |
donald-ngo | 78bd7f5 | 2013-02-08 14:35:16 -0800 | [diff] [blame] | 242 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 243 | @attr(type=['negative', 'gate']) |
donald-ngo | 78bd7f5 | 2013-02-08 14:35:16 -0800 | [diff] [blame] | 244 | def test_create_with_nonexistent_security_group(self): |
| 245 | # Create a server with a nonexistent security group |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 246 | |
| 247 | security_groups = [{'name': 'does_not_exist'}] |
Jordan Pittier | ce89f63 | 2013-06-25 16:04:39 +0000 | [diff] [blame] | 248 | self.assertRaises(exceptions.BadRequest, |
Sean Dague | 22897e1 | 2013-02-25 17:54:09 -0500 | [diff] [blame] | 249 | self.create_server, |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 250 | security_groups=security_groups) |
hi2suresh | 063acbc | 2013-02-20 09:32:03 +0000 | [diff] [blame] | 251 | |
Giampaolo Lauria | e9c7702 | 2013-05-22 01:23:58 -0400 | [diff] [blame] | 252 | @attr(type=['negative', 'gate']) |
hi2suresh | 063acbc | 2013-02-20 09:32:03 +0000 | [diff] [blame] | 253 | def test_get_non_existent_server(self): |
| 254 | # Get a non existent server details |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame] | 255 | |
hi2suresh | 063acbc | 2013-02-20 09:32:03 +0000 | [diff] [blame] | 256 | self.assertRaises(exceptions.NotFound, self.client.get_server, |
| 257 | '999erra43') |
Sean Dague | e623f75 | 2013-02-27 14:52:15 -0500 | [diff] [blame] | 258 | |
Anju Tiwari | 6c33616 | 2013-08-08 12:21:02 +0530 | [diff] [blame] | 259 | @attr(type=['negative', 'gate']) |
| 260 | def test_stop_non_existent_server(self): |
| 261 | # Stop a non existent server |
Anju Tiwari | 6c33616 | 2013-08-08 12:21:02 +0530 | [diff] [blame] | 262 | self.assertRaises(exceptions.NotFound, self.servers_client.stop, |
LingxianKong | b2ca96f | 2013-09-28 23:09:30 +0800 | [diff] [blame] | 263 | str(uuid.uuid4())) |
Anju Tiwari | 6c33616 | 2013-08-08 12:21:02 +0530 | [diff] [blame] | 264 | |
| 265 | @attr(type=['negative', 'gate']) |
| 266 | def test_pause_non_existent_server(self): |
| 267 | # pause a non existent server |
Anju Tiwari | 6c33616 | 2013-08-08 12:21:02 +0530 | [diff] [blame] | 268 | self.assertRaises(exceptions.NotFound, self.client.pause_server, |
LingxianKong | b2ca96f | 2013-09-28 23:09:30 +0800 | [diff] [blame] | 269 | str(uuid.uuid4())) |
| 270 | |
| 271 | @attr(type=['negative', 'gate']) |
| 272 | def test_unpause_non_existent_server(self): |
| 273 | # unpause a non existent server |
| 274 | self.assertRaises(exceptions.NotFound, self.client.unpause_server, |
| 275 | str(uuid.uuid4())) |
| 276 | |
| 277 | @attr(type=['negative', 'gate']) |
| 278 | def test_unpause_server_invalid_state(self): |
| 279 | # unpause an active server. |
| 280 | resp, server = self.create_server(wait_until='ACTIVE') |
| 281 | server_id = server['id'] |
| 282 | self.assertRaises(exceptions.Duplicate, |
| 283 | self.client.unpause_server, |
| 284 | server_id) |
Anju Tiwari | 6c33616 | 2013-08-08 12:21:02 +0530 | [diff] [blame] | 285 | |
LingxianKong | 691a570 | 2013-09-29 11:43:45 +0800 | [diff] [blame] | 286 | @attr(type=['negative', 'gate']) |
| 287 | def test_suspend_non_existent_server(self): |
| 288 | # suspend a non existent server |
| 289 | self.assertRaises(exceptions.NotFound, self.client.suspend_server, |
| 290 | str(uuid.uuid4())) |
| 291 | |
| 292 | @attr(type=['negative', 'gate']) |
| 293 | def test_suspend_server_invalid_state(self): |
| 294 | # create server. |
| 295 | resp, server = self.create_server(wait_until='ACTIVE') |
| 296 | server_id = server['id'] |
| 297 | |
| 298 | # suspend a suspended server. |
| 299 | resp, _ = self.client.suspend_server(server_id) |
| 300 | self.assertEqual(202, resp.status) |
| 301 | self.client.wait_for_server_status(server_id, 'SUSPENDED') |
| 302 | self.assertRaises(exceptions.Duplicate, |
| 303 | self.client.suspend_server, |
| 304 | server_id) |
| 305 | |
| 306 | @attr(type=['negative', 'gate']) |
| 307 | def test_resume_non_existent_server(self): |
| 308 | # resume a non existent server |
| 309 | self.assertRaises(exceptions.NotFound, self.client.resume_server, |
| 310 | str(uuid.uuid4())) |
| 311 | |
| 312 | @attr(type=['negative', 'gate']) |
| 313 | def test_resume_server_invalid_state(self): |
| 314 | # create server. |
| 315 | resp, server = self.create_server(wait_until='ACTIVE') |
| 316 | server_id = server['id'] |
| 317 | |
| 318 | # resume an active server. |
| 319 | self.assertRaises(exceptions.Duplicate, |
| 320 | self.client.resume_server, |
| 321 | server_id) |
| 322 | |
Sean Dague | e623f75 | 2013-02-27 14:52:15 -0500 | [diff] [blame] | 323 | |
Xiao Hanyu | ab61c07 | 2013-06-26 15:33:42 +0800 | [diff] [blame] | 324 | class ServersNegativeTestXML(ServersNegativeTestJSON): |
Sean Dague | e623f75 | 2013-02-27 14:52:15 -0500 | [diff] [blame] | 325 | _interface = 'xml' |