From c195bb5d6857f29cbfcdb5d136c7d7346c13bcd0 Mon Sep 17 00:00:00 2001 From: Mike Scherbakov Date: Fri, 7 Sep 2012 11:17:06 +0400 Subject: [PATCH] Improvements to unit tests; prepared for new Network model --- nailgun/fixtures/sample_environment.json | 11 ++- nailgun/settings/settings.py | 11 ++- nailgun/test/base.py | 8 ++ .../test/test_cluster_collection_handlers.py | 15 +++ nailgun/test/test_handlers.py | 90 +---------------- .../test/test_release_collection_handlers.py | 96 +++++++++++++++++++ nailgun/test/test_release_handler.py | 52 ---------- 7 files changed, 135 insertions(+), 148 deletions(-) diff --git a/nailgun/fixtures/sample_environment.json b/nailgun/fixtures/sample_environment.json index f5fef289a..2421323ab 100644 --- a/nailgun/fixtures/sample_environment.json +++ b/nailgun/fixtures/sample_environment.json @@ -8,8 +8,9 @@ "description": "Essex release description", "networks_metadata": [ {"name": "floating", "access": "public"}, - {"name": "fixed", "access": "private"}, - {"name": "admin", "access": "private"} + {"name": "fixed", "access": "private10"}, + {"name": "management", "access": "private172"}, + {"name": "storage", "access": "private192"} ] } }, @@ -158,15 +159,15 @@ "vlan_id": 300, "address": "172.18.0.2" }, - "admin": { - "access": "private", + "management": { + "access": "private172", "device": "eth0", "netmask": "255.255.255.0", "vlan_id": 100, "address": "10.0.0.2" }, "storage": { - "access": "private", + "access": "private192", "device": "eth0", "netmask": "255.255.255.0", "vlan_id": 200, diff --git a/nailgun/settings/settings.py b/nailgun/settings/settings.py index cdab50068..6b98f1cd3 100644 --- a/nailgun/settings/settings.py +++ b/nailgun/settings/settings.py @@ -4,6 +4,13 @@ DATABASE_PATH = 'nailgun.sqlite' DATABASE_ENGINE = 'sqlite:///%s' % DATABASE_PATH NETWORK_POOLS = { - 'public': ['172.18.0.0/16'], - 'private': ['10.1.0.0/16'] + 'public': ['240.0.0.0/24'], # reserved + # private nets according to RFC-5735 + 'private10': ['10.0.0.0/8'], + 'private172': ['172.16.0.0/12'], + 'private192': ['192.168.0.0/16'] } + +NET_EXCLUDE = ['10.20.0.0/24'] + +VLANS = range(100, 1000) diff --git a/nailgun/test/base.py b/nailgun/test/base.py index e490d2c9f..5040f2943 100644 --- a/nailgun/test/base.py +++ b/nailgun/test/base.py @@ -62,6 +62,14 @@ class BaseHandlers(TestCase): release = Release() release.version = randint(0, 100000000) release.name = u"release_name_" + str(release.version) + release.description = u"release_desc" + str(release.version) + release.networks_metadata = [ + {"name": "floating", "access": "public"}, + {"name": "fixed", "access": "private10"}, + {"name": "storage", "access": "private192"}, + {"name": "management", "access": "private172"}, + {"name": "other_172", "access": "private172"} + ] self.db.add(release) self.db.commit() return release diff --git a/nailgun/test/test_cluster_collection_handlers.py b/nailgun/test/test_cluster_collection_handlers.py index 3bccb5e45..80a9dba0f 100644 --- a/nailgun/test/test_cluster_collection_handlers.py +++ b/nailgun/test/test_cluster_collection_handlers.py @@ -25,3 +25,18 @@ class TestHandlers(BaseHandlers): self.assertEquals(200, resp.status) response = json.loads(resp.body) self.assertEquals(100, len(response)) + + def test_cluster_create(self): + release_id = self.create_default_release().id + resp = self.app.post( + reverse('ClusterCollectionHandler'), + json.dumps({ + 'name': 'cluster-name', + 'release': release_id, + }), + headers=self.default_headers + ) + self.assertEquals(201, resp.status) + + #def test_if_cluster_creates_correct_networks(self): + #pass diff --git a/nailgun/test/test_handlers.py b/nailgun/test/test_handlers.py index 6cabd73bb..233a1282c 100644 --- a/nailgun/test/test_handlers.py +++ b/nailgun/test/test_handlers.py @@ -1,24 +1,12 @@ # -*- coding: utf-8 -*- import unittest import json -from paste.fixture import TestApp -from api.models import Release + from base import BaseHandlers from base import reverse class TestHandlers(BaseHandlers): - def test_release_creation(self): - resp = self.app.post( - '/api/releases', - params=json.dumps({ - 'name': 'Another test release', - 'version': '1.0' - }), - headers=self.default_headers - ) - self.assertEquals(resp.status, 201) - def test_all_api_urls_404_or_405(self): urls = { 'ClusterHandler': {'cluster_id': 1}, @@ -36,79 +24,3 @@ class TestHandlers(BaseHandlers): self.assertTrue(resp.status in [404, 405]) resp = self.app.post(test_url, expect_errors=True) self.assertTrue(resp.status in [404, 405]) - - def test_release_create(self): - release_name = "OpenStack" - release_version = "1.0.0" - release_description = "This is test release" - resp = self.app.post( - reverse('ReleaseCollectionHandler'), - json.dumps({ - 'name': release_name, - 'version': release_version, - 'description': release_description, - 'networks_metadata': [ - {"name": "floating", "access": "public"}, - {"name": "fixed", "access": "private"}, - {"name": "storage", "access": "private"} - ] - }), - headers=self.default_headers - ) - self.assertEquals(resp.status, 201) - - resp = self.app.post( - reverse('ReleaseCollectionHandler'), - json.dumps({ - 'name': release_name, - 'version': release_version, - 'description': release_description, - 'networks_metadata': [ - {"name": "fixed", "access": "private"} - ] - }), - headers=self.default_headers, - expect_errors=True - ) - self.assertEquals(resp.status, 409) - - release_from_db = self.db.query(Release).filter( - Release.name == release_name, - Release.version == release_version, - Release.description == release_description - ).all() - self.assertEquals(len(release_from_db), 1) - - @unittest.skip("obsolete") - def test_network_create(self): - network_data = { - "name": "test_network", - "network": "10.0.0.0/24", - "range_l": "10.0.0.5", - "range_h": "10.0.0.10", - "gateway": "10.0.0.1", - "vlan_id": 100, - "release": 1, - "access": "public" - } - resp = self.app.post( - reverse('NetworkCollectionHandler'), - json.dumps(network_data), - headers=self.default_headers - ) - self.assertEquals(resp.status, 201) - resp = self.app.post( - reverse('NetworkCollectionHandler'), - json.dumps(network_data), - headers=self.default_headers, - expect_errors=True - ) - self.assertEquals(resp.status, 409) - network_data["network"] = "test_fail" - resp = self.app.post( - reverse('NetworkCollectionHandler'), - json.dumps(network_data), - headers=self.default_headers, - expect_errors=True - ) - self.assertEqual(resp.status, 400) diff --git a/nailgun/test/test_release_collection_handlers.py b/nailgun/test/test_release_collection_handlers.py index e0d0bdbb1..c5947a8d9 100644 --- a/nailgun/test/test_release_collection_handlers.py +++ b/nailgun/test/test_release_collection_handlers.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- import json from paste.fixture import TestApp + +from api.models import Release from base import BaseHandlers from base import reverse @@ -25,3 +27,97 @@ class TestHandlers(BaseHandlers): self.assertEquals(200, resp.status) response = json.loads(resp.body) self.assertEquals(100, len(response)) + + def test_release_creation(self): + resp = self.app.post( + '/api/releases', + params=json.dumps({ + 'name': 'Another test release', + 'version': '1.0' + }), + headers=self.default_headers + ) + self.assertEquals(resp.status, 201) + + def test_release_create(self): + release_name = "OpenStack" + release_version = "1.0.0" + release_description = "This is test release" + resp = self.app.post( + reverse('ReleaseCollectionHandler'), + json.dumps({ + 'name': release_name, + 'version': release_version, + 'description': release_description, + 'networks_metadata': [ + {"name": "floating", "access": "public"}, + {"name": "fixed", "access": "private10"}, + {"name": "storage", "access": "private192"} + ] + }), + headers=self.default_headers + ) + self.assertEquals(resp.status, 201) + + resp = self.app.post( + reverse('ReleaseCollectionHandler'), + json.dumps({ + 'name': release_name, + 'version': release_version, + 'description': release_description, + 'networks_metadata': [ + {"name": "fixed", "access": "private10"} + ] + }), + headers=self.default_headers, + expect_errors=True + ) + self.assertEquals(resp.status, 409) + + release_from_db = self.db.query(Release).filter( + Release.name == release_name, + Release.version == release_version, + Release.description == release_description + ).all() + self.assertEquals(len(release_from_db), 1) + + def test_release_create_already_exist(self): + release_name = "OpenStack" + release_version = "1.0.0" + release_description = "This is test release" + resp = self.app.post( + reverse('ReleaseCollectionHandler'), + json.dumps({ + 'name': release_name, + 'version': release_version, + 'description': release_description, + 'networks_metadata': [ + {"name": "floating", "access": "public"}, + {"name": "fixed", "access": "private10"}, + {"name": "storage", "access": "private192"} + ] + }), + headers=self.default_headers + ) + self.assertEquals(resp.status, 201) + + resp = self.app.post( + reverse('ReleaseCollectionHandler'), + json.dumps({ + 'name': release_name, + 'version': release_version, + 'description': release_description, + 'networks_metadata': [ + {"name": "fixed", "access": "private10"} + ] + }), + headers=self.default_headers, + expect_errors=True + ) + self.assertEquals(resp.status, 409) + + release_from_db = self.db.query(Release).filter( + Release.name == release_name, + Release.version == release_version, + Release.description == release_description + ).one() diff --git a/nailgun/test/test_release_handler.py b/nailgun/test/test_release_handler.py index d2c4fceab..3ed280ea9 100644 --- a/nailgun/test/test_release_handler.py +++ b/nailgun/test/test_release_handler.py @@ -46,55 +46,3 @@ class TestHandlers(BaseHandlers): ) self.assertEquals(204, resp.status) self.assertEquals('', resp.body) - - def test_release_create(self): - resp = self.app.post( - reverse('ReleaseCollectionHandler'), - params=json.dumps({ - 'name': 'Another test release', - 'version': '1.0' - }), - headers=self.default_headers - ) - self.assertEquals(resp.status, 201) - - def test_release_create_already_exist(self): - release_name = "OpenStack" - release_version = "1.0.0" - release_description = "This is test release" - resp = self.app.post( - reverse('ReleaseCollectionHandler'), - json.dumps({ - 'name': release_name, - 'version': release_version, - 'description': release_description, - 'networks_metadata': [ - {"name": "floating", "access": "public"}, - {"name": "fixed", "access": "private"}, - {"name": "storage", "access": "private"} - ] - }), - headers=self.default_headers - ) - self.assertEquals(resp.status, 201) - - resp = self.app.post( - reverse('ReleaseCollectionHandler'), - json.dumps({ - 'name': release_name, - 'version': release_version, - 'description': release_description, - 'networks_metadata': [ - {"name": "fixed", "access": "private"} - ] - }), - headers=self.default_headers, - expect_errors=True - ) - self.assertEquals(resp.status, 409) - - release_from_db = self.db.query(Release).filter( - Release.name == release_name, - Release.version == release_version, - Release.description == release_description - ).one()