1
# Copyright (c) 2012 NTT DOCOMO, INC.
4
# Licensed under the Apache License, Version 2.0 (the "License"); you may
5
# not use this file except in compliance with the License. You may obtain
6
# a copy of the License at
8
# http://www.apache.org/licenses/LICENSE-2.0
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
# License for the specific language governing permissions and limitations
17
Bare-Metal DB testcase for BareMetalNode
20
from nova.tests.baremetal.db import base
21
from nova.tests.baremetal.db import utils
22
from nova.virt.baremetal import db
25
class BareMetalNodesTestCase(base.BMDBTestCase):
27
def _create_nodes(self):
29
utils.new_bm_node(pm_address='0', service_host="host1",
30
memory_mb=100000, cpus=100, local_gb=10000),
31
utils.new_bm_node(pm_address='1', service_host="host2",
33
memory_mb=100000, cpus=100, local_gb=10000),
34
utils.new_bm_node(pm_address='2', service_host="host2",
35
memory_mb=1000, cpus=1, local_gb=1000),
36
utils.new_bm_node(pm_address='3', service_host="host2",
37
memory_mb=1000, cpus=2, local_gb=1000),
38
utils.new_bm_node(pm_address='4', service_host="host2",
39
memory_mb=2000, cpus=1, local_gb=1000),
40
utils.new_bm_node(pm_address='5', service_host="host2",
41
memory_mb=2000, cpus=2, local_gb=1000),
45
ref = db.bm_node_create(self.context, n)
46
self.ids.append(ref['id'])
48
def test_get_all0(self):
49
r = db.bm_node_get_all(self.context)
50
self.assertEquals(r, [])
52
def test_get_all(self):
53
r = db.bm_node_get_all(self.context)
54
self.assertEquals(r, [])
58
r = db.bm_node_get_all(self.context)
59
self.assertEquals(len(r), 6)
64
r = db.bm_node_get(self.context, self.ids[0])
65
self.assertEquals(r['pm_address'], '0')
67
r = db.bm_node_get(self.context, self.ids[1])
68
self.assertEquals(r['pm_address'], '1')
70
r = db.bm_node_get(self.context, -1)
71
self.assertTrue(r is None)
73
def test_get_by_service_host(self):
76
r = db.bm_node_get_all(self.context, service_host=None)
77
self.assertEquals(len(r), 6)
79
r = db.bm_node_get_all(self.context, service_host="host1")
80
self.assertEquals(len(r), 1)
81
self.assertEquals(r[0]['pm_address'], '0')
83
r = db.bm_node_get_all(self.context, service_host="host2")
84
self.assertEquals(len(r), 5)
85
pmaddrs = [x['pm_address'] for x in r]
86
self.assertIn('1', pmaddrs)
87
self.assertIn('2', pmaddrs)
88
self.assertIn('3', pmaddrs)
89
self.assertIn('4', pmaddrs)
90
self.assertIn('5', pmaddrs)
92
r = db.bm_node_get_all(self.context, service_host="host3")
93
self.assertEquals(r, [])
95
def test_destroy(self):
98
db.bm_node_destroy(self.context, self.ids[0])
100
r = db.bm_node_get(self.context, self.ids[0])
101
self.assertTrue(r is None)
103
r = db.bm_node_get_all(self.context)
104
self.assertEquals(len(r), 5)
106
def test_find_free(self):
108
fn = db.bm_node_find_free(self.context, 'host2')
109
self.assertEqual(fn['pm_address'], '2')
111
fn = db.bm_node_find_free(self.context, 'host2',
112
memory_mb=500, cpus=2, local_gb=100)
113
self.assertEqual(fn['pm_address'], '3')
115
fn = db.bm_node_find_free(self.context, 'host2',
116
memory_mb=1001, cpus=1, local_gb=1000)
117
self.assertEqual(fn['pm_address'], '4')
119
fn = db.bm_node_find_free(self.context, 'host2',
120
memory_mb=2000, cpus=1, local_gb=1000)
121
self.assertEqual(fn['pm_address'], '4')
123
fn = db.bm_node_find_free(self.context, 'host2',
124
memory_mb=2000, cpus=2, local_gb=1000)
125
self.assertEqual(fn['pm_address'], '5')
128
fn = db.bm_node_find_free(self.context, 'host2',
129
memory_mb=2001, cpus=2, local_gb=1000)
130
self.assertTrue(fn is None)
133
fn = db.bm_node_find_free(self.context, 'host2',
134
memory_mb=2000, cpus=3, local_gb=1000)
135
self.assertTrue(fn is None)
138
fn = db.bm_node_find_free(self.context, 'host2',
139
memory_mb=2000, cpus=2, local_gb=1001)
140
self.assertTrue(fn is None)