def test_upload_download(self): manager = BlobManager('', self.uri, self.secret, self.secret, uuid4().hex) fd = BytesIO("save me") yield manager._encrypt_and_upload('blob_id', fd) blob, size = yield manager._download_and_decrypt('blob_id') self.assertEquals(blob.getvalue(), "save me")
def test_download_from_namespace(self): manager = BlobManager('', self.uri, self.secret, self.secret, 'user') namespace, blob_id, content = 'incoming', 'blob_id1', 'test' yield manager._encrypt_and_upload(blob_id, BytesIO(content), namespace=namespace) got_blob = yield manager._download_and_decrypt(blob_id, namespace) self.assertEquals(content, got_blob[0].getvalue())
def test_download_from_namespace(self): manager = BlobManager('', self.uri, self.secret, self.secret, uuid4().hex) namespace, blob_id, content = 'incoming', 'blob_id1', 'test' yield manager._encrypt_and_upload(blob_id, BytesIO(content), namespace=namespace) got_blob = yield manager._download_and_decrypt(blob_id, namespace) self.assertEquals(content, got_blob[0].getvalue())
def test_send_missing(self): manager = BlobManager(self.tempdir, self.uri, self.secret, self.secret, 'user') self.addCleanup(manager.close) blob_id = 'local_only_blob_id' yield manager.local.put(blob_id, BytesIO("X"), size=1) yield manager.send_missing() result = yield manager._download_and_decrypt(blob_id) self.assertIsNotNone(result) self.assertEquals(result[0].getvalue(), "X")
def test_send_missing(self): manager = BlobManager(self.tempdir, self.uri, self.secret, self.secret, uuid4().hex) self.addCleanup(manager.close) blob_id = 'local_only_blob_id' yield manager.local.put(blob_id, BytesIO("X"), size=1) pending = SyncStatus.PENDING_UPLOAD yield manager.local.update_sync_status(blob_id, pending) yield manager.send_missing() result = yield manager._download_and_decrypt(blob_id) self.assertIsNotNone(result) self.assertEquals(result[0].getvalue(), "X")
def test_upstream_from_namespace(self): manager = BlobManager(self.tempdir, self.uri, self.secret, self.secret, uuid4().hex, remote_stream=self.stream_uri) self.addCleanup(manager.close) blob_ids = [uuid4().hex for _ in range(5)] for i, blob_id in enumerate(blob_ids): yield manager.local.put(blob_id, BytesIO("X" * i), size=i, namespace='test') yield manager._upstream(blob_ids, namespace='test') for i, blob_id in enumerate(blob_ids): got_blob = yield manager._download_and_decrypt(blob_id, namespace='test') self.assertEquals(got_blob[0].getvalue(), "X" * i)
def test_send_missing_retry(self): manager = BlobManager(self.tempdir, self.uri, self.secret, self.secret, uuid4().hex) self.addCleanup(manager.close) blob_id = 'remote_only_blob_id' yield manager.local.put(blob_id, BytesIO("X"), size=1) pending = SyncStatus.PENDING_UPLOAD yield manager.local.update_sync_status(blob_id, pending) yield self.port.stopListening() d = manager.send_missing() yield sleep(0.1) self.port = reactor.listenTCP( self.host.port, self.site, interface='127.0.0.1') yield d result = yield manager._download_and_decrypt(blob_id) self.assertIsNotNone(result) self.assertEquals(result[0].getvalue(), "X")