private Task <TileMetadata> CanGenerateDxfTiles(string status) { //Set up DataOcean stuff var expectedTopFolderResult = new DataOceanDirectory { Id = Guid.NewGuid(), Name = topLevelFolderName }; var expectedDcFileResult = new DataOceanFile { Id = Guid.NewGuid(), Name = dcFileName, ParentId = expectedTopFolderResult.Id }; var expectedDxfFileResult = new DataOceanFile { Id = Guid.NewGuid(), Name = dxfFileName, ParentId = expectedTopFolderResult.Id }; var subFolderPath = new DataOceanFileUtil(dxfFullName).GeneratedTilesFolder; var parts = subFolderPath.Split(DataOceanUtil.PathSeparator); var subFolderName = parts[parts.Length - 1]; var dataOceanMock = new Mock <IDataOceanClient>(); dataOceanMock.Setup(d => d.GetFileId(dcFullName, null)).ReturnsAsync(expectedDcFileResult.Id); dataOceanMock.Setup(d => d.GetFileId(dxfFullName, null)).ReturnsAsync(expectedDxfFileResult.Id); dataOceanMock.Setup(d => d.MakeFolder(subFolderPath, null)).ReturnsAsync(true); dataOceanMock.Setup(d => d.GetFolderId($"{DataOceanUtil.PathSeparator}{topLevelFolderName}", null)).ReturnsAsync(expectedTopFolderResult.Id); //Set up Pegasus stuff var units = DxfUnitsType.UsSurveyFeet.ToString(); var expectedExecution = NewDxfPegasusExecution(expectedDcFileResult, expectedDxfFileResult, subFolderName, units, status); var expectedExecutionResult = new PegasusExecutionResult { Execution = expectedExecution }; var expectedExecutionAttemptResult = new PegasusExecutionAttemptResult { ExecutionAttempt = new PegasusExecutionAttempt { Id = Guid.NewGuid(), Status = ExecutionStatus.EXECUTING } }; var config = serviceProvider.GetRequiredService <Common.Abstractions.Configuration.IConfigurationStore>(); var pegasusBaseUrl = config.GetValueString("PEGASUS_URL"); var baseRoute = "/api/executions"; var createExecutionUrl = $"{pegasusBaseUrl}{baseRoute}"; var startExecutionUrl = $"{pegasusBaseUrl}{baseRoute}/{expectedExecution.Id}/start"; var executionStatusUrl = $"{pegasusBaseUrl}{baseRoute}/{expectedExecution.Id}"; var gracefulMock = new Mock <IWebRequest>(); gracefulMock .Setup(g => g.ExecuteRequest <PegasusExecutionResult>(createExecutionUrl, It.IsAny <MemoryStream>(), null, HttpMethod.Post, null, 0, false)).ReturnsAsync(expectedExecutionResult); gracefulMock .Setup(g => g.ExecuteRequest <PegasusExecutionAttemptResult>(startExecutionUrl, null, null, HttpMethod.Post, null, 0, false)).ReturnsAsync(expectedExecutionAttemptResult); gracefulMock .Setup(g => g.ExecuteRequest <PegasusExecutionResult>(executionStatusUrl, null, null, HttpMethod.Get, null, 0, false)).ReturnsAsync(expectedExecutionResult); return(ProcessWithSuccess(gracefulMock, dataOceanMock, subFolderPath, true)); }
public async Task CanGenerateGeoTiffTilesFailedToStartExecution() { //Set up DataOcean stuff var expectedTopFolderResult = new DataOceanDirectory { Id = Guid.NewGuid(), Name = topLevelFolderName }; var expectedFileResult = new DataOceanFile { Id = Guid.NewGuid(), Name = geoTiffFileName, ParentId = expectedTopFolderResult.Id }; var subFolderPath = new DataOceanFileUtil(geoTiffFullName).GeneratedTilesFolder; var parts = subFolderPath.Split(DataOceanUtil.PathSeparator); var subFolderName = parts[parts.Length - 1]; var dataOceanMock = new Mock <IDataOceanClient>(); dataOceanMock.Setup(d => d.GetFileId(geoTiffFullName, null)).ReturnsAsync(expectedFileResult.Id); dataOceanMock.Setup(d => d.MakeFolder(subFolderPath, null)).ReturnsAsync(true); dataOceanMock.Setup(d => d.GetFolderId($"{DataOceanUtil.PathSeparator}{topLevelFolderName}", null)).ReturnsAsync(expectedTopFolderResult.Id); //Set up Pegasus stuff var expectedExecution = NewGeoTiffPegasusExecution(expectedFileResult, subFolderName, ExecutionStatus.NOT_READY); var expectedExecutionResult = new PegasusExecutionResult { Execution = expectedExecution }; _ = new PegasusExecutionAttemptResult { ExecutionAttempt = new PegasusExecutionAttempt { Id = Guid.NewGuid(), Status = ExecutionStatus.EXECUTING } }; var config = serviceProvider.GetRequiredService <Common.Abstractions.Configuration.IConfigurationStore>(); var pegasusBaseUrl = config.GetValueString("PEGASUS_URL"); var baseRoute = "/api/executions"; var createExecutionUrl = $"{pegasusBaseUrl}{baseRoute}"; var startExecutionUrl = $"{pegasusBaseUrl}{baseRoute}/{expectedExecution.Id}/start"; var gracefulMock = new Mock <IWebRequest>(); gracefulMock .Setup(g => g.ExecuteRequest <PegasusExecutionResult>(createExecutionUrl, It.IsAny <MemoryStream>(), null, HttpMethod.Post, null, 0, false)).ReturnsAsync(expectedExecutionResult); gracefulMock .Setup(g => g.ExecuteRequest <PegasusExecutionAttemptResult>(startExecutionUrl, null, null, HttpMethod.Post, null, 0, false)).ReturnsAsync((PegasusExecutionAttemptResult)null); await ProcessWithFailure(gracefulMock, dataOceanMock, $"Failed to start execution for {geoTiffFullName}", false); }