Beispiel #1
0
 def test_encrypted_upload_wal(self, rfo_mock, boto_mock):
     """
     Test the upload of a WAL
     """
     # Create a simple CloudWalUploader obj
     cloud_interface = S3CloudInterface("s3://bucket/path/to/dir",
                                        encryption="AES256")
     uploader = CloudWalUploader(cloud_interface, "test-server")
     source = "/wal_dir/000000080000ABFF000000C1"
     # Simulate the file object returned by the retrieve_file_obj method
     rfo_mock.return_value.name = source
     uploader.upload_wal(source)
     session_mock = boto_mock.Session.return_value
     s3_client_mock = session_mock.resource.return_value.meta.client
     # Check the call for the creation of the destination key
     s3_client_mock.upload_fileobj.assert_called_once_with(
         Fileobj=rfo_mock.return_value,
         Bucket=cloud_interface.bucket_name,
         Key=os.path.join(
             cloud_interface.path,
             uploader.server_name,
             "wals",
             hash_dir(source),
             os.path.basename(source),
         ),
         ExtraArgs={"ServerSideEncryption": "AES256"},
     )
    def test_upload_wal(self, rfo_mock, ContainerClientMock):
        """
        Test the upload of a WAL
        """
        # Create a simple S3WalUploader obj
        container_name = "container"
        cloud_interface = AzureCloudInterface(
            url="https://account.blob.core.windows.net/container/path/to/dir")
        uploader = CloudWalUploader(cloud_interface, "test-server")
        source = "/wal_dir/000000080000ABFF000000C1"
        # Simulate the file object returned by the retrieve_file_obj method
        rfo_mock.return_value.name = source
        uploader.upload_wal(source)

        ContainerClientMock.from_connection_string.assert_called_once_with(
            conn_str=os.environ["AZURE_STORAGE_CONNECTION_STRING"],
            container_name=container_name,
        )
        container_client = ContainerClientMock.from_connection_string.return_value

        # Check the call for the creation of the destination key
        container_client.upload_blob.assert_called_once_with(
            data=rfo_mock.return_value,
            name=os.path.join(
                cloud_interface.path,
                uploader.server_name,
                "wals",
                hash_dir(source),
                os.path.basename(source),
            ),
            overwrite=True,
        )
Beispiel #3
0
    def test_upload_wal(self, rfo_mock, cloud_interface_mock):
        """
        Test upload_wal calls CloudInterface with expected parameters
        """
        bucket_path = "gs://bucket/path/to/dir"
        server_name = "test_server"
        type(cloud_interface_mock).path = mock.PropertyMock(
            return_value=bucket_path)
        uploader = CloudWalUploader(cloud_interface_mock, server_name)
        source = "/wal_dir/000000080000ABFF000000C1"
        # Simulate the file object returned by the retrieve_file_obj method
        rfo_mock.return_value.name = source
        mock_fileobj_length = 42
        rfo_mock.return_value.tell.return_value = mock_fileobj_length
        uploader.upload_wal(source)

        expected_key = os.path.join(bucket_path, server_name, "wals",
                                    hash_dir(source), os.path.basename(source))
        cloud_interface_mock.upload_fileobj.assert_called_once_with(
            fileobj=rfo_mock(), key=expected_key, override_tags=None)