48
48
'root_device_name': '/dev/vda',
49
'default_ephemeral_device': '/dev/vdb'
49
'default_ephemeral_device': '/dev/vdb',
50
'instance_type_id': 'fake',
54
def fake_get(instance_type_id, ctxt=None):
55
return self.instance_type
57
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
58
lambda context, instance: self.data)
52
60
def _validate_device(self, device=None):
53
61
return compute_utils.get_device_name_for_instance(self.context,
66
74
def test_wrap(self):
68
76
for letter in string.ascii_lowercase[2:]:
69
data.append(self._fake_bdm('/dev/vd' + letter))
70
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
71
lambda context, instance: data)
77
self.data.append(self._fake_bdm('/dev/vd' + letter))
72
78
device = self._validate_device()
73
79
self.assertEqual(device, '/dev/vdaa')
75
81
def test_wrap_plus_one(self):
77
83
for letter in string.ascii_lowercase[2:]:
78
data.append(self._fake_bdm('/dev/vd' + letter))
79
data.append(self._fake_bdm('/dev/vdaa'))
80
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
81
lambda context, instance: data)
84
self.data.append(self._fake_bdm('/dev/vd' + letter))
85
self.data.append(self._fake_bdm('/dev/vdaa'))
82
86
device = self._validate_device()
83
87
self.assertEqual(device, '/dev/vdab')
85
89
def test_later(self):
87
91
self._fake_bdm('/dev/vdc'),
88
92
self._fake_bdm('/dev/vdd'),
89
93
self._fake_bdm('/dev/vde'),
91
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
92
lambda context, instance: data)
93
95
device = self._validate_device()
94
96
self.assertEqual(device, '/dev/vdf')
96
98
def test_gap(self):
98
100
self._fake_bdm('/dev/vdc'),
99
101
self._fake_bdm('/dev/vde'),
101
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
102
lambda context, instance: data)
103
103
device = self._validate_device()
104
104
self.assertEqual(device, '/dev/vdd')
106
106
def test_no_bdms(self):
108
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
109
lambda context, instance: data)
110
108
device = self._validate_device()
111
109
self.assertEqual(device, '/dev/vdc')
113
111
def test_lxc_names_work(self):
116
'root_device_name': '/dev/a',
117
'default_ephemeral_device': '/dev/b'
120
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
121
lambda context, instance: data)
112
self.instance['root_device_name'] = '/dev/a'
113
self.instance['ephemeral_device_name'] = '/dev/b'
122
115
device = self._validate_device()
123
116
self.assertEqual(device, '/dev/c')
125
118
def test_name_conversion(self):
127
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
128
lambda context, instance: data)
129
120
device = self._validate_device('/dev/c')
130
121
self.assertEqual(device, '/dev/vdc')
131
122
device = self._validate_device('/dev/sdc')
134
125
self.assertEqual(device, '/dev/vdc')
136
127
def test_invalid_bdms(self):
137
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
138
lambda context, instance: [])
139
128
self.instance['root_device_name'] = "baddata"
140
129
self.assertRaises(exception.InvalidDevicePath,
141
130
self._validate_device)
143
132
def test_invalid_device_prefix(self):
144
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
145
lambda context, instance: [])
146
133
self.assertRaises(exception.InvalidDevicePath,
147
134
self._validate_device, '/baddata/vdc')
149
136
def test_device_in_use(self):
150
self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
151
lambda context, instance: [])
152
137
self.assertRaises(exception.DevicePathInUse,
153
138
self._validate_device, '/dev/vdb')
141
self.instance['default_swap_device'] = "/dev/vdc"
142
device = self._validate_device()
143
self.assertEqual(device, '/dev/vdd')
145
def test_swap_no_ephemeral(self):
146
del self.instance['default_ephemeral_device']
147
self.instance['default_swap_device'] = "/dev/vdb"
148
device = self._validate_device()
149
self.assertEqual(device, '/dev/vdc')
151
def test_ephemeral_xenapi(self):
152
self.flags(compute_driver='xenapi.XenAPIDriver')
153
del self.instance['default_ephemeral_device']
154
self.instance_type = {
158
self.stubs.Set(instance_types, 'get_instance_type',
159
lambda instance_type_id, ctxt=None: self.instance_type)
160
device = self._validate_device()
161
self.assertEqual(device, '/dev/xvdc')
163
def test_swap_xenapi(self):
164
self.flags(compute_driver='xenapi.XenAPIDriver')
165
del self.instance['default_ephemeral_device']
166
self.instance_type = {
170
self.stubs.Set(instance_types, 'get_instance_type',
171
lambda instance_type_id, ctxt=None: self.instance_type)
172
device = self._validate_device()
173
self.assertEqual(device, '/dev/xvdb')
175
def test_swap_and_ephemeral_xenapi(self):
176
self.flags(compute_driver='xenapi.XenAPIDriver')
177
del self.instance['default_ephemeral_device']
178
self.instance_type = {
182
self.stubs.Set(instance_types, 'get_instance_type',
183
lambda instance_type_id, ctxt=None: self.instance_type)
184
device = self._validate_device()
185
self.assertEqual(device, '/dev/xvdd')
156
188
class UsageInfoTestCase(test.TestCase):