class SheepdogTestCase(test.TestCase): def setUp(self): super(SheepdogTestCase, self).setUp() self.driver = SheepdogDriver() def test_update_volume_stats(self): def fake_stats(*args): return COLLIE_NODE_INFO, '' self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict(volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb=float(107287605248) / (1024**3), free_capacity_gb=float(107287605248 - 3623897354) / (1024**3), reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_update_volume_stats_error(self): def fake_stats(*args): raise processutils.ProcessExecutionError() self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict(volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb='unknown', free_capacity_gb='unknown', reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_check_for_setup_error_0_5(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_5, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_check_for_setup_error_0_6(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_6, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_copy_image_to_volume(self): @contextlib.contextmanager def fake_temp_file(dir): class FakeTmp: def __init__(self, name): self.name = name yield FakeTmp('test') def fake_try_execute(obj, *command, **kwargs): return True self.stubs.Set(tempfile, 'NamedTemporaryFile', fake_temp_file) self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(image_utils, 'fetch_verify_image', lambda w, x, y, z: None) self.stubs.Set(image_utils, 'convert_image', lambda x, y, z: None) self.stubs.Set(SheepdogDriver, '_try_execute', fake_try_execute) self.driver.copy_image_to_volume(None, { 'name': 'test', 'size': 1 }, FakeImageService(), None) def test_extend_volume(self): fake_name = u'volume-00000001' fake_size = '20' fake_vol = { 'project_id': 'testprjid', 'name': fake_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66' } self.mox.StubOutWithMock(self.driver, '_resize') size = int(fake_size) * units.GiB self.driver._resize(fake_vol, size=size) self.mox.ReplayAll() self.driver.extend_volume(fake_vol, fake_size) self.mox.VerifyAll()
class SheepdogTestCase(test.TestCase): def setUp(self): super(SheepdogTestCase, self).setUp() self.driver = SheepdogDriver() def test_update_volume_stats(self): def fake_stats(*args): return COLLIE_NODE_INFO, '' self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict( volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb=float(107287605248) / units.Gi, free_capacity_gb=float(107287605248 - 3623897354) / units.Gi, reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_update_volume_stats_error(self): def fake_stats(*args): raise processutils.ProcessExecutionError() self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict( volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb='unknown', free_capacity_gb='unknown', reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_check_for_setup_error_0_5(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_5, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_check_for_setup_error_0_6(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_6, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_copy_image_to_volume(self): @contextlib.contextmanager def fake_temp_file(): class FakeTmp: def __init__(self, name): self.name = name yield FakeTmp('test').name def fake_try_execute(obj, *command, **kwargs): return True self.stubs.Set(image_utils, 'temporary_file', fake_temp_file) self.stubs.Set(image_utils, 'fetch_verify_image', lambda w, x, y, z: None) self.stubs.Set(image_utils, 'convert_image', lambda x, y, z: None) self.stubs.Set(SheepdogDriver, '_try_execute', fake_try_execute) self.driver.copy_image_to_volume(None, {'name': 'test', 'size': 1}, FakeImageService(), None) def test_extend_volume(self): fake_name = u'volume-00000001' fake_size = '20' fake_vol = {'project_id': 'testprjid', 'name': fake_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'} self.mox.StubOutWithMock(self.driver, '_resize') size = int(fake_size) * units.Gi self.driver._resize(fake_vol, size=size) self.mox.ReplayAll() self.driver.extend_volume(fake_vol, fake_size) self.mox.VerifyAll() def test_create_volume_from_snapshot(self): fake_name = u'volume-00000001' fake_size = '10' fake_vol = {'project_id': 'testprjid', 'name': fake_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'} ss_uuid = '00000000-0000-0000-0000-c3aa7ee01536' fake_snapshot = {'volume_name': fake_name, 'name': 'volume-%s' % ss_uuid, 'id': ss_uuid, 'size': fake_size} with mock.patch.object(SheepdogDriver, '_try_execute') as mock_exe: self.driver.create_volume_from_snapshot(fake_vol, fake_snapshot) args = ['qemu-img', 'create', '-b', "sheepdog:%s:%s" % (fake_snapshot['volume_name'], fake_snapshot['name']), "sheepdog:%s" % fake_vol['name'], "%sG" % fake_vol['size']] mock_exe.assert_called_once_with(*args)
class SheepdogTestCase(test.TestCase): def setUp(self): super(SheepdogTestCase, self).setUp() self.driver = SheepdogDriver() def test_update_volume_stats(self): def fake_stats(*args): return COLLIE_NODE_INFO, '' self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict( volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb=float(107287605248) / (1024 ** 3), free_capacity_gb=float(107287605248 - 3623897354) / (1024 ** 3), reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_update_volume_stats_error(self): def fake_stats(*args): raise processutils.ProcessExecutionError() self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict( volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb='unknown', free_capacity_gb='unknown', reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_check_for_setup_error_0_5(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_5, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_check_for_setup_error_0_6(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_6, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_copy_image_to_volume(self): @contextlib.contextmanager def fake_temp_file(dir): class FakeTmp: def __init__(self, name): self.name = name yield FakeTmp('test') def fake_try_execute(obj, *command, **kwargs): return True self.stubs.Set(tempfile, 'NamedTemporaryFile', fake_temp_file) self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(image_utils, 'fetch_verify_image', lambda w, x, y, z: None) self.stubs.Set(image_utils, 'convert_image', lambda x, y, z: None) self.stubs.Set(SheepdogDriver, '_try_execute', fake_try_execute) self.driver.copy_image_to_volume(None, {'name': 'test', 'size': 1}, FakeImageService(), None) def test_extend_volume(self): fake_name = u'volume-00000001' fake_size = '20' fake_vol = {'project_id': 'testprjid', 'name': fake_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'} self.mox.StubOutWithMock(self.driver, '_resize') size = int(fake_size) * units.GiB self.driver._resize(fake_vol, size=size) self.mox.ReplayAll() self.driver.extend_volume(fake_vol, fake_size) self.mox.VerifyAll()