Fixed rack tests

This patch fixes the tests.  There's one failure
left; fixing it requires stubbing out the baremetal
client, which I'm holding off on doing for now.

Change-Id: I30e5ffd187a3309906909e7f0a75583d957c42fc
This commit is contained in:
Tzu-Mainn Chen 2013-07-30 16:46:41 -04:00 committed by Tomas Sedovic
parent 396d76856b
commit 544cef78a6
4 changed files with 36 additions and 13 deletions

View File

@ -735,8 +735,7 @@ class ResourceClass(StringIdAPIResourceWrapper):
@property
def nodes(self):
if not hasattr(self, '_nodes'):
nodes_array = [rack.nodes for rack in self.racks]
self._nodes = [node for nodes in nodes_array for node in nodes]
self._nodes = [rack.list_nodes for rack in self.list_racks]
return self._nodes
@property

View File

@ -43,13 +43,18 @@ class RackViewTests(test.BaseAdminViewTests):
# to circle back and fix these tests.
#
@test.create_stubs({api.tuskar.Rack: ('list', 'create',),
api.tuskar.ResourceClass: ('list',)})
api.tuskar.ResourceClass: ('list',),
api.nova.baremetal.BareMetalNodeManager: ('create',)})
def test_create_rack_post(self):
api.tuskar.Rack.list(
IsA(http.request.HttpRequest)).AndReturn(
self.tuskar_racks.list())
api.tuskar.Rack.create(IsA(http.request.HttpRequest), 'New Rack',
u'1', 'Tokyo', '1.2.3.4').AndReturn(None)
api.nova.baremetal.BareMetalNodeManager.create(
'New Node', u'1', u'1024', u'10', 'aa:bb:cc:dd:ee',
u'', u'', u'', u'').AndReturn(None)
api.tuskar.Rack.create(
IsA(http.request.HttpRequest), 'New Rack',
u'1', 'Tokyo', '1.2.3.4', [{'id': None}]).AndReturn(None)
api.tuskar.ResourceClass.list(
IsA(http.request.HttpRequest)).AndReturn(
self.tuskar_resource_classes.list())
@ -57,7 +62,9 @@ class RackViewTests(test.BaseAdminViewTests):
self.mox.ReplayAll()
data = {'name': 'New Rack', 'resource_class_id': u'1',
'location': 'Tokyo', 'subnet': '1.2.3.4'}
'location': 'Tokyo', 'subnet': '1.2.3.4',
'node_name': 'New Node', 'prov_mac_address': 'aa:bb:cc:dd:ee',
'cpus': u'1', 'memory_mb': u'1024', 'local_gb': u'10'}
url = reverse('horizon:infrastructure:resource_management:'
'racks:create')
resp = self.client.post(url, data)
@ -70,13 +77,15 @@ class RackViewTests(test.BaseAdminViewTests):
api.tuskar.Rack.\
get(IsA(http.HttpRequest), rack.id).\
AndReturn(rack)
MultipleTimes().AndReturn(rack)
api.tuskar.ResourceClass.list(
IsA(http.request.HttpRequest)).AndReturn(
self.tuskar_resource_classes.list())
self.mox.ReplayAll()
api.tuskar.Rack.list_nodes = []
url = reverse('horizon:infrastructure:resource_management:' +
'racks:edit', args=[1])
res = self.client.get(url)
@ -89,18 +98,23 @@ class RackViewTests(test.BaseAdminViewTests):
def test_edit_rack_post(self):
rack = self.tuskar_racks.first()
rack_data = {'name': 'Updated Rack', 'resource_class_id': u'1',
'rack_id': u'1', 'location': 'New Location',
'subnet': '127.10.10.0/24', 'node_macs': None}
data = {'name': 'Updated Rack', 'resource_class_id': u'1',
'rack_id': u'1', 'location': 'New Location',
'subnet': '127.10.10.0/24', 'node_macs': 'foo'}
'subnet': '127.10.10.0/24', 'node_macs': None,
'node_name': 'New Node', 'prov_mac_address': 'aa:bb:cc:dd:ee',
'cpus': u'1', 'memory_mb': u'1024', 'local_gb': u'10'}
api.tuskar.Rack.get(
IsA(http.HttpRequest),
rack.id).\
IsA(http.HttpRequest), rack.id).MultipleTimes().\
AndReturn(rack)
api.tuskar.Rack.list(
IsA(http.request.HttpRequest)).AndReturn(
self.tuskar_racks.list())
api.tuskar.Rack.update(IsA(http.HttpRequest), rack.id, data)
api.tuskar.Rack.update(IsA(http.HttpRequest), rack.id, rack_data)
api.tuskar.ResourceClass.list(
IsA(http.request.HttpRequest)).AndReturn(
self.tuskar_resource_classes.list())

View File

@ -77,9 +77,19 @@ class TuskarApiTests(test.APITestCase):
self.assertIsInstance(rack, api.tuskar.Rack)
self.assertEquals(1, len(rc.list_racks))
## FIXME: we need to stub out the bare metal client, will
## be easier once the client is separated out a bit
def test_resource_class_nodes(self):
rc = self.tuskar_resource_classes.first()
for node in rc.list_nodes:
r = self.tuskar_racks.first()
n = self.nodes.first()
tuskarclient = self.stub_tuskarclient()
tuskarclient.racks = self.mox.CreateMockAnything()
tuskarclient.racks.get(r.id).AndReturn(r)
self.mox.ReplayAll()
for node in rc.nodes:
self.assertIsInstance(node, api.tuskar.Node)
self.assertEquals(4, len(rc.nodes))

View File

@ -122,7 +122,7 @@ def data(TEST):
location='location',
subnet='192.168.1.0/24',
state='provisioned',
nodes=[{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}],
nodes=[{'id': '1'}, {'id': '2'}, {'id': '3'}, {'id': '4'}],
resource_class={'id': '1'}))
TEST.tuskar_racks.add(rack_1)