Merge cell functional tests for V2 and V2.1

Currently v2 and v2.1 have separate functional tests and their
corresponding sample files. As v2 and v2.1 are supposed to be identical,
there is overhead to maintain two set of functional tests and sample files.

We can have one set of tests which can run for both v2 and v2.1.

This commit merges cell functional tests.

In V2 cell has following extensions
- os-cells
- os-cell-capacities

In V2.1 above extensions have been merged together in os-cell plugins

Change-Id: I42adfa5de21e3af03761fc12d04498de5112f385
This commit is contained in:
ghanshyam 2015-03-24 16:18:24 +09:00
parent 8601f1ef4f
commit 6a16798b59
10 changed files with 19 additions and 238 deletions

View File

@ -1,18 +0,0 @@
{
"cell": {
"capacities": {
"ram_free": {
"units_by_mb": {
"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0
},
"total_mb": 7680
},
"disk_free": {
"units_by_mb": {
"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0
},
"total_mb": 1052672
}
}
}
}

View File

@ -1,9 +0,0 @@
{
"cell": {
"name": "cell3",
"rpc_host": null,
"rpc_port": null,
"type": "child",
"username": "username3"
}
}

View File

@ -1,3 +0,0 @@
{
"cells": []
}

View File

@ -1,39 +0,0 @@
{
"cells": [
{
"name": "cell1",
"rpc_host": null,
"rpc_port": null,
"type": "child",
"username": "username1"
},
{
"name": "cell3",
"rpc_host": null,
"rpc_port": null,
"type": "child",
"username": "username3"
},
{
"name": "cell5",
"rpc_host": null,
"rpc_port": null,
"type": "child",
"username": "username5"
},
{
"name": "cell2",
"rpc_host": null,
"rpc_port": null,
"type": "parent",
"username": "username2"
},
{
"name": "cell4",
"rpc_host": null,
"rpc_port": null,
"type": "parent",
"username": "username4"
}
]
}

View File

@ -1,18 +0,0 @@
{
"cell": {
"capacities": {
"ram_free": {
"units_by_mb": {
"8192": 0, "512": 13, "4096": 1, "2048": 3, "16384": 0
},
"total_mb": 7680
},
"disk_free": {
"units_by_mb": {
"81920": 11, "20480": 46, "40960": 23, "163840": 5, "0": 0
},
"total_mb": 1052672
}
}
}
}

View File

@ -1,9 +0,0 @@
{
"cell": {
"name": "cell3",
"username": "username3",
"rpc_host": null,
"rpc_port": null,
"type": "child"
}
}

View File

@ -1,39 +0,0 @@
{
"cells": [
{
"name": "cell1",
"username": "username1",
"rpc_host": null,
"rpc_port": null,
"type": "child"
},
{
"name": "cell2",
"username": "username2",
"rpc_host": null,
"rpc_port": null,
"type": "parent"
},
{
"name": "cell3",
"username": "username3",
"rpc_host": null,
"rpc_port": null,
"type": "child"
},
{
"name": "cell4",
"username": "username4",
"rpc_host": null,
"rpc_port": null,
"type": "parent"
},
{
"name": "cell5",
"username": "username5",
"rpc_host": null,
"rpc_port": null,
"type": "child"
}
]
}

View File

@ -34,8 +34,6 @@ from nova.api.metadata import password
from nova.api.openstack.compute.contrib import fping
from nova.api.openstack.compute import extensions
# Import extensions to pull in osapi_compute_extension CONF option used below.
from nova.cells import rpcapi as cells_rpcapi
from nova.cells import state
from nova.cloudpipe import pipelib
from nova.compute import api as compute_api
from nova.compute import cells_api as cells_api
@ -2560,103 +2558,6 @@ class BaremetalNodesJsonTest(ApiSampleTestBaseV2):
self._verify_response('baremetal-node-get-resp', subs, response, 200)
class CellsSampleJsonTest(ApiSampleTestBaseV2):
extension_name = "nova.api.openstack.compute.contrib.cells.Cells"
def setUp(self):
# db_check_interval < 0 makes cells manager always hit the DB
self.flags(enable=True, db_check_interval=-1, group='cells')
super(CellsSampleJsonTest, self).setUp()
self._stub_cells()
def _stub_cells(self, num_cells=5):
self.cells = []
self.cells_next_id = 1
def _fake_cell_get_all(context):
return self.cells
def _fake_cell_get(inst, context, cell_name):
for cell in self.cells:
if cell['name'] == cell_name:
return cell
raise exception.CellNotFound(cell_name=cell_name)
for x in xrange(num_cells):
cell = models.Cell()
our_id = self.cells_next_id
self.cells_next_id += 1
cell.update({'id': our_id,
'name': 'cell%s' % our_id,
'transport_url': 'rabbit://username%s@/' % our_id,
'is_parent': our_id % 2 == 0})
self.cells.append(cell)
self.stubs.Set(db, 'cell_get_all', _fake_cell_get_all)
self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_get', _fake_cell_get)
def test_cells_empty_list(self):
# Override this
self._stub_cells(num_cells=0)
response = self._do_get('os-cells')
subs = self._get_regexes()
self._verify_response('cells-list-empty-resp', subs, response, 200)
def test_cells_list(self):
response = self._do_get('os-cells')
subs = self._get_regexes()
self._verify_response('cells-list-resp', subs, response, 200)
def test_cells_get(self):
response = self._do_get('os-cells/cell3')
subs = self._get_regexes()
self._verify_response('cells-get-resp', subs, response, 200)
class CellsCapacitySampleJsonTest(ApiSampleTestBaseV2):
extends_name = ("nova.api.openstack.compute.contrib.cells.Cells")
extension_name = ("nova.api.openstack.compute.contrib."
"cell_capacities.Cell_capacities")
def setUp(self):
self.flags(enable=True, db_check_interval=-1, group='cells')
super(CellsCapacitySampleJsonTest, self).setUp()
# (navneetk/kaushikc) : Mock cell capacity to avoid the capacity
# being calculated from the compute nodes in the environment
self._mock_cell_capacity()
def test_get_cell_capacity(self):
state_manager = state.CellStateManager()
my_state = state_manager.get_my_state()
response = self._do_get('os-cells/%s/capacities' %
my_state.name)
subs = self._get_regexes()
return self._verify_response('cells-capacities-resp',
subs, response, 200)
def test_get_all_cells_capacity(self):
response = self._do_get('os-cells/capacities')
subs = self._get_regexes()
return self._verify_response('cells-capacities-resp',
subs, response, 200)
def _mock_cell_capacity(self):
self.mox.StubOutWithMock(self.cells.manager.state_manager,
'get_our_capacities')
response = {"ram_free":
{"units_by_mb": {"8192": 0, "512": 13,
"4096": 1, "2048": 3, "16384": 0},
"total_mb": 7680},
"disk_free":
{"units_by_mb": {"81920": 11, "20480": 46,
"40960": 23, "163840": 5, "0": 0},
"total_mb": 1052672}
}
self.cells.manager.state_manager.get_our_capacities(). \
AndReturn(response)
self.mox.ReplayAll()
class BlockDeviceMappingV2BootJsonTest(ServersSampleBase):
extension_name = ('nova.api.openstack.compute.contrib.'
'block_device_mapping_v2_boot.'

View File

@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
from nova.cells import rpcapi as cells_rpcapi
from nova.cells import state
from nova import db
@ -20,9 +22,26 @@ from nova.db.sqlalchemy import models
from nova import exception
from nova.tests.functional.v3 import api_sample_base
CONF = cfg.CONF
CONF.import_opt('osapi_compute_extension',
'nova.api.openstack.compute.extensions')
class CellsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3):
extension_name = "os-cells"
# TODO(gmann): Overriding '_api_version' till all functional tests
# are merged between v2 and v2.1. After that base class variable
# itself can be changed to 'v2'
_api_version = 'v2'
def _get_flags(self):
f = super(CellsSampleJsonTest, self)._get_flags()
f['osapi_compute_extension'] = CONF.osapi_compute_extension[:]
f['osapi_compute_extension'].append(
'nova.api.openstack.compute.contrib.cells.Cells')
f['osapi_compute_extension'].append('nova.api.openstack.compute.'
'contrib.cell_capacities.Cell_capacities')
return f
def setUp(self):
# db_check_interval < 0 makes cells manager always hit the DB