blob: 80358ec71fdc2b3b58861863b480042b5367855a [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
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 Karajgidc300b22012-05-04 08:11:00 -070018import sys
Jay Pipes13b479b2012-06-11 14:52:27 -040019
Matthew Treinish481466b2012-12-20 17:16:01 -050020from tempest import clients
Matthew Treinisha83a16e2012-12-07 13:44:02 -050021from tempest.common.utils.data_utils import rand_name
Daryl Wallecked8bef32011-12-05 23:02:08 -060022from tempest import exceptions
Chris Yeoh9465b0b2013-02-09 22:19:15 +103023from tempest.test import attr
donald-ngo18edb812013-02-22 11:37:15 -080024from tempest.tests.compute import base
Daryl Walleckadea1fa2011-11-15 18:36:39 -060025
26
donald-ngo18edb812013-02-22 11:37:15 -080027class ServersNegativeTest(base.BaseComputeTest):
28 _interface = 'json'
Daryl Walleckadea1fa2011-11-15 18:36:39 -060029
30 @classmethod
31 def setUpClass(cls):
ivan-zhu1feeb382013-01-24 10:14:39 +080032 raise cls.skipException("Until Bug 1046870 is fixed")
Jay Pipesf38eaac2012-06-21 13:37:35 -040033 super(ServersNegativeTest, cls).setUpClass()
Daryl Walleckc7251962012-03-12 17:26:54 -050034 cls.client = cls.servers_client
Rohit Karajgidc300b22012-05-04 08:11:00 -070035 cls.img_client = cls.images_client
Matthew Treinish481466b2012-12-20 17:16:01 -050036 cls.alt_os = clients.AltManager()
Rohit Karajgidc300b22012-05-04 08:11:00 -070037 cls.alt_client = cls.alt_os.servers_client
Daryl Walleckadea1fa2011-11-15 18:36:39 -060038
Rohit Karajgidc300b22012-05-04 08:11:00 -070039 @attr(type='negative')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060040 def test_server_name_blank(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050041 # Create a server with name parameter empty
donald-ngo18edb812013-02-22 11:37:15 -080042
43 self.assertRaises(exceptions.BadRequest,
44 self.create_server_with_extras,
45 '', self.image_ref, self.flavor_ref)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060046
Rohit Karajgidc300b22012-05-04 08:11:00 -070047 @attr(type='negative')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060048 def test_personality_file_contents_not_encoded(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050049 # Use an unencoded file when creating a server with personality
donald-ngo18edb812013-02-22 11:37:15 -080050
Daryl Walleckadea1fa2011-11-15 18:36:39 -060051 file_contents = 'This is a test file.'
Sean Dague9b669e32012-12-13 18:40:08 -050052 person = [{'path': '/etc/testfile.txt',
53 'contents': file_contents}]
Daryl Walleckadea1fa2011-11-15 18:36:39 -060054
donald-ngo18edb812013-02-22 11:37:15 -080055 self.assertRaises(exceptions.BadRequest,
56 self.create_server_with_extras,
57 'fail', self.image_ref, self.flavor_ref,
58 personality=person)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060059
Rohit Karajgidc300b22012-05-04 08:11:00 -070060 @attr(type='negative')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060061 def test_create_with_invalid_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050062 # Create a server with an unknown image
donald-ngo18edb812013-02-22 11:37:15 -080063
64 self.assertRaises(exceptions.BadRequest,
65 self.create_server_with_extras,
66 'fail', -1, self.flavor_ref)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060067
Rohit Karajgidc300b22012-05-04 08:11:00 -070068 @attr(type='negative')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060069 def test_create_with_invalid_flavor(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050070 # Create a server with an unknown flavor
donald-ngo18edb812013-02-22 11:37:15 -080071
72 self.assertRaises(exceptions.BadRequest,
73 self.create_server_with_extras,
74 'fail', self.image_ref, -1)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060075
Rohit Karajgidc300b22012-05-04 08:11:00 -070076 @attr(type='negative')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060077 def test_invalid_access_ip_v4_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050078 # An access IPv4 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080079
Sean Dague9b669e32012-12-13 18:40:08 -050080 IPv4 = '1.1.1.1.1.1'
donald-ngo18edb812013-02-22 11:37:15 -080081 self.assertRaises(exceptions.BadRequest,
82 self.create_server_with_extras, "fail",
83 self.image_ref, self.flavor_ref, accessIPv4=IPv4)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060084
Rohit Karajgidc300b22012-05-04 08:11:00 -070085 @attr(type='negative')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060086 def test_invalid_ip_v6_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050087 # An access IPv6 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080088
Sean Dague9b669e32012-12-13 18:40:08 -050089 IPv6 = 'notvalid'
donald-ngo18edb812013-02-22 11:37:15 -080090
91 self.assertRaises(exceptions.BadRequest,
92 self.create_server_with_extras, "fail",
93 self.image_ref, self.flavor_ref, accessIPv6=IPv6)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +000094
Rohit Karajgidc300b22012-05-04 08:11:00 -070095 @attr(type='negative')
ravikumar-venkatesan36892e12012-05-11 18:01:41 +000096 def test_reboot_deleted_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050097 # Reboot a deleted server
donald-ngo18edb812013-02-22 11:37:15 -080098
ravikumar-venkatesan36892e12012-05-11 18:01:41 +000099 self.name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500100 resp, create_server = self.create_server_with_extras(self.name,
101 self.image_ref,
102 self.flavor_ref)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000103 self.server_id = create_server['id']
104 self.client.delete_server(self.server_id)
David Kranz1b39dd42012-05-30 17:04:09 -0400105 self.client.wait_for_server_termination(self.server_id)
donald-ngo18edb812013-02-22 11:37:15 -0800106 self.assertRaises(exceptions.NotFound, self.client.reboot,
107 self.server_id, 'SOFT')
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000108
Rohit Karajgidc300b22012-05-04 08:11:00 -0700109 @attr(type='negative')
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000110 def test_rebuild_deleted_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500111 # Rebuild a deleted server
donald-ngo18edb812013-02-22 11:37:15 -0800112
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000113 self.name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500114 resp, create_server = self.create_server_with_extras(self.name,
115 self.image_ref,
116 self.flavor_ref)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000117 self.server_id = create_server['id']
118 self.client.delete_server(self.server_id)
David Kranz1b39dd42012-05-30 17:04:09 -0400119 self.client.wait_for_server_termination(self.server_id)
donald-ngo18edb812013-02-22 11:37:15 -0800120
121 self.assertRaises(exceptions.NotFound,
122 self.client.rebuild,
123 self.server_id, self.image_ref_alt)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700124
125 @attr(type='negative')
126 def test_create_numeric_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500127 # Create a server with a numeric name
Rohit Karajgidc300b22012-05-04 08:11:00 -0700128
129 server_name = 12345
Sean Dague9b669e32012-12-13 18:40:08 -0500130 self.assertRaises(exceptions.BadRequest,
131 self.create_server_with_extras,
Rohit Karajgidc300b22012-05-04 08:11:00 -0700132 server_name, self.image_ref, self.flavor_ref)
133
134 @attr(type='negative')
135 def test_create_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500136 # Create a server with name length exceeding 256 characters
Rohit Karajgidc300b22012-05-04 08:11:00 -0700137
138 server_name = 'a' * 256
Sean Dague9b669e32012-12-13 18:40:08 -0500139 self.assertRaises(exceptions.BadRequest,
140 self.create_server_with_extras,
Rohit Karajgidc300b22012-05-04 08:11:00 -0700141 server_name, self.image_ref, self.flavor_ref)
142
143 @attr(type='negative')
144 def test_create_with_invalid_network_uuid(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500145 # Pass invalid network uuid while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700146
147 server_name = rand_name('server')
Chris Yeohfc9e3332013-01-21 09:28:13 +1030148 networks = [{'fixed_ip': '10.0.1.1', 'uuid': 'a-b-c-d-e-f-g-h-i-j'}]
Rohit Karajgidc300b22012-05-04 08:11:00 -0700149
Sean Dague9b669e32012-12-13 18:40:08 -0500150 self.assertRaises(exceptions.BadRequest,
151 self.create_server_with_extras,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800152 server_name, self.image_ref, self.flavor_ref,
153 networks=networks)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700154
155 @attr(type='negative')
156 def test_create_with_non_existant_keypair(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500157 # Pass a non existant keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700158
159 key_name = rand_name('key')
160 server_name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500161 self.assertRaises(exceptions.BadRequest,
162 self.create_server_with_extras,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800163 server_name, self.image_ref, self.flavor_ref,
164 key_name=key_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700165
Rohit Karajgidc300b22012-05-04 08:11:00 -0700166 @attr(type='negative')
167 def test_create_server_metadata_exceeds_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500168 # Pass really long metadata while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700169
170 server_name = rand_name('server')
171 metadata = {'a': 'b' * 260}
Sean Dague9b669e32012-12-13 18:40:08 -0500172 self.assertRaises(exceptions.OverLimit,
173 self.create_server_with_extras,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800174 server_name, self.image_ref, self.flavor_ref,
175 meta=metadata)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700176
177 @attr(type='negative')
178 def test_update_name_of_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500179 # Update name of a non-existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700180
181 server_name = rand_name('server')
182 new_name = rand_name('server') + '_updated'
183
184 self.assertRaises(exceptions.NotFound, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800185 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700186
187 @attr(type='negative')
188 def test_update_server_set_empty_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500189 # Update name of the server to an empty string
Rohit Karajgidc300b22012-05-04 08:11:00 -0700190
191 server_name = rand_name('server')
192 new_name = ''
193
194 self.assertRaises(exceptions.BadRequest, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800195 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700196
197 @attr(type='negative')
198 def test_update_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500199 # Update name of a server that belongs to another tenant
Rohit Karajgidc300b22012-05-04 08:11:00 -0700200
201 server = self.create_server()
202 new_name = server['id'] + '_new'
203 self.assertRaises(exceptions.NotFound,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800204 self.alt_client.update_server, server['id'],
205 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700206
207 @attr(type='negative')
208 def test_update_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500209 # Update name of server exceed the name length limit
Rohit Karajgidc300b22012-05-04 08:11:00 -0700210
211 server = self.create_server()
212 new_name = 'a' * 256
213 self.assertRaises(exceptions.BadRequest,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800214 self.client.update_server,
215 server['id'],
216 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700217
218 @attr(type='negative')
219 def test_delete_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500220 # Delete a non existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700221
222 self.assertRaises(exceptions.NotFound, self.client.delete_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800223 '999erra43')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700224
225 @attr(type='negative')
226 def test_delete_a_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500227 # Delete a server that belongs to another tenant
rajalakshmi-ganesan6a863a82012-07-18 15:58:07 +0530228 try:
229 server = self.create_server()
230 self.assertRaises(exceptions.NotFound,
231 self.alt_client.delete_server,
232 server['id'])
233 finally:
234 self.client.delete_server(server['id'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700235
236 @attr(type='negative')
237 def test_delete_server_pass_negative_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500238 # Pass an invalid string parameter to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700239
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800240 self.assertRaises(exceptions.NotFound, self.client.delete_server, -1)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700241
242 @attr(type='negative')
243 def test_delete_server_pass_id_exceeding_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500244 # Pass a server ID that exceeds length limit to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700245
246 self.assertRaises(exceptions.NotFound, self.client.delete_server,
247 sys.maxint + 1)
donald-ngo78bd7f52013-02-08 14:35:16 -0800248
249 @attr(type='negative')
250 def test_create_with_nonexistent_security_group(self):
251 # Create a server with a nonexistent security group
donald-ngo18edb812013-02-22 11:37:15 -0800252
253 security_groups = [{'name': 'does_not_exist'}]
254 self.assertRaises(exceptions.BadRequest,
255 self.create_server_with_extras, 'fail',
256 self.image_ref, self.flavor_ref,
257 security_groups=security_groups)
hi2suresh063acbc2013-02-20 09:32:03 +0000258
259 @attr(type='negative')
260 def test_get_non_existent_server(self):
261 # Get a non existent server details
donald-ngo18edb812013-02-22 11:37:15 -0800262
hi2suresh063acbc2013-02-20 09:32:03 +0000263 self.assertRaises(exceptions.NotFound, self.client.get_server,
264 '999erra43')