diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-08 00:04:39 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-08 00:04:39 +0000 |
commit | 6b591bf850278cf8dd706722fba573e3ae259152 (patch) | |
tree | 5f8f341ed969d21e659e8e43e999b87fde58f65a | |
parent | 0f70e1035ff2d5ca9ba4df88b8c14fb54e9db6a3 (diff) | |
parent | d799264c3709acf0eb005bf55ff2be09a38d0c6b (diff) | |
download | nova-6b591bf850278cf8dd706722fba573e3ae259152.tar.gz |
Merge "tests: enhance functional tests primitives"
-rw-r--r-- | nova/tests/functional/api/client.py | 4 | ||||
-rw-r--r-- | nova/tests/functional/integrated_helpers.py | 86 |
2 files changed, 85 insertions, 5 deletions
diff --git a/nova/tests/functional/api/client.py b/nova/tests/functional/api/client.py index afc3c29d7a..d570db18bc 100644 --- a/nova/tests/functional/api/client.py +++ b/nova/tests/functional/api/client.py @@ -295,6 +295,10 @@ class TestOpenStackClient(object): def delete_flavor(self, flavor_id): return self.api_delete('/flavors/%s' % flavor_id) + def post_extra_spec(self, flavor_id, spec): + return self.api_post('/flavors/%s/os-extra_specs' % + flavor_id, spec) + def get_volume(self, volume_id): return self.api_get('/volumes/%s' % volume_id).body['volume'] diff --git a/nova/tests/functional/integrated_helpers.py b/nova/tests/functional/integrated_helpers.py index 5ae30d0927..fb2237216b 100644 --- a/nova/tests/functional/integrated_helpers.py +++ b/nova/tests/functional/integrated_helpers.py @@ -82,8 +82,6 @@ class _IntegratedTestBase(test.TestCase): fake_crypto.fetch_ca) self.stubs.Set(crypto, 'generate_x509_cert', fake_crypto.generate_x509_cert) - self.flags(scheduler_driver='nova.scheduler.' - 'chance.ChanceScheduler') self._setup_services() self.api_fixture = self.useFixture( @@ -100,15 +98,23 @@ class _IntegratedTestBase(test.TestCase): self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset) + def _setup_compute_service(self): + return self.start_service('compute') + + def _setup_scheduler_service(self): + self.flags(scheduler_driver='nova.scheduler.' + 'chance.ChanceScheduler') + return self.start_service('scheduler') + def _setup_services(self): self.conductor = self.start_service('conductor', manager=CONF.conductor.manager) - self.compute = self.start_service('compute') + self.compute = self._setup_compute_service() self.cert = self.start_service('cert') self.consoleauth = self.start_service('consoleauth') self.network = self.start_service('network') - self.scheduler = self.start_service('scheduler') + self.scheduler = self._setup_scheduler_service() self.cells = self.start_service('cells', manager=CONF.cells.manager) def _get_test_client(self): @@ -134,12 +140,82 @@ class _IntegratedTestBase(test.TestCase): server_names = [server['name'] for server in servers] return generate_new_element(server_names, 'server') + def get_unused_flavor_name_id(self): + flavors = self.api.get_flavors() + flavor_names = list() + flavor_ids = list() + [(flavor_names.append(flavor['name']), + flavor_ids.append(flavor['id'])) + for flavor in flavors] + return (generate_new_element(flavor_names, 'flavor'), + int(generate_new_element(flavor_ids, '', True))) + def get_invalid_image(self): return str(uuid.uuid4()) + def _get_any_image_href(self): + image = self.api.get_images()[0] + LOG.debug("Image: %s" % image) + + if self._image_ref_parameter in image: + image_href = image[self._image_ref_parameter] + else: + image_href = image['id'] + image_href = 'http://fake.server/%s' % image_href + return image_href + def _build_minimal_create_server_request(self): server = {} + image_href = self._get_any_image_href() + + # We now have a valid imageId + server[self._image_ref_parameter] = image_href + + # Set a valid flavorId + flavor = self.api.get_flavors()[0] + LOG.debug("Using flavor: %s" % flavor) + server[self._flavor_ref_parameter] = ('http://fake.server/%s' + % flavor['id']) + + # Set a valid server name + server_name = self.get_unused_server_name() + server['name'] = server_name + return server + + def _create_flavor_body(self, name, ram, vcpus, disk, ephemeral, id, swap, + rxtx_factor, is_public): + return { + "flavor": { + "name": name, + "ram": ram, + "vcpus": vcpus, + "disk": disk, + "OS-FLV-EXT-DATA:ephemeral": ephemeral, + "id": id, + "swap": swap, + "rxtx_factor": rxtx_factor, + "os-flavor-access:is_public": is_public, + } + } + + def _create_flavor(self, memory_mb=2048, vcpu=2, disk=10, ephemeral=10, + swap=0, rxtx_factor=1.0, is_public=True, + extra_spec=None): + flv_name, flv_id = self.get_unused_flavor_name_id() + body = self._create_flavor_body(flv_name, memory_mb, vcpu, disk, + ephemeral, flv_id, swap, rxtx_factor, + is_public) + self.api_fixture.admin_api.post_flavor(body) + if extra_spec is not None: + spec = {"extra_specs": extra_spec} + self.api_fixture.admin_api.post_extra_spec(flv_id, spec) + return flv_id + + def _build_server(self, flavor_id): + server = {} + + image_href = self._get_any_image_href() image = self.api.get_images()[0] LOG.debug("Image: %s" % image) @@ -153,7 +229,7 @@ class _IntegratedTestBase(test.TestCase): server[self._image_ref_parameter] = image_href # Set a valid flavorId - flavor = self.api.get_flavors()[0] + flavor = self.api.get_flavor(flavor_id) LOG.debug("Using flavor: %s" % flavor) server[self._flavor_ref_parameter] = ('http://fake.server/%s' % flavor['id']) |