Skip to content

Add Word Alignment engine: #1395

Add Word Alignment engine:

Add Word Alignment engine: #1395

GitHub Actions / NUnit Tests failed Dec 12, 2024 in 1s

434 passed, 18 failed and 0 skipped

Tests failed

Report Passed Failed Skipped Time
src/DataAccess/test/SIL.DataAccess.Tests/TestResults/test-results.trx 25✅ 5s
src/Machine/test/Serval.Machine.Shared.Tests/TestResults/test-results.trx 102✅ 23s
src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx 212✅ 18❌ 758s
src/Serval/test/Serval.DataFiles.Tests/TestResults/test-results.trx 11✅ 10s
src/Serval/test/Serval.E2ETests/TestResults/test-results.trx 889ms
src/Serval/test/Serval.Shared.Tests/TestResults/test-results.trx 3✅ 6s
src/Serval/test/Serval.Translation.Tests/TestResults/test-results.trx 50✅ 8s
src/Serval/test/Serval.Webhooks.Tests/TestResults/test-results.trx 5✅ 6s
src/Serval/test/Serval.WordAlignment.Tests/TestResults/test-results.trx 25✅ 6s
src/ServiceToolkit/test/SIL.ServiceToolkit.Tests/TestResults/test-results.trx 1✅ 6s

✅ src/DataAccess/test/SIL.DataAccess.Tests/TestResults/test-results.trx

25 tests were completed in 5s with 25 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
SIL.DataAccess.MemoryRepositoryTests 25✅ 407ms

✅ src/Machine/test/Serval.Machine.Shared.Tests/TestResults/test-results.trx

102 tests were completed in 23s with 102 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.Machine.Shared.Services.ClearMLServiceTests 1✅ 131ms
Serval.Machine.Shared.Services.DistributedReaderWriterLockFactoryTests 3✅ 55ms
Serval.Machine.Shared.Services.DistributedReaderWriterLockTests 15✅ 1s
Serval.Machine.Shared.Services.InMemoryStorageTests 5✅ 9ms
Serval.Machine.Shared.Services.LanguageTagServiceTests 19✅ 5s
Serval.Machine.Shared.Services.LocalStorageTests 5✅ 10ms
Serval.Machine.Shared.Services.MessageOutboxDeliveryServiceTests 4✅ 64ms
Serval.Machine.Shared.Services.MessageOutboxServiceTests 4✅ 14ms
Serval.Machine.Shared.Services.ModelCleanupServiceTests 1✅ 15ms
Serval.Machine.Shared.Services.NmtClearMLBuildJobFactoryTests 2✅ 14ms
Serval.Machine.Shared.Services.NmtEngineServiceTests 4✅ 1s
Serval.Machine.Shared.Services.PreprocessBuildJobTests 22✅ 6s
Serval.Machine.Shared.Services.ServalPlatformOutboxMessageHandlerTests 2✅ 45ms
Serval.Machine.Shared.Services.SmtTransferEngineServiceTests 15✅ 2s

❌ src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx

230 tests were completed in 758s with 212 passed, 18 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.ApiServer.DataFilesTests 23✅ 65s
Serval.ApiServer.StatusTests 4✅ 11s
Serval.ApiServer.TranslationEngineTests 118✅ 1❌ 385s
Serval.ApiServer.WebhooksTests 11✅ 26s
Serval.ApiServer.WordAlignmentEngineTests 56✅ 17❌ 263s

❌ Serval.ApiServer.TranslationEngineTests

✅ AddCorpusToEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ AddCorpusToEngineByIdAsync(["update:translation_engines"],201,"e00000000000000000000001")
✅ AddCorpusToEngineByIdAsync(["update:translation_engines"],404,"e00000000000000000000004")
✅ AddParallelCorpusToEngineById_NotAuthorized
✅ AddParallelCorpusToEngineByIdAsync
✅ CancelCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:translation_engines"],200,"e00000000000000000000001")
✅ CancelCurrentBuildForEngineByIdAsync(["update:translation_engines"],204,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:translation_engines"],404,"e00000000000000000000004",False)
✅ CreateEngineAsync(["create:translation_engines", "read:translation_engines"],201,"Echo")
❌ CreateEngineAsync(["create:translation_engines"],400,"NotARealKindOfMT")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  <System.NullReferenceException: Object reference not set to an instance of an object.
	   at Serval.Translation.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Services/EngineService.cs:line 167
	   at Serval.Translation.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Services/EngineService.cs:line 198
	   at Serval.Translation.Controllers.TranslationEnginesController.CreateAsync(TranslationEngineConfigDto engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Controllers/TranslationEnginesController.cs:line 133
	   at lambda_method995(Closure, Object)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
	   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
	   at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
	   at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
	   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
	   at Serval.Client.TranslationEnginesClient.CreateAsync(TranslationEngineConfig engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 2783
	   at Serval.ApiServer.TranslationEngineTests.<>c__DisplayClass27_0.<<CreateEngineAsync>b__0>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/TranslationEngineTests.cs:line 289
	--- End of stack trace from previous location ---
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
	
✅ CreateEngineAsync(["read:files"],403,"Echo")
✅ DataFileUpdate_Propagated
✅ DeleteCorpusAndFilesAsync
✅ DeleteCorpusButNotFilesAsync
✅ DeleteCorpusByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ DeleteCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ DeleteCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000001")
✅ DeleteCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ DeleteEngineByIdAsync(["delete:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ DeleteEngineByIdAsync(["delete:translation_engines"],404,"e00000000000000000000004")
✅ DeleteEngineByIdAsync(["read:translation_engines"],403,"e00000000000000000000001")
✅ DeleteParallelCorpusByIdForEngineById_NoSuchCorpus
✅ DeleteParallelCorpusByIdForEngineById_NoSuchEngine
✅ DeleteParallelCorpusByIdForEngineById_NotAuthorized
✅ DeleteParallelCorpusByIdForEngineByIdAsync
✅ GetAllAsync(["read:files"],403)
✅ GetAllAsync(["read:translation_engines"],200)
✅ GetAllBuildsForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:translation_engines"],200,"be0000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004",False)
✅ GetAllCorporaForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetAllCorporaForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ GetAllCorporaForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ GetAllParallelCorporaForEngineById_NoSuchEngine
✅ GetAllParallelCorporaForEngineById_NotAuthorized
✅ GetAllParallelCorporaForEngineByIdAsync
✅ GetAllPretranslationsAsync_CorpusDoesNotExist
✅ GetAllPretranslationsAsync_EngineDoesNotExist
✅ GetAllPretranslationsAsync_EngineNotBuilt
✅ GetAllPretranslationsAsync_Exists
✅ GetAllPretranslationsAsync_TextIdDoesNotExist
✅ GetAllPretranslationsAsync_TextIdExists
✅ GetBuildByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],200,"be0000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],404,"be0000000000000000000001",False)
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004",False)
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],408,"be0000000000000000000001",True)
✅ GetByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetByIdAsync(["read:translation_engines"],200,"e00000000000000000000001")
✅ GetByIdAsync(["read:translation_engines"],403,"e00000000000000000000003")
✅ GetByIdAsync(["read:translation_engines"],404,"e00000000000000000000004")
✅ GetByIdAsync(["read:translation_engines"],404,"phony_id")
✅ GetCorpusByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],200,"e00000000000000000000001",True)
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000001",True)
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000001")
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ GetCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],200,"e00000000000000000000001")
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],204,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],408,"e00000000000000000000001")
✅ GetDownloadableUrl(["read:files"],403,"e00000000000000000000001")
✅ GetDownloadableUrl(["read:translation_engines"],200,"e00000000000000000000001")
✅ GetDownloadableUrl(["read:translation_engines"],404,"e00000000000000000000004")
✅ GetLanguageInfo_Error
✅ GetLanguageInfoAsync
✅ GetParallelCorpusByIdForEngineById_NoCorpora
✅ GetParallelCorpusByIdForEngineById_NoSuchCorpus
✅ GetParallelCorpusByIdForEngineById_NoSuchEngine
✅ GetParallelCorpusByIdForEngineById_NotAuthorized
✅ GetParallelCorpusByIdForEngineByIdAsync
✅ GetPretranslatedUsfmAsync_BookDoesNotExist
✅ GetPretranslatedUsfmAsync_BookExists
✅ GetPretranslationsByTextId
✅ GetPretranslationsByTextId_EngineDoesNotExist
✅ GetQueueAsync_NotAuthorized
✅ GetQueueAsync("Echo")
✅ GetQueueAsync("Nmt")
✅ GetWordGraphForSegmentByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetWordGraphForSegmentByIdAsync(["read:translation_engines", "update:translation_engines"],200,"e00000000000000000000001")
✅ GetWordGraphForSegmentByIdAsync(["read:translation_engines", "update:translation_engines"],404,"e00000000000000000000004")
✅ GetWordGraphForSegmentByIdAsync(["read:translation_engines", "update:translation_engines"],409,"e00000000000000000000001")
✅ StartBuild_ParallelCorpus
✅ StartBuildAsync_Corpus_NoFilter
✅ StartBuildAsync_ParallelCorpus
✅ StartBuildAsync_ParallelCorpus_NoFilter
✅ StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources
✅ StartBuildAsync_ParallelCorpus_PretranslateNoCorpusSpecified
✅ StartBuildAsync_ParallelCorpus_PretranslateParallelAndNormalCorpus
✅ StartBuildAsync_ParallelCorpus_TrainOnNoCorpusSpecified
✅ StartBuildAsync_ParallelCorpus_TrainOnParallelAndNormalCorpus
✅ StartBuildForEngineAsync_UnparsableOptions()
✅ StartBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],201,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],400,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ TrainEngineByIdOnSegmentPairAsync(["read:files"],403,"e00000000000000000000001")
✅ TrainEngineByIdOnSegmentPairAsync(["update:translation_engines"],200,"e00000000000000000000001")
✅ TrainEngineByIdOnSegmentPairAsync(["update:translation_engines"],404,"e00000000000000000000004")
✅ TrainEngineByIdOnSegmentPairAsync(["update:translation_engines"],409,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],200,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],409,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004")
✅ TranslateSegmentWithEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ TranslateSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],200,"e00000000000000000000001")
✅ TranslateSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],404,"e00000000000000000000004")
✅ TranslateSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],409,"e00000000000000000000001")
✅ TryToQueueMultipleBuildsPerSingleUser
✅ UpdateCorpusByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ UpdateCorpusByIdForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ UpdateCorpusByIdForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000001")
✅ UpdateCorpusByIdForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ UpdateParallelCorpusByIdForEngineById_NoSuchCorpus
✅ UpdateParallelCorpusByIdForEngineById_NoSuchEngine
✅ UpdateParallelCorpusByIdForEngineById_NotAuthorized
✅ UpdateParallelCorpusByIdForEngineByIdAsync

❌ Serval.ApiServer.WordAlignmentEngineTests

✅ AddParallelCorpusToEngineById_NotAuthorized
✅ AddParallelCorpusToEngineByIdAsync
✅ CancelCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:word_alignment_engines"],200,"e00000000000000000000001")
✅ CancelCurrentBuildForEngineByIdAsync(["update:word_alignment_engines"],204,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:word_alignment_engines"],404,"e00000000000000000000004",False)
❌ CreateEngineAsync(["create:word_alignment_engines", "read:word_alignment_engines"],201,"EchoWordAlignment")
	Serval.Client.ServalApiException : The engine does not exist.
	
	Status: 404
	Response: 
	{"type":"https://tools.ietf.org/html/rfc9110#section-15.5.5","title":"Not Found","status":404,"traceId":"00-359dbe8867d78d7e3c170bb2dd48a942-ad18f8e30db825e7-01"}
❌ CreateEngineAsync(["create:word_alignment_engines"],400,"NotARealKindOfMT")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  <System.NullReferenceException: Object reference not set to an instance of an object.
	   at Serval.WordAlignment.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Services/EngineService.cs:line 94
	   at Serval.WordAlignment.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Services/EngineService.cs:line 111
	   at Serval.WordAlignment.Controllers.WordAlignmentEnginesController.CreateAsync(WordAlignmentEngineConfigDto engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Controllers/WordAlignmentEnginesController.cs:line 120
	   at lambda_method4099(Closure, Object)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
	   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
	   at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
	   at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
	   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
	   at Serval.Client.WordAlignmentEnginesClient.CreateAsync(WordAlignmentEngineConfig engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 7430
	   at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass26_0.<<CreateEngineAsync>b__0>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 264
	--- End of stack trace from previous location ---
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
	
✅ CreateEngineAsync(["read:files"],403,"EchoWordAlignment")
✅ DataFileUpdate_Propagated
❌ DeleteEngineByIdAsync(["delete:word_alignment_engines", "read:word_alignment_engines"],200,"e00000000000000000000001")
	  Assert.That(results, Has.Count.EqualTo(3))
	  Expected: property Count equal to 3
	  But was:  2
	
✅ DeleteEngineByIdAsync(["delete:word_alignment_engines"],404,"e00000000000000000000004")
✅ DeleteEngineByIdAsync(["read:word_alignment_engines"],403,"e00000000000000000000001")
✅ DeleteParallelCorpusByIdForEngineById_NoSuchCorpus
✅ DeleteParallelCorpusByIdForEngineById_NoSuchEngine
✅ DeleteParallelCorpusByIdForEngineById_NotAuthorized
✅ DeleteParallelCorpusByIdForEngineByIdAsync
✅ GetAllAsync(["read:files"],403)
❌ GetAllAsync(["read:word_alignment_engines"],200)
	  Assert.That(results, Has.Count.EqualTo(4))
	  Expected: property Count equal to 4
	  But was:  3
	
✅ GetAllBuildsForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:word_alignment_engines"],200,"be0000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ GetAllParallelCorporaForEngineById_NoSuchEngine
✅ GetAllParallelCorporaForEngineById_NotAuthorized
✅ GetAllParallelCorporaForEngineByIdAsync
✅ GetAllWordAlignmentsAsync_CorpusDoesNotExist
✅ GetAllWordAlignmentsAsync_EngineDoesNotExist
✅ GetAllWordAlignmentsAsync_EngineNotBuilt
✅ GetAllWordAlignmentsAsync_Exists
✅ GetAllWordAlignmentsAsync_TextIdDoesNotExist
✅ GetAllWordAlignmentsAsync_TextIdExists
✅ GetBuildByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],200,"be0000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],404,"be0000000000000000000001",False)
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],408,"be0000000000000000000001",True)
✅ GetByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetByIdAsync(["read:word_alignment_engines"],200,"e00000000000000000000001")
✅ GetByIdAsync(["read:word_alignment_engines"],403,"e00000000000000000000003")
✅ GetByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004")
✅ GetByIdAsync(["read:word_alignment_engines"],404,"phony_id")
✅ GetCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],200,"e00000000000000000000001")
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],204,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],408,"e00000000000000000000001")
❌ GetParallelCorpusByIdForEngineById_NoCorpora
	  Assert.That(ex?.StatusCode, Is.EqualTo(404))
	  Expected: 404
	  But was:  403
	
❌ GetParallelCorpusByIdForEngineById_NoSuchCorpus
	  Assert.That(ex?.StatusCode, Is.EqualTo(404))
	  Expected: 404
	  But was:  403
	
❌ GetParallelCorpusByIdForEngineById_NoSuchEngine
	  Assert.That(ex?.StatusCode, Is.EqualTo(404))
	  Expected: 404
	  But was:  403
	
✅ GetParallelCorpusByIdForEngineById_NotAuthorized
❌ GetParallelCorpusByIdForEngineByIdAsync
	Serval.Client.ServalApiException : The authenticated client cannot perform the operation or does not own the engine.
	
	Status: 403
	Response: 
	
✅ GetWordAlignmentsByTextId
✅ GetWordAlignmentsByTextId_EngineDoesNotExist
✅ StartBuild_ParallelCorpus
✅ StartBuildAsync_ParallelCorpus
❌ StartBuildAsync_ParallelCorpus_NoFilter
	  Assert.That(build.TrainOn[0].SourceFilters, Is.Null)
	  Expected: null
	  But was:  < <Serval.Client.ParallelCorpusFilter2> >
	
❌ StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  null
	
✅ StartBuildAsync_ParallelCorpus_PretranslateNoCorpusSpecified
✅ StartBuildAsync_ParallelCorpus_TrainOnNoCorpusSpecified
❌ StartBuildForEngineAsync_UnparsableOptions()
	  Assert.That(() => client.StartBuildAsync(ECHO_ENGINE1_ID, tbc), Throws.TypeOf<ServalApiException>().With.Message.Contains("Unable to parse field 'options'"))
	  Expected: <Serval.Client.ServalApiException> and property Message containing "Unable to parse field 'options'"
	  But was:  <Newtonsoft.Json.JsonSerializationException: Cannot write a null value for property 'corpusId'. Property requires a value. Path 'trainOn[0].sourceFilters[0]'.
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
	   at Serval.Client.WordAlignmentEnginesClient.StartBuildAsync(String id, WordAlignmentBuildConfig buildConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 8674
	   at NUnit.Framework.Internal.TaskAwaitAdapter.GenericAdapter`1.GetResult()
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Internal.ExceptionHelper.RecordException(Delegate parameterlessDelegate, String parameterName)>
	
❌ StartBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  <Newtonsoft.Json.JsonSerializationException: Cannot write a null value for property 'corpusId'. Property requires a value. Path 'trainOn[0].sourceFilters[0]'.
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
	   at Serval.Client.WordAlignmentEnginesClient.StartBuildAsync(String id, WordAlignmentBuildConfig buildConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 8674
	   at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass56_0.<<StartBuildForEngineByIdAsync>b__1>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1019
	--- End of stack trace from previous location ---
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
	
❌ StartBuildForEngineByIdAsync(["update:word_alignment_engines", "create:word_alignment_engines", "read:word_alignment_engines"],201,"e00000000000000000000001")
	Newtonsoft.Json.JsonSerializationException : Cannot write a null value for property 'corpusId'. Property requires a value. Path 'trainOn[0].sourceFilters[0]'.
❌ StartBuildForEngineByIdAsync(["update:word_alignment_engines", "create:word_alignment_engines", "read:word_alignment_engines"],400,"e00000000000000000000001")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  <Newtonsoft.Json.JsonSerializationException: Cannot write a null value for property 'corpusId'. Property requires a value. Path 'trainOn[0].sourceFilters[0]'.
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
	   at Serval.Client.WordAlignmentEnginesClient.StartBuildAsync(String id, WordAlignmentBuildConfig buildConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 8674
	   at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass56_0.<<StartBuildForEngineByIdAsync>b__1>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1019
	--- End of stack trace from previous location ---
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
	
❌ StartBuildForEngineByIdAsync(["update:word_alignment_engines", "create:word_alignment_engines", "read:word_alignment_engines"],404,"e00000000000000000000004")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  <Newtonsoft.Json.JsonSerializationException: Cannot write a null value for property 'corpusId'. Property requires a value. Path 'trainOn[0].sourceFilters[0]'.
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
	   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
	   at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
	   at Serval.Client.WordAlignmentEnginesClient.StartBuildAsync(String id, WordAlignmentBuildConfig buildConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 8674
	   at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass56_0.<<StartBuildForEngineByIdAsync>b__1>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1019
	--- End of stack trace from previous location ---
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
	
✅ TranslateSegmentWithEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],200,"e00000000000000000000001")
❌ TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],404,"e00000000000000000000004")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  <NSubstitute.Exceptions.RedundantArgumentMatcherException: Some argument specifications (e.g. Arg.Is, Arg.Any) were left over after the last call.
	
	This is often caused by using an argument spec with a call to a member NSubstitute does not handle (such as a non-virtual member or a call to an instance which is not a substitute), or for a purpose other than specifying a call (such as using an arg spec as a return value). For example:
	
	    var sub = Substitute.For<SomeClass>();
	    var realType = new MyRealType(sub);
	    // INCORRECT, arg spec used on realType, not a substitute:
	    realType.SomeMethod(Arg.Any<int>()).Returns(2);
	    // INCORRECT, arg spec used as a return value, not to specify a call:
	    sub.VirtualMethod(2).Returns(Arg.Any<int>());
	    // INCORRECT, arg spec used with a non-virtual method:
	    sub.NonVirtualMethod(Arg.Any<int>()).Returns(2);
	    // CORRECT, arg spec used to specify virtual call on a substitute:
	    sub.VirtualMethod(Arg.Any<int>()).Returns(2);
	
	To fix this make sure you only use argument specifications with calls to substitutes. If your substitute is a class, make sure the member is virtual.
	
	Another possible cause is that the argument spec type does not match the actual argument type, but code compiles due to an implicit cast. For example, Arg.Any<int>() was used, but Arg.Any<double>() was required.
	
	NOTE: the cause of this exception can be in a previously executed test. Use the diagnostics below to see the types of any redundant arg specs, then work out where they are being created.
	
	Diagnostic information:
	
	Remaining (non-bound) argument specifications:
	    any CancellationToken
	
	All argument specifications:
	    any CancellationToken
	
	   at NSubstitute.Core.Arguments.ArgumentSpecificationsFactory.Create(IList`1 argumentSpecs, Object[] arguments, IParameterInfo[] parameterInfos, MethodInfo methodInfo, MatchArgs matchArgs)
	   at NSubstitute.Routing.Handlers.RecordCallSpecificationHandler.Handle(ICall call)
	   at NSubstitute.Proxies.CastleDynamicProxy.CastleForwardingInterceptor.Intercept(IInvocation invocation)
	   at Castle.DynamicProxy.AbstractInvocation.Proceed()
	   at Castle.DynamicProxy.AbstractInvocation.Proceed()
	   at Castle.Proxies.ObjectProxy.OpenZipFile(String path)
	   at Serval.ApiServer.WordAlignmentEngineTests.TestEnvironment.CreateFileSystem(IServiceProvider sp) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1655
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass2_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
	   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
	   at lambda_method5493(Closure, IServiceProvider, Object[])
	   at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.<CreateControllerFactory>g__CreateController|0(ControllerContext controllerContext)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
	   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
	   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
	   at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
	   at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
	   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
	--- End of stack trace from previous location ---
	   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
	   at Serval.Client.WordAlignmentEnginesClient.GetWordAlignmentAsync(String id, WordAlignmentRequest wordAlignmentRequest, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 7742
	   at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass28_0.<<TranslateSegmentWithEngineByIdAsync>b__1>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 382
	--- End of stack trace from previous location ---
	   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
	   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
	
❌ TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],409,"e00000000000000000000001")
	  Assert.That(caughtException, expression)
	  Expected: <Serval.Client.ServalApiException>
	  But was:  null
	
✅ TryToQueueMultipleBuildsPerSingleUser
✅ UpdateParallelCorpusByIdForEngineById_NoSuchCorpus
✅ UpdateParallelCorpusByIdForEngineById_NoSuchEngine
✅ UpdateParallelCorpusByIdForEngineById_NotAuthorized
✅ UpdateParallelCorpusByIdForEngineByIdAsync

✅ src/Serval/test/Serval.DataFiles.Tests/TestResults/test-results.trx

11 tests were completed in 10s with 11 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.DataFiles.Services.CorpusServiceTests 2✅ 196ms
Serval.DataFiles.Services.DataFileServiceTests 8✅ 82ms
Serval.DataFiles.Services.DeletedFileCleanerTests 1✅ 2s

✅ src/Serval/test/Serval.E2ETests/TestResults/test-results.trx

No tests found

✅ src/Serval/test/Serval.Shared.Tests/TestResults/test-results.trx

3 tests were completed in 6s with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.Shared.Services.ScriptureDataFileServiceTests 2✅ 218ms
Serval.Shared.Utils.ObjectToInferredTypesConverterTest 1✅ 39ms

✅ src/Serval/test/Serval.Translation.Tests/TestResults/test-results.trx

50 tests were completed in 8s with 50 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.Translation.Services.BuildCleanupServiceTests 1✅ 125ms
Serval.Translation.Services.BuildServiceTests 4✅ 40ms
Serval.Translation.Services.EngineCleanupServiceTests 1✅ 21ms
Serval.Translation.Services.EngineServiceTests 30✅ 525ms
Serval.Translation.Services.PlatformServiceTests 3✅ 96ms
Serval.Translation.Services.PretranslationServiceTests 11✅ 275ms

✅ src/Serval/test/Serval.Webhooks.Tests/TestResults/test-results.trx

5 tests were completed in 6s with 5 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.Webhooks.Services.WebhookJobTests 5✅ 154ms

✅ src/Serval/test/Serval.WordAlignment.Tests/TestResults/test-results.trx

25 tests were completed in 6s with 25 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serval.WordAlignment.Services.BuildServiceTests 4✅ 87ms
Serval.WordAlignment.Services.EngineServiceTests 18✅ 515ms
Serval.WordAlignment.Services.PlatformServiceTests 3✅ 86ms

✅ src/ServiceToolkit/test/SIL.ServiceToolkit.Tests/TestResults/test-results.trx

1 tests were completed in 6s with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
SIL.ServiceToolkit.Services.ParallelCorpusPreprocessingServiceTests 1✅ 127ms

Annotations

Check failure on line 287 in src/Serval/test/Serval.ApiServer.IntegrationTests/TranslationEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.TranslationEngineTests ► CreateEngineAsync(["create:translation_engines"],400,"NotARealKindOfMT")

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(caughtException, expression)
    Expected: <Serval.Client.ServalApiException>
    But was:  <System.NullReferenceException: Object reference not set to an instance of an object.
     at Serval.Translation.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Services/EngineService.cs:line 167
     at Serval.Translation.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Services/EngineService.cs:line 198
     at Serval.Translation.Controllers.TranslationEnginesController.CreateAsync(TranslationEngineConfigDto engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Controllers/TranslationEnginesController.cs:line 133
     at lambda_method995(Closure, Object)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
     at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
     at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
  --- End of stack trace from previous location ---
     at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
     at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
     at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
  --- End of stack trace from previous location ---
     at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
     at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
     at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
     at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
     at Serval.Client.TranslationEnginesClient.CreateAsync(TranslationEngineConfig engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 2783
     at Serval.ApiServer.TranslationEngineTests.<>c__DisplayClass27_0.<<CreateEngineAsync>b__0>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/TranslationEngineTests.cs:line 289
  --- End of stack trace from previous location ---
     at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
     at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
  
Raw output
  Assert.That(caughtException, expression)
  Expected: <Serval.Client.ServalApiException>
  But was:  <System.NullReferenceException: Object reference not set to an instance of an object.
   at Serval.Translation.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Services/EngineService.cs:line 167
   at Serval.Translation.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Services/EngineService.cs:line 198
   at Serval.Translation.Controllers.TranslationEnginesController.CreateAsync(TranslationEngineConfigDto engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Translation/Controllers/TranslationEnginesController.cs:line 133
   at lambda_method995(Closure, Object)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Serval.Client.TranslationEnginesClient.CreateAsync(TranslationEngineConfig engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 2783
   at Serval.ApiServer.TranslationEngineTests.<>c__DisplayClass27_0.<<CreateEngineAsync>b__0>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/TranslationEngineTests.cs:line 289
--- End of stack trace from previous location ---
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>

   at Serval.ApiServer.TranslationEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/TranslationEngineTests.cs:line 287
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.RunTestMethod(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.TranslationEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/TranslationEngineTests.cs:line 287
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Serval.ApiServer.TranslationEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType)
   at InvokeStub_TranslationEngineTests.CreateEngineAsync(Object, Span`1)

Check failure on line 7574 in src/Serval/src/Serval.Client/Client.g.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► CreateEngineAsync(["create:word_alignment_engines", "read:word_alignment_engines"],201,"EchoWordAlignment")

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
  Serval.Client.ServalApiException : The engine does not exist.
  
  Status: 404
  Response: 
  {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.5","title":"Not Found","status":404,"traceId":"00-359dbe8867d78d7e3c170bb2dd48a942-ad18f8e30db825e7-01"}
Raw output
Serval.Client.ServalApiException : The engine does not exist.

Status: 404
Response: 
{"type":"https://tools.ietf.org/html/rfc9110#section-15.5.5","title":"Not Found","status":404,"traceId":"00-359dbe8867d78d7e3c170bb2dd48a942-ad18f8e30db825e7-01"}
   at Serval.Client.WordAlignmentEnginesClient.GetAsync(String id, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 7574
   at Serval.ApiServer.WordAlignmentEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 256
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

Check failure on line 262 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► CreateEngineAsync(["create:word_alignment_engines"],400,"NotARealKindOfMT")

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(caughtException, expression)
    Expected: <Serval.Client.ServalApiException>
    But was:  <System.NullReferenceException: Object reference not set to an instance of an object.
     at Serval.WordAlignment.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Services/EngineService.cs:line 94
     at Serval.WordAlignment.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Services/EngineService.cs:line 111
     at Serval.WordAlignment.Controllers.WordAlignmentEnginesController.CreateAsync(WordAlignmentEngineConfigDto engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Controllers/WordAlignmentEnginesController.cs:line 120
     at lambda_method4099(Closure, Object)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
     at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
     at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
     at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
  --- End of stack trace from previous location ---
     at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
     at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
     at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
  --- End of stack trace from previous location ---
     at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
     at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
     at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
     at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
     at Serval.Client.WordAlignmentEnginesClient.CreateAsync(WordAlignmentEngineConfig engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 7430
     at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass26_0.<<CreateEngineAsync>b__0>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 264
  --- End of stack trace from previous location ---
     at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
     at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>
  
Raw output
  Assert.That(caughtException, expression)
  Expected: <Serval.Client.ServalApiException>
  But was:  <System.NullReferenceException: Object reference not set to an instance of an object.
   at Serval.WordAlignment.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Services/EngineService.cs:line 94
   at Serval.WordAlignment.Services.EngineService.CreateAsync(Engine engine, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Services/EngineService.cs:line 111
   at Serval.WordAlignment.Controllers.WordAlignmentEnginesController.CreateAsync(WordAlignmentEngineConfigDto engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.WordAlignment/Controllers/WordAlignmentEnginesController.cs:line 120
   at lambda_method4099(Closure, Object)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Serval.Client.WordAlignmentEnginesClient.CreateAsync(WordAlignmentEngineConfig engineConfig, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 7430
   at Serval.ApiServer.WordAlignmentEngineTests.<>c__DisplayClass26_0.<<CreateEngineAsync>b__0>d.MoveNext() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 264
--- End of stack trace from previous location ---
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Assert.ThrowsAsync(IResolveConstraint expression, AsyncTestDelegate code, String message, Object[] args)>

   at Serval.ApiServer.WordAlignmentEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 262
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.WordAlignmentEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 262
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Serval.ApiServer.WordAlignmentEngineTests.CreateEngineAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineType)
   at InvokeStub_WordAlignmentEngineTests.CreateEngineAsync(Object, Span`1)

Check failure on line 312 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► DeleteEngineByIdAsync(["delete:word_alignment_engines", "read:word_alignment_engines"],200,"e00000000000000000000001")

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(results, Has.Count.EqualTo(3))
    Expected: property Count equal to 3
    But was:  2
  
Raw output
  Assert.That(results, Has.Count.EqualTo(3))
  Expected: property Count equal to 3
  But was:  2

   at Serval.ApiServer.WordAlignmentEngineTests.DeleteEngineByIdAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineId) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 312
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.WordAlignmentEngineTests.DeleteEngineByIdAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineId) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 312

Check failure on line 191 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► GetAllAsync(["read:word_alignment_engines"],200)

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(results, Has.Count.EqualTo(4))
    Expected: property Count equal to 4
    But was:  3
  
Raw output
  Assert.That(results, Has.Count.EqualTo(4))
  Expected: property Count equal to 4
  But was:  3

   at Serval.ApiServer.WordAlignmentEngineTests.GetAllAsync(IEnumerable`1 scope, Int32 expectedStatusCode) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 191
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.WordAlignmentEngineTests.GetAllAsync(IEnumerable`1 scope, Int32 expectedStatusCode) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 191

Check failure on line 605 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► GetParallelCorpusByIdForEngineById_NoCorpora

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(ex?.StatusCode, Is.EqualTo(404))
    Expected: 404
    But was:  403
  
Raw output
  Assert.That(ex?.StatusCode, Is.EqualTo(404))
  Expected: 404
  But was:  403

   at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineById_NoCorpora() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 605

1)    at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineById_NoCorpora() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 605

Check failure on line 639 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► GetParallelCorpusByIdForEngineById_NoSuchCorpus

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(ex?.StatusCode, Is.EqualTo(404))
    Expected: 404
    But was:  403
  
Raw output
  Assert.That(ex?.StatusCode, Is.EqualTo(404))
  Expected: 404
  But was:  403

   at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineById_NoSuchCorpus() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 639
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineById_NoSuchCorpus() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 639

Check failure on line 620 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► GetParallelCorpusByIdForEngineById_NoSuchEngine

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(ex?.StatusCode, Is.EqualTo(404))
    Expected: 404
    But was:  403
  
Raw output
  Assert.That(ex?.StatusCode, Is.EqualTo(404))
  Expected: 404
  But was:  403

   at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineById_NoSuchEngine() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 620

1)    at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineById_NoSuchEngine() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 620

Check failure on line 8257 in src/Serval/src/Serval.Client/Client.g.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► GetParallelCorpusByIdForEngineByIdAsync

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
  Serval.Client.ServalApiException : The authenticated client cannot perform the operation or does not own the engine.
  
  Status: 403
  Response: 
  
Raw output
Serval.Client.ServalApiException : The authenticated client cannot perform the operation or does not own the engine.

Status: 403
Response: 

   at Serval.Client.WordAlignmentEnginesClient.GetParallelCorpusAsync(String id, String parallelCorpusId, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 8257
   at Serval.ApiServer.WordAlignmentEngineTests.GetParallelCorpusByIdForEngineByIdAsync() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 585
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

Check failure on line 1285 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► StartBuildAsync_ParallelCorpus_NoFilter

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(build.TrainOn[0].SourceFilters, Is.Null)
    Expected: null
    But was:  < <Serval.Client.ParallelCorpusFilter2> >
  
Raw output
  Assert.That(build.TrainOn[0].SourceFilters, Is.Null)
  Expected: null
  But was:  < <Serval.Client.ParallelCorpusFilter2> >

   at Serval.ApiServer.WordAlignmentEngineTests.StartBuildAsync_ParallelCorpus_NoFilter() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1285
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.WordAlignmentEngineTests.StartBuildAsync_ParallelCorpus_NoFilter() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1285

Check failure on line 1334 in src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs

See this annotation in the file changed.

@github-actions github-actions / NUnit Tests

Serval.ApiServer.WordAlignmentEngineTests ► StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources

Failed test found in:
  src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
    Assert.That(caughtException, expression)
    Expected: <Serval.Client.ServalApiException>
    But was:  null
  
Raw output
  Assert.That(caughtException, expression)
  Expected: <Serval.Client.ServalApiException>
  But was:  null

   at Serval.ApiServer.WordAlignmentEngineTests.StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1334
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Serval.ApiServer.WordAlignmentEngineTests.StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources() in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1334