Skip to content

Commit f257c6b

Browse files
author
Sharon Shabtai
authored
Merge pull request #159 from shabtaisharon/ESCP-3270
ESCP-3270: Add support for Restore fail-fast
2 parents a754bde + 06e4fbf commit f257c6b

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

SpectraLogic.SpectraRioBrokerClient.Integration.Test/SpectraRioBrokerClientIntegrationTests.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,6 +1584,70 @@ public void UpdateRestoreJobPriority()
15841584
}
15851585
}
15861586

1587+
[Test]
1588+
public void RestoreWithFailFastFalse()
1589+
{
1590+
var fileName = "RestoreWithFailFastFalse" + Guid.NewGuid();
1591+
try
1592+
{
1593+
var archiveRequest = new ArchiveRequest(SpectraRioBrokerClientFixture.BrokerName, new List<ArchiveFile>
1594+
{
1595+
new ArchiveFile(fileName, fileName.ToAtoZUri(), 14,
1596+
new Dictionary<string, string> { { "test", "RestoreWithFailFastFalse" } }, false)
1597+
}, jobName: "RestoreWithFailFastFalse");
1598+
1599+
var archiveJob = SpectraRioBrokerClientFixture.SpectraRioBrokerClient.Archive(archiveRequest);
1600+
1601+
var pollingAttempts = 0;
1602+
do
1603+
{
1604+
archiveJob = SpectraRioBrokerClientFixture.SpectraRioBrokerClient.GetJob(
1605+
new GetJobRequest(archiveJob.JobId));
1606+
_log.Debug(archiveJob.Status);
1607+
Thread.Sleep(TimeSpan.FromSeconds(PollingInterval));
1608+
pollingAttempts++;
1609+
} while (archiveJob.Status.Status == JobStatusEnum.ACTIVE && pollingAttempts < MaxPollingAttempts);
1610+
1611+
Assert.Less(pollingAttempts, MaxPollingAttempts);
1612+
Assert.AreEqual(JobStatusEnum.COMPLETED, archiveJob.Status.Status);
1613+
1614+
var restoreRequest = new RestoreRequest(SpectraRioBrokerClientFixture.BrokerName, new List<RestoreFile>
1615+
{
1616+
new RestoreFile("not_found.txt", "1".ToDevNullUri()),
1617+
new RestoreFile(fileName, "2".ToDevNullUri())
1618+
}, failFast: false);
1619+
1620+
var restoreJob = SpectraRioBrokerClientFixture.SpectraRioBrokerClient.Restore(restoreRequest);
1621+
1622+
pollingAttempts = 0;
1623+
do
1624+
{
1625+
restoreJob = SpectraRioBrokerClientFixture.SpectraRioBrokerClient.GetJob(
1626+
new GetJobRequest(restoreJob.JobId));
1627+
_log.Debug(restoreJob.Status);
1628+
Thread.Sleep(TimeSpan.FromSeconds(PollingInterval));
1629+
pollingAttempts++;
1630+
} while (restoreJob.Status.Status == JobStatusEnum.ACTIVE && pollingAttempts < MaxPollingAttempts);
1631+
1632+
Assert.Less(pollingAttempts, MaxPollingAttempts);
1633+
Assert.AreEqual(JobStatusEnum.ERROR, restoreJob.Status.Status);
1634+
1635+
var job = SpectraRioBrokerClientFixture.SpectraRioBrokerClient.GetJob(
1636+
new GetJobRequest(restoreJob.JobId));
1637+
1638+
Assert.AreEqual(JobStatusEnum.ERROR, job.Status.Status);
1639+
Assert.AreEqual("Restore job failed (1 of 2 did not complete).", job.Status.Message);
1640+
Assert.AreEqual(1, job.FilesTransferred);
1641+
Assert.AreEqual(1, job.Progress);
1642+
}
1643+
finally
1644+
{
1645+
var deleteF1Request = new DeleteFileRequest(SpectraRioBrokerClientFixture.BrokerName, fileName);
1646+
SpectraRioBrokerClientFixture.SpectraRioBrokerClient.DeleteFile(deleteF1Request);
1647+
}
1648+
}
1649+
1650+
15871651
#endregion Methods
15881652
}
15891653
}

SpectraLogic.SpectraRioBrokerClient/Calls/Broker/RestoreRequest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,10 @@ public class RestoreRequest : RestRequest
7474
/// </param>
7575
/// <param name="jobName">Name of the job. Default = null.</param>
7676
/// <param name="jobPriority">Sets the job priority. Null if not specified.</param>
77+
/// <param name="failFast">If enabled, when a validation error occurs the job fails immediately. If disabled, the job continues even though a validation error occurred. Default = true.</param>
7778
/// <exception cref="ArgumentNullException"></exception>
7879
public RestoreRequest(string brokerName, IEnumerable<RestoreFile> files, bool ignoreDuplicates = false,
79-
string jobName = null, JobPriority? jobPriority = null)
80+
string jobName = null, JobPriority? jobPriority = null, bool failFast = true)
8081
{
8182
Contract.Requires<ArgumentNullException>(brokerName != null, "brokerName");
8283
Contract.Requires<ArgumentNullException>(files != null, "files");
@@ -89,6 +90,7 @@ public RestoreRequest(string brokerName, IEnumerable<RestoreFile> files, bool ig
8990
{
9091
AddQueryParam("priority", jobPriority.ToString().ToUpper());
9192
}
93+
AddQueryParam("fail-fast", failFast.ToString());
9294
}
9395

9496
#endregion Constructors

0 commit comments

Comments
 (0)