Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 1 | from nose.plugins.attrib import attr |
| 2 | from tempest import openstack |
| 3 | from tempest import exceptions |
Daryl Walleck | c725196 | 2012-03-12 17:26:54 -0500 | [diff] [blame] | 4 | from base_compute_test import BaseComputeTest |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 5 | from tempest.common.utils.data_utils import rand_name |
| 6 | import base64 |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 7 | |
| 8 | |
Daryl Walleck | c725196 | 2012-03-12 17:26:54 -0500 | [diff] [blame] | 9 | class ServerPersonalityTest(BaseComputeTest): |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 10 | |
| 11 | @classmethod |
| 12 | def setUpClass(cls): |
Daryl Walleck | c725196 | 2012-03-12 17:26:54 -0500 | [diff] [blame] | 13 | cls.client = cls.servers_client |
| 14 | cls.user_client = cls.limits_client |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 15 | |
| 16 | def test_personality_files_exceed_limit(self): |
| 17 | """ |
| 18 | Server creation should fail if greater than the maximum allowed |
| 19 | number of files are injected into the server. |
| 20 | """ |
| 21 | name = rand_name('server') |
| 22 | file_contents = 'This is a test file.' |
| 23 | personality = [] |
| 24 | resp, max_file_limit = self.user_client.get_personality_file_limit() |
| 25 | for i in range(0, max_file_limit + 1): |
| 26 | path = 'etc/test' + str(i) + '.txt' |
| 27 | personality.append({'path': path, |
| 28 | 'contents': base64.b64encode(file_contents)}) |
| 29 | try: |
| 30 | resp, resp_body = self.client.create_server(name, self.image_ref, |
| 31 | self.flavor_ref, |
| 32 | personality=personality) |
| 33 | except exceptions.OverLimit: |
| 34 | pass |
| 35 | else: |
| 36 | self.fail('This request did not fail as expected') |
| 37 | |
| 38 | @attr(type='positive') |
| 39 | def test_can_create_server_with_max_number_personality_files(self): |
| 40 | """ |
| 41 | Server should be created successfully if maximum allowed number of |
| 42 | files is injected into the server during creation. |
| 43 | """ |
saradpatel | 26bf032 | 2012-05-02 23:20:17 -0700 | [diff] [blame^] | 44 | try: |
| 45 | name = rand_name('server') |
| 46 | file_contents = 'This is a test file.' |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 47 | |
saradpatel | 26bf032 | 2012-05-02 23:20:17 -0700 | [diff] [blame^] | 48 | resp, max_file_limit = self.user_client.\ |
| 49 | get_personality_file_limit() |
| 50 | self.assertEqual(200, resp.status) |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 51 | |
saradpatel | 26bf032 | 2012-05-02 23:20:17 -0700 | [diff] [blame^] | 52 | personality = [] |
| 53 | for i in range(0, max_file_limit): |
| 54 | path = 'etc/test' + str(i) + '.txt' |
| 55 | personality.append({'path': path, |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 56 | 'contents': base64.b64encode(file_contents)}) |
| 57 | |
saradpatel | 26bf032 | 2012-05-02 23:20:17 -0700 | [diff] [blame^] | 58 | resp, server = self.client.create_server(name, self.image_ref, |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 59 | self.flavor_ref, |
| 60 | personality=personality) |
saradpatel | 26bf032 | 2012-05-02 23:20:17 -0700 | [diff] [blame^] | 61 | self.assertEqual('202', resp['status']) |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 62 | |
| 63 | #Teardown |
saradpatel | 26bf032 | 2012-05-02 23:20:17 -0700 | [diff] [blame^] | 64 | finally: |
| 65 | self.client.delete_server(server['id']) |