Merge pull request #1253 from tgstation/AddMissingProgress

Fix listing jobs not returning progress
This commit is contained in:
Jordan Brown
2021-05-01 10:43:34 -04:00
committed by GitHub
5 changed files with 25 additions and 5 deletions
@@ -72,7 +72,7 @@ namespace Tgstation.Server.Host.Controllers
.Include(x => x.CancelledBy)
.Where(x => x.Instance.Id == Instance.Id && !x.StoppedAt.HasValue)
.OrderByDescending(x => x.StartedAt))),
null,
AddJobProgressResponseTransformer,
page,
pageSize,
cancellationToken);
@@ -99,7 +99,7 @@ namespace Tgstation.Server.Host.Controllers
.Include(x => x.CancelledBy)
.Where(x => x.Instance.Id == Instance.Id)
.OrderByDescending(x => x.StartedAt))),
null,
AddJobProgressResponseTransformer,
page,
pageSize,
cancellationToken);
@@ -168,5 +168,14 @@ namespace Tgstation.Server.Host.Controllers
api.Progress = jobManager.JobProgress(job);
return Json(api);
}
/// <summary>
/// Supplements <see cref="JobResponse"/> <see cref="PaginatedResponse{TModel}"/>s with their <see cref="JobResponse.Progress"/>.
/// </summary>
/// <param name="jobResponse">The <see cref="JobResponse"/> to augment.</param>
private void AddJobProgressResponseTransformer(JobResponse jobResponse)
{
jobResponse.Progress = jobManager.JobProgress(jobResponse);
}
}
}
@@ -13,9 +13,9 @@ namespace Tgstation.Server.Host.Jobs
/// <summary>
/// Get the <see cref="Api.Models.Response.JobResponse.Progress"/> for a <paramref name="job"/>
/// </summary>
/// <param name="job">The <see cref="Job"/> to get <see cref="Api.Models.Response.JobResponse.Progress"/> for</param>
/// <param name="job">The <see cref="Api.Models.Internal.Job"/> to get <see cref="Api.Models.Response.JobResponse.Progress"/> for</param>
/// <returns>The <see cref="Api.Models.Response.JobResponse.Progress"/> of <paramref name="job"/></returns>
int? JobProgress(Job job);
int? JobProgress(Api.Models.Internal.Job job);
/// <summary>
/// Registers a given <see cref="Job"/> and begins running it
+1 -1
View File
@@ -303,7 +303,7 @@ namespace Tgstation.Server.Host.Jobs
}
/// <inheritdoc />
public int? JobProgress(Job job)
public int? JobProgress(Api.Models.Internal.Job job)
{
if (job == null)
throw new ArgumentNullException(nameof(job));
@@ -69,6 +69,16 @@ namespace Tgstation.Server.Tests.Instance
clone = await repositoryClient.Clone(cloneRequest, cancellationToken).ConfigureAwait(false);
// throwing this small jobs consistency test in here
await Task.Delay(TimeSpan.FromSeconds(20), cancellationToken).ConfigureAwait(false);
var activeJobs = await JobsClient.ListActive(null, cancellationToken);
var allJobs = await JobsClient.List(null, cancellationToken).ConfigureAwait(false);
Assert.IsTrue(activeJobs.Any(x => x.Id == clone.ActiveJob.Id));
Assert.IsTrue(allJobs.Any(x => x.Id == clone.ActiveJob.Id));
Assert.IsTrue(activeJobs.First(x => x.Id == clone.ActiveJob.Id).Progress.HasValue);
Assert.IsTrue(allJobs.First(x => x.Id == clone.ActiveJob.Id).Progress.HasValue);
await WaitForJob(clone.ActiveJob, 9000, false, null, cancellationToken).ConfigureAwait(false);
var readAfterClone = await repositoryClient.Read(cancellationToken);
@@ -111,6 +111,7 @@ namespace Tgstation.Server.Tests
// SPECIFICALLY DELETE THE DEV APPSETTINGS, WE DON'T WANT IT IN THE WAY
File.Delete("appsettings.Development.yml");
File.Delete("appsettings.Development.json");
if (!String.IsNullOrEmpty(gitHubAccessToken))
args.Add(String.Format(CultureInfo.InvariantCulture, "General:GitHubAccessToken={0}", gitHubAccessToken));