Skip to content

Commit 3c61d4a

Browse files
authored
[Storage] [DataMovement] [Tests] Core Resume mocked tests (Azure#47431)
* initial commit * change to internal * Added checkpointer verify * Refaactored out jobs and parts completion asserts * Refactored and added more assertions for pause/resume during chunk processor - container
1 parent 98111e7 commit 3c61d4a

File tree

5 files changed

+446
-32
lines changed

5 files changed

+446
-32
lines changed

sdk/storage/Azure.Storage.DataMovement/src/JobBuilder.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,10 @@ private async Task<TransferJobInternal> BuildSingleTransferJob(
135135
arrayPool: _arrayPool,
136136
clientDiagnostics: ClientDiagnostics);
137137

138-
if (resumeJob)
138+
int jobPartCount = await checkpointer.GetCurrentJobPartCountAsync(
139+
transferId: dataTransfer.Id,
140+
cancellationToken: cancellationToken).ConfigureAwait(false);
141+
if (resumeJob && jobPartCount > 0)
139142
{
140143
JobPartPlanHeader part = await checkpointer.GetJobPartAsync(dataTransfer.Id, partNumber: 0).ConfigureAwait(false);
141144
job.AppendJobPart(
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using System;
5+
using System.Threading;
6+
using System.Threading.Tasks;
7+
using Azure.Storage.Common;
8+
9+
namespace Azure.Storage.DataMovement.Tests
10+
{
11+
/// <summary>
12+
/// Provider for a <see cref="StorageResource"/> configured for mocking.
13+
/// </summary>
14+
internal class MockStorageResourceProvider : StorageResourceProvider
15+
{
16+
/// <inheritdoc/>
17+
protected internal override string ProviderId => "mock";
18+
19+
internal MemoryTransferCheckpointer checkpointer;
20+
21+
/// <summary>
22+
/// Default constructor.
23+
/// </summary>
24+
internal MockStorageResourceProvider(
25+
MemoryTransferCheckpointer checkpter)
26+
{
27+
checkpointer = checkpter;
28+
}
29+
30+
/// <inheritdoc/>
31+
protected internal override Task<StorageResource> FromSourceAsync(DataTransferProperties properties, CancellationToken cancellationToken)
32+
=> Task.FromResult(FromTransferProperties(properties, getSource: true));
33+
34+
/// <inheritdoc/>
35+
protected internal override Task<StorageResource> FromDestinationAsync(DataTransferProperties properties, CancellationToken cancellationToken)
36+
=> Task.FromResult(FromTransferProperties(properties, getSource: false));
37+
38+
private StorageResource FromTransferProperties(DataTransferProperties properties, bool getSource)
39+
{
40+
Argument.AssertNotNull(properties, nameof(properties));
41+
42+
string transferId = properties.TransferId;
43+
if (!checkpointer.Jobs.TryGetValue(transferId, out var job))
44+
{
45+
throw new Exception("Job does not exist.");
46+
}
47+
48+
if (getSource)
49+
{
50+
return job.Source;
51+
}
52+
else
53+
{
54+
return job.Destination;
55+
}
56+
}
57+
}
58+
}

0 commit comments

Comments
 (0)