def _get_storlet_invocation_options(self, req): options = dict() filtered_key = ['X-Storlet-Range', 'X-Storlet-Generate-Log'] for key in req.headers: prefix = 'X-Storlet-' if key.startswith(prefix) and key not in filtered_key: new_key = 'storlet_' + \ key[len(prefix):].lower().replace('-', '_') options[new_key] = req.headers.get(key) scope = self.account if scope.rfind(':') > 0: scope = scope[:scope.rfind(':')] options['scope'] = self.scope options['generate_log'] = \ config_true_value(req.headers.get('X-Storlet-Generate-Log')) options['file_manager'] = \ SwiftFileManager(self.account, self.storlet_container, self.storlet_dependency, self.log_container, self.client_conf_file, self.logger) return options
def setUp(self): self.logger = FakeLogger() self.manager = SwiftFileManager('a', 'storlet', 'dependency', 'log', 'client.conf', self.logger)
class TestSwiftFileManager(unittest.TestCase): def setUp(self): self.logger = FakeLogger() self.manager = SwiftFileManager('a', 'storlet', 'dependency', 'log', 'client.conf', self.logger) @contextmanager def _mock_internal_client(self, cls): with mock.patch( 'storlets.swift_middleware.handlers.base.' 'InternalClient', cls): yield def test_get_storlet(self): name = 'Storlet-1.0.jar' class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): return '200', {}, StringIO('test') with self._mock_internal_client(DummyClient): data_iter, perm = self.manager.get_storlet(name) self.assertEqual('test', next(data_iter)) self.assertIsNone(perm) class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): raise Exception('Some error') with self._mock_internal_client(DummyClient): with self.assertRaises(FileManagementError): self.manager.get_storlet(name) def test_get_dependency(self): name = 'depfile' class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): headers = { 'X-Object-Meta-Storlet-Dependency-Permissions': '0600' } return '200', headers, StringIO('test') with self._mock_internal_client(DummyClient): data_iter, perm = self.manager.get_dependency(name) self.assertEqual('test', next(data_iter)) self.assertEqual('0600', perm) class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): return '200', {}, StringIO('test') with self._mock_internal_client(DummyClient): data_iter, perm = self.manager.get_dependency(name) self.assertEqual('test', next(data_iter)) self.assertIsNone(perm) class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): raise Exception('Some error') with self._mock_internal_client(DummyClient): with self.assertRaises(FileManagementError): self.manager.get_dependency(name) def test_put_log(self): name = 'logfile' class DummyClient(object): def __init__(self, *args, **kwargs): pass def upload_object(self, fobj, account, container, obj, headers=None): pass with self._mock_internal_client(DummyClient): self.manager.put_log(name, mock.MagicMock()) class DummyClient(object): def __init__(self, *args, **kwargs): pass def upload_object(self, fobj, account, container, obj, headers=None): raise Exception('Some error') with self._mock_internal_client(DummyClient): with self.assertRaises(FileManagementError): self.manager.put_log(name, mock.MagicMock())
def setUp(self): self.logger = FakeLogger() self.manager = SwiftFileManager('a', 'storlet', 'dependency', 'log', 'client.conf', self.logger)
class TestSwiftFileManager(unittest.TestCase): def setUp(self): self.logger = FakeLogger() self.manager = SwiftFileManager('a', 'storlet', 'dependency', 'log', 'client.conf', self.logger) @contextmanager def _mock_internal_client(self, cls): with mock.patch('storlets.swift_middleware.handlers.base.' 'InternalClient', cls): yield def test_get_storlet(self): name = 'Storlet-1.0.jar' class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): return '200', {}, StringIO('test') with self._mock_internal_client(DummyClient): data_iter, perm = self.manager.get_storlet(name) self.assertEqual('test', next(data_iter)) self.assertIsNone(perm) class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): raise Exception('Some error') with self._mock_internal_client(DummyClient): with self.assertRaises(FileManagementError): self.manager.get_storlet(name) def test_get_dependency(self): name = 'depfile' class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): headers = {'X-Object-Meta-Storlet-Dependency-Permissions': '0600'} return '200', headers, StringIO('test') with self._mock_internal_client(DummyClient): data_iter, perm = self.manager.get_dependency(name) self.assertEqual('test', next(data_iter)) self.assertEqual('0600', perm) class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): return '200', {}, StringIO('test') with self._mock_internal_client(DummyClient): data_iter, perm = self.manager.get_dependency(name) self.assertEqual('test', next(data_iter)) self.assertIsNone(perm) class DummyClient(object): def __init__(self, *args, **kwargs): pass def get_object(self, account, container, obj, headers, acceptable_statuses=None): raise Exception('Some error') with self._mock_internal_client(DummyClient): with self.assertRaises(FileManagementError): self.manager.get_dependency(name) def test_put_log(self): name = 'logfile' class DummyClient(object): def __init__(self, *args, **kwargs): pass def upload_object(self, fobj, account, container, obj, headers=None): pass with self._mock_internal_client(DummyClient): self.manager.put_log(name, mock.MagicMock()) class DummyClient(object): def __init__(self, *args, **kwargs): pass def upload_object(self, fobj, account, container, obj, headers=None): raise Exception('Some error') with self._mock_internal_client(DummyClient): with self.assertRaises(FileManagementError): self.manager.put_log(name, mock.MagicMock())