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