summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuriy Zveryanskyy <yzveryanskyy@mirantis.com>2013-05-29 14:01:13 +0300
committerYuriy Zveryanskyy <yzveryanskyy@mirantis.com>2013-06-17 10:22:22 +0300
commit328b347cd058f1c87d7e32a18d9decc0ba517266 (patch)
treea046f94930b31f21c673241aa1090ecd99ab352d
parentd147af21db2db77f578e527883cf2c68abc56496 (diff)
Add missing tests for cell_* methods
There was no tests in test_db_api for cell_* methods. Also small fix CellNotFound exception. Add tests to ensure that all works. blueprint db-api-tests Change-Id: I63f3a449238f870fe2549ea5c008b636104e5002
-rw-r--r--nova/db/sqlalchemy/api.py2
-rw-r--r--nova/tests/db/test_db_api.py102
2 files changed, 103 insertions, 1 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 7b5cea4de..664425441 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -4062,7 +4062,7 @@ def cell_update(context, cell_name, values):
session = get_session()
with session.begin():
cell = _cell_get_by_name_query(context, cell_name, session=session)
- if not cell:
+ if cell.count() == 0:
raise exception.CellNotFound(cell_name=cell_name)
cell.update(values)
return cell
diff --git a/nova/tests/db/test_db_api.py b/nova/tests/db/test_db_api.py
index 27b4ac83d..df5561ae0 100644
--- a/nova/tests/db/test_db_api.py
+++ b/nova/tests/db/test_db_api.py
@@ -4828,6 +4828,108 @@ class ProviderFwRuleTestCase(test.TestCase, ModelsObjectComparatorMixin):
self.assertEqual([], db.provider_fw_rule_get_all(self.ctxt))
+class CellTestCase(test.TestCase, ModelsObjectComparatorMixin):
+
+ _ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at']
+
+ def setUp(self):
+ super(CellTestCase, self).setUp()
+ self.ctxt = context.get_admin_context()
+
+ def _get_cell_base_values(self):
+ return {
+ 'name': 'myname',
+ 'api_url': 'apiurl',
+ 'username': 'user',
+ 'password': 'passwd',
+ 'weight_offset': 0.5,
+ 'weight_scale': 1.5,
+ 'is_parent': True,
+ 'rpc_host': 'rpchost',
+ 'rpc_port': 9999,
+ 'rpc_virtual_host': 'virthost'
+ }
+
+ def _cell_value_modify(self, value, step):
+ if isinstance(value, str):
+ return value + str(step)
+ elif isinstance(value, float):
+ return value + step + 0.6
+ elif isinstance(value, bool):
+ return bool(step % 2)
+ elif isinstance(value, int):
+ return value + step
+
+ def _create_cells(self):
+ test_values = []
+ for x in xrange(1, 4):
+ modified_val = dict([(k, self._cell_value_modify(v, x))
+ for k, v in self._get_cell_base_values().iteritems()])
+ db.cell_create(self.ctxt, modified_val)
+ test_values.append(modified_val)
+ return test_values
+
+ def test_cell_create(self):
+ cell = db.cell_create(self.ctxt, self._get_cell_base_values())
+ self.assertFalse(cell['id'] is None)
+ self._assertEqualObjects(cell, self._get_cell_base_values(),
+ ignored_keys=self._ignored_keys)
+
+ def test_cell_update(self):
+ db.cell_create(self.ctxt, self._get_cell_base_values())
+ new_values = {
+ 'api_url': 'apiurl1',
+ 'username': 'user1',
+ 'password': 'passwd1',
+ 'weight_offset': 0.6,
+ 'weight_scale': 1.6,
+ 'is_parent': False,
+ 'rpc_host': 'rpchost1',
+ 'rpc_port': 10000,
+ 'rpc_virtual_host': 'virthost1'
+ }
+ test_cellname = self._get_cell_base_values()['name']
+ db.cell_update(self.ctxt, test_cellname, new_values)
+ updated_cell = db.cell_get(self.ctxt, test_cellname)
+ self._assertEqualObjects(updated_cell, new_values,
+ ignored_keys=self._ignored_keys + ['name'])
+
+ def test_cell_delete(self):
+ new_cells = self._create_cells()
+ for cell in new_cells:
+ test_cellname = cell['name']
+ db.cell_delete(self.ctxt, test_cellname)
+ self.assertRaises(exception.CellNotFound, db.cell_get, self.ctxt,
+ test_cellname)
+
+ def test_cell_get(self):
+ new_cells = self._create_cells()
+ for cell in new_cells:
+ cell_get = db.cell_get(self.ctxt, cell['name'])
+ self._assertEqualObjects(cell_get, cell,
+ ignored_keys=self._ignored_keys)
+
+ def test_cell_get_all(self):
+ new_cells = self._create_cells()
+ cells = db.cell_get_all(self.ctxt)
+ self.assertEqual(len(new_cells), len(cells))
+ cells_byname = dict([(newcell['name'],
+ newcell) for newcell in new_cells])
+ for cell in cells:
+ self._assertEqualObjects(cell, cells_byname[cell['name']],
+ self._ignored_keys)
+
+ def test_cell_get_not_found(self):
+ self._create_cells()
+ self.assertRaises(exception.CellNotFound, db.cell_get, self.ctxt,
+ 'cellnotinbase')
+
+ def test_cell_update_not_found(self):
+ self._create_cells()
+ self.assertRaises(exception.CellNotFound, db.cell_update, self.ctxt,
+ 'cellnotinbase', self._get_cell_base_values())
+
+
class ArchiveTestCase(test.TestCase):
def setUp(self):