From: Chris Alfonso Date: Wed, 9 May 2012 20:49:45 +0000 (-0400) Subject: Adding stack create test X-Git-Tag: 2014.1~1857 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=0a642cd918b93f254328236b2c1afb5a522730dc;p=openstack-build%2Fheat-build.git Adding stack create test --- diff --git a/heat/tests/__init__.py b/heat/tests/__init__.py index a8fc84dc..9ae10129 100644 --- a/heat/tests/__init__.py +++ b/heat/tests/__init__.py @@ -21,24 +21,20 @@ import os import shutil from heat.db.sqlalchemy.session import get_engine - -_DB = None +import pdb def reset_db(): - engine = get_engine() - engine.dispose() - conn = engine.connect() - conn.connection.executescript(_DB) - - + if os.path.exists('heat-test.db'): + os.remove('heat-test.db') + def setup(): import mox # Fail fast if you don't have mox. Workaround for bug 810424 from heat import db from heat.db import migration - + reset_db() migration.db_sync() engine = get_engine() conn = engine.connect() -# _DB = "".join(line for line in conn.connection.dump()) + diff --git a/heat/tests/test_stacks.py b/heat/tests/test_stacks.py new file mode 100644 index 00000000..40bfde2c --- /dev/null +++ b/heat/tests/test_stacks.py @@ -0,0 +1,70 @@ +import sys +import os + +import nose +import unittest +import mox +import json +import sqlalchemy + +from nose.plugins.attrib import attr +from nose import with_setup + +from heat.tests.v1_1 import fakes +from heat.engine import instance as instances +import heat.db as db_api +from heat.engine import parser + +@attr(tag=['unit', 'resource']) +@attr(speed='fast') +class instancesTest(unittest.TestCase): + def setUp(self): + self.m = mox.Mox() + self.fc = fakes.FakeClient() + + def tearDown(self): + self.m.UnsetStubs() + print "instancesTest teardown complete" + + def test_wordpress_single_instance_stack_create(self): + f = open('../../templates/WordPress_Single_Instance_gold.template') + t = json.loads(f.read()) + f.close() + + params = {} + parameters = {} + params['KeyStoneCreds'] = None + t['Parameters']['KeyName']['Value'] = 'test' + stack = parser.Stack('test_stack', t, 0, params) + self.m.StubOutWithMock(instances.Instance, 'nova') + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + instances.Instance.nova().AndReturn(self.fc) + + #instance = instances.Instance('WebServer',\ + # t['Resources']['WebServer'], stack) + instance = stack.resources['WebServer'] + instance.itype_oflavor['m1.large'] = 'm1.large' + instance.stack.resolve_attributes(instance.t) + instance.stack.resolve_joins(instance.t) + instance.stack.resolve_base64(instance.t) + + server_userdata = instance._build_userdata(\ + instance.t['Properties']['UserData']) + self.m.StubOutWithMock(self.fc.servers, 'create') + self.fc.servers.create(image=744, flavor=3, key_name='test',\ + name='WebServer', security_groups=None,\ + userdata=server_userdata).\ + AndReturn(self.fc.servers.list()[1]) + self.m.ReplayAll() + + stack.create_blocking() + assert(stack.resources['WebServer'] != None) + assert(stack.resources['WebServer'].instance_id > 0) + assert(stack.resources['WebServer'].ipaddress != '0.0.0.0') + + # allows testing of the test directly, shown below + if __name__ == '__main__': + sys.argv.append(__file__) + nose.main() diff --git a/heat/tests/v1_1/fakes.py b/heat/tests/v1_1/fakes.py index 4cc8c242..1820e8da 100644 --- a/heat/tests/v1_1/fakes.py +++ b/heat/tests/v1_1/fakes.py @@ -132,7 +132,8 @@ class FakeHTTPClient(base_client.HTTPClient): def get_servers(self, **kw): return (200, {"servers": [ {'id': 1234, 'name': 'sample-server'}, - {'id': 5678, 'name': 'sample-server2'} + {'id': 5678, 'name': 'sample-server2'}, + {'id': 9999, 'name': 'sample-server3'} ]}) def get_servers_detail(self, **kw): @@ -200,6 +201,37 @@ class FakeHTTPClient(base_client.HTTPClient): "metadata": { "Server Label": "DB 1" } + }, + { + "id": 9999, + "name": "sample-server3", + "image": { + "id": 3, + "name": "sample image", + }, + "flavor": { + "id": 3, + "name": "m1.large", + }, + "hostId": "9e107d9d372bb6826bd81d3542a419d6", + "status": "ACTIVE", + "addresses": { + "public": [{ + "version": 4, + "addr": "4.5.6.7", + }, + { + "version": 4, + "addr": "5.6.9.8", + }], + "private": [{ + "version": 4, + "addr": "10.13.12.13", + }], + }, + "metadata": { + "Server Label": "DB 1" + } } ]}) @@ -358,7 +390,8 @@ class FakeHTTPClient(base_client.HTTPClient): def get_flavors(self, **kw): return (200, {'flavors': [ {'id': 1, 'name': '256 MB Server'}, - {'id': 2, 'name': '512 MB Server'} + {'id': 2, 'name': '512 MB Server'}, + {'id': 3, 'name': 'm1.large'} ]}) def get_flavors_detail(self, **kw): @@ -366,7 +399,9 @@ class FakeHTTPClient(base_client.HTTPClient): {'id': 1, 'name': '256 MB Server', 'ram': 256, 'disk': 10, 'OS-FLV-EXT-DATA:ephemeral': 10}, {'id': 2, 'name': '512 MB Server', 'ram': 512, 'disk': 20, - 'OS-FLV-EXT-DATA:ephemeral': 20} + 'OS-FLV-EXT-DATA:ephemeral': 20}, + {'id': 3, 'name': 'm1.large', 'ram': 512, 'disk': 20, + 'OS-FLV-EXT-DATA:ephemeral': 30} ]}) def get_flavors_1(self, **kw): @@ -478,7 +513,8 @@ class FakeHTTPClient(base_client.HTTPClient): def get_images(self, **kw): return (200, {'images': [ {'id': 1, 'name': 'CentOS 5.2'}, - {'id': 2, 'name': 'My Server Backup'} + {'id': 2, 'name': 'My Server Backup'}, + {'id': 3, 'name': 'F16-x86_64-gold'} ]}) def get_images_detail(self, **kw): @@ -503,6 +539,16 @@ class FakeHTTPClient(base_client.HTTPClient): "status": "SAVING", "progress": 80, "links": {}, + }, + { + "id": 744, + "name": "F16-x86_64-gold", + "serverId": 9999, + "updated": "2010-10-10T12:00:00Z", + "created": "2010-08-10T12:00:00Z", + "status": "SAVING", + "progress": 80, + "links": {}, } ]})