Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion sdk/storage/Azure.Storage.DataMovement/src/JobBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,10 @@ private async Task<TransferJobInternal> BuildSingleTransferJob(
arrayPool: _arrayPool,
clientDiagnostics: ClientDiagnostics);

if (resumeJob)
int jobPartCount = await checkpointer.GetCurrentJobPartCountAsync(
transferId: dataTransfer.Id,
cancellationToken: cancellationToken).ConfigureAwait(false);
if (resumeJob && jobPartCount > 0)
{
JobPartPlanHeader part = await checkpointer.GetJobPartAsync(dataTransfer.Id, partNumber: 0).ConfigureAwait(false);
job.AppendJobPart(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Threading;
using System.Threading.Tasks;
using Azure.Storage.Common;

namespace Azure.Storage.DataMovement.Tests
{
/// <summary>
/// Provider for a <see cref="StorageResource"/> configured for mocking.
/// </summary>
internal class MockStorageResourceProvider : StorageResourceProvider
{
/// <inheritdoc/>
protected internal override string ProviderId => "mock";

internal MemoryTransferCheckpointer checkpointer;

/// <summary>
/// Default constructor.
/// </summary>
internal MockStorageResourceProvider(
MemoryTransferCheckpointer checkpter)
{
checkpointer = checkpter;
}

/// <inheritdoc/>
protected internal override Task<StorageResource> FromSourceAsync(DataTransferProperties properties, CancellationToken cancellationToken)
=> Task.FromResult(FromTransferProperties(properties, getSource: true));

/// <inheritdoc/>
protected internal override Task<StorageResource> FromDestinationAsync(DataTransferProperties properties, CancellationToken cancellationToken)
=> Task.FromResult(FromTransferProperties(properties, getSource: false));

private StorageResource FromTransferProperties(DataTransferProperties properties, bool getSource)
{
Argument.AssertNotNull(properties, nameof(properties));

string transferId = properties.TransferId;
if (!checkpointer.Jobs.TryGetValue(transferId, out var job))
{
throw new Exception("Job does not exist.");
}

if (getSource)
{
return job.Source;
}
else
{
return job.Destination;
}
}
}
}
Loading
Loading