def fake_snapshot_obj(context, **updates): expected_attrs = updates.pop('expected_attrs', None) or [] if 'volume' in updates and 'volume' not in expected_attrs: expected_attrs.append('volume') return snapshot.Snapshot._from_db_object(context, snapshot.Snapshot(), fake_db_snapshot(**updates), expected_attrs=expected_attrs)
def test_create_volume_from_snapshot(self, _copy_volume): TEST_SNAP = obj_snap.Snapshot(volume_id=fake.VOLUME_ID, volume_size=1024, provider_location='/dev/loop1') TEST_VOLUME = obj_volume.Volume(id=fake.VOLUME_ID, name_id=fake.VOLUME_NAME_ID, size=1, display_name='vol1', provider_location='/dev/loop2') with mock.patch.object(self.drv, 'find_appropriate_size_device', return_value='/dev/loop2') as fasd_mocked: with mock.patch.object(self.drv, '_get_devices_sizes', return_value={'/dev/loop2': 1024}) as \ gds_mocked: with mock.patch.object(self.drv, '_update_provider_location') as \ upl_mocked: volutils.copy_volume('/dev/loop1', fasd_mocked, 1024, mock.sentinel, execute=self.drv._execute) self.drv.create_volume_from_snapshot( TEST_VOLUME, TEST_SNAP) fasd_mocked.assert_called_once_with(TEST_SNAP.volume_size) gds_mocked.assert_called_once_with(['/dev/loop2']) upl_mocked.assert_called_once_with(TEST_VOLUME, '/dev/loop2')
def test_save(self, snapshot_update): snapshot = snapshot_obj.Snapshot._from_db_object( self.context, snapshot_obj.Snapshot(), fake_snapshot) snapshot.display_name = 'foobar' snapshot.save(self.context) snapshot_update.assert_called_once_with(self.context, snapshot.id, {'display_name': 'foobar'})
def test_obj_load_attr(self, volume_get_by_id): snapshot = snapshot_obj.Snapshot._from_db_object( self.context, snapshot_obj.Snapshot(), fake_snapshot) volume = volume_obj.Volume(context=self.context, id=2) volume_get_by_id.return_value = volume self.assertEqual(volume, snapshot.volume) volume_get_by_id.assert_called_once_with(self.context, snapshot.volume_id)
def test_obj_fields(self): volume = volume_obj.Volume(context=self.context, id=2, _name_id=2) snapshot = snapshot_obj.Snapshot(context=self.context, id=1, volume=volume) self.assertEqual(['name', 'volume_name'], snapshot.obj_extra_fields) self.assertEqual('snapshot-1', snapshot.name) self.assertEqual('volume-2', snapshot.volume_name)
def test_delete_metadata_key(self, snapshot_metadata_delete): snapshot = snapshot_obj.Snapshot(self.context, id=1) snapshot.metadata = {'key1': 'value1', 'key2': 'value2'} self.assertEqual({}, snapshot._orig_metadata) snapshot.delete_metadata_key(self.context, 'key2') self.assertEqual({'key1': 'value1'}, snapshot.metadata) snapshot_metadata_delete.assert_called_once_with( self.context, '1', 'key2')
def test_create_snapshot_with_not_available_volume(self): TEST_VOLUME = obj_volume.Volume(id=fake.VOLUME_ID, name_id=fake.VOLUME_NAME_ID, size=1, display_name='vol1', status='in use', provider_location='/dev/loop1') TEST_SNAP = obj_snap.Snapshot(id=fake.SNAPSHOT_ID, volume_id=fake.VOLUME_ID, volume_size=1024, provider_location='/dev/loop2', volume=TEST_VOLUME) self.assertRaises(cinder.exception.CinderException, self.drv.create_snapshot, TEST_SNAP)
def test_delete_snapshot(self, _clear_volume, _exists): TEST_SNAP = obj_snap.Snapshot(volume_id=fake.VOLUME_ID, provider_location='/dev/loop1', status=fields.SnapshotStatus.AVAILABLE) with mock.patch.object(self.drv, 'local_path', return_value='/dev/loop1') as lp_mocked: with mock.patch.object(self.drv, '_get_devices_sizes', return_value={'/dev/loop1': 1}) as \ gds_mocked: volutils.clear_volume(gds_mocked, lp_mocked) self.drv.delete_snapshot(TEST_SNAP) lp_mocked.assert_called_once_with(TEST_SNAP) gds_mocked.assert_called_once_with(['/dev/loop1']) self.assertTrue(_exists.called) self.assertTrue(_clear_volume.called)
def test_save_with_metadata(self, snapshot_update, snapshot_metadata_update): snapshot = snapshot_obj.Snapshot._from_db_object( self.context, snapshot_obj.Snapshot(), fake_snapshot) snapshot.display_name = 'foobar' snapshot.metadata = {'key1': 'value1'} self.assertEqual( { 'display_name': 'foobar', 'metadata': { 'key1': 'value1' } }, snapshot.obj_get_changes()) snapshot.save(self.context) snapshot_update.assert_called_once_with(self.context, snapshot.id, {'display_name': 'foobar'}) snapshot_metadata_update.assert_called_once_with( self.context, '1', {'key1': 'value1'}, True)
"""Return predefined volume info.""" return TEST_VOLUME[int(volume_id.replace("-", ""))] TEST_SNAPSHOT = [] snapshot = {} snapshot['id'] = '10000000-0000-0000-0000-{0:012d}'.format(0) snapshot['name'] = 'TEST_SNAPSHOT{0:d}'.format(0) snapshot['provider_location'] = '{0:d}'.format(1) snapshot['status'] = 'available' snapshot['volume_id'] = '00000000-0000-0000-0000-{0:012d}'.format(0) snapshot['volume'] = _volume_get(None, snapshot['volume_id']) snapshot['volume_name'] = 'test-volume{0:d}'.format(0) snapshot['volume_size'] = 128 snapshot = obj_snap.Snapshot._from_db_object( CTXT, obj_snap.Snapshot(), fake_snapshot.fake_db_snapshot(**snapshot)) TEST_SNAPSHOT.append(snapshot) # Dummy response for REST API POST_SESSIONS_RESULT = { "token": "b74777a3-f9f0-4ea8-bd8f-09847fac48d3", "sessionId": 0, } GET_PORTS_RESULT = { "data": [ { "portId": CONFIG_MAP['port_id'], "portType": "FIBRE", "portAttributes": ["TAR", "MCU", "RCU", "ELUN"], "fabricMode": True,
def fake_snapshot_obj(context, **updates): expected_attrs = updates.pop('expected_attrs', None) return snapshot.Snapshot._from_db_object(context, snapshot.Snapshot(), fake_db_snapshot(**updates), expected_attrs=expected_attrs)
def test_destroy(self, snapshot_destroy): snapshot = snapshot_obj.Snapshot(context=self.context, id=1) snapshot.destroy() snapshot_destroy.assert_called_once_with(self.context, '1')
def test_create_with_provider_id(self, snapshot_create): snapshot = snapshot_obj.Snapshot(context=self.context) snapshot.create() self.assertEqual('1111-aaaa', snapshot.provider_id)
def test_create(self, snapshot_create): snapshot = snapshot_obj.Snapshot(context=self.context) snapshot.create() self.assertEqual(fake_snapshot['id'], snapshot.id) self.assertEqual(fake_snapshot['volume_id'], snapshot.volume_id)
def test_reset_changes(self): snapshot = snapshot_obj.Snapshot() snapshot.metadata = {'key1': 'value1'} self.assertEqual({}, snapshot._orig_metadata) snapshot.obj_reset_changes(['metadata']) self.assertEqual({'key1': 'value1'}, snapshot._orig_metadata)