public async Task CompactionReportStationOffsetExecutor_TRex_NoResult() { var projectUid = Guid.NewGuid(); var alignmentDesignUid = Guid.NewGuid(); var userPreferences = new UserPreferenceData { Language = "en-US" }; var request = CompactionReportStationOffsetRequest.CreateRequest( 0, projectUid, null, 0, null, false, true, true, true, true, false, null, new DesignDescriptor(-1, FileDescriptor.CreateFileDescriptor(string.Empty, string.Empty, projectUid.ToString(), "theFilename.svl"), -1, alignmentDesignUid), 0, 0, 0, null, userPreferences, "New Zealand Standard Time"); var mockConfigStore = new Mock <IConfigurationStore>(); #if RAPTOR mockConfigStore.Setup(x => x.GetValueBool("ENABLE_TREX_GATEWAY_STATIONOFFSET")).Returns(true); #endif var exception = new ServiceException(HttpStatusCode.InternalServerError, new ContractExecutionResult(ContractExecutionStatesEnum.InternalProcessingError, $"StationOffset report failed somehow. ProjectUid: { projectUid }")); var tRexProxy = new Mock <ITRexCompactionDataProxy>(); tRexProxy.Setup(x => x.SendDataPostRequestWithStreamResponse(It.IsAny <CompactionReportStationOffsetTRexRequest>(), It.IsAny <string>(), It.IsAny <IHeaderDictionary>())).Throws(exception); var executor = RequestExecutorContainerFactory .Build <CompactionReportStationOffsetExecutor>(_logger, configStore: mockConfigStore.Object, trexCompactionDataProxy: tRexProxy.Object); var result = await Assert.ThrowsExceptionAsync <ServiceException>(async() => await executor.ProcessAsync(request)); Assert.AreEqual(HttpStatusCode.InternalServerError, result.Code); Assert.AreEqual(ContractExecutionStatesEnum.InternalProcessingError, result.GetResult.Code); Assert.AreEqual(exception.GetResult.Message, result.GetResult.Message); }
public CompactionReportStationOffsetRequest CreateRequest(bool reportElevation, bool reportCmv, bool reportMdp, bool reportPassCount, bool reportTemperature, bool reportCutFill, DesignDescriptor cutFillDesignDescriptor, DesignDescriptor alignmentDescriptor, double crossSectionInterval, double startStation, double endStation, double[] offsets, UserPreferenceData userPreferences, string projectTimzone) { var liftBuildSettings = SettingsManager.CompactionLiftBuildSettings(ProjectSettings); return(CompactionReportStationOffsetRequest.CreateRequest( ProjectId, ProjectUid, Filter, Filter != null ? Filter.Id ?? -1 : -1, liftBuildSettings, reportElevation, reportCmv, reportMdp, reportPassCount, reportTemperature, reportCutFill, cutFillDesignDescriptor, alignmentDescriptor, crossSectionInterval, startStation, endStation, offsets, userPreferences, projectTimzone)); }
private CompactionReportResult ConvertTRexStationOffsetResult(CompactionReportStationOffsetRequest request, Stream stream) { log.LogDebug($"{nameof(ConvertTRexStationOffsetResult)}: Retrieving response data from TRex"); var stationOffsetReportResult = new StationOffsetReportResultPackager(ReportType.StationOffset); stationOffsetReportResult.Read((stream as MemoryStream)?.ToArray()); var stationRows = new StationRow[stationOffsetReportResult.GriddedData.NumberOfRows]; for (var i = 0; i < stationOffsetReportResult.GriddedData.NumberOfRows; i++) { var station = stationOffsetReportResult.GriddedData.Rows[i]; var stationRow = StationRow.Create(station, request); for (var j = 0; j < station.Offsets.Count; j++) { stationRow.Offsets[j] = StationOffsetRow.CreateRow(station.Offsets[j], request); } stationRows[i] = stationRow; } var startAndEndTime = request.Filter.StartUtc ?? DateTime.UtcNow; var stationOffsetReport = new StationOffsetReport(startAndEndTime, startAndEndTime, stationRows, request); return(CompactionReportResult.CreateExportDataResult(stationOffsetReport, 1)); }
private CompactionReportResult ConvertStationOffsetResult(CompactionReportStationOffsetRequest request, Stream stream) { log.LogDebug($"{nameof(ConvertStationOffsetResult)}"); // Unpack the data for the report and construct a stream containing the result var reportPackager = new TRaptorReportsPackager(TRaptorReportType.rrtStationOffset) { ReturnCode = TRaptorReportReturnCode.rrrcUnknownError }; log.LogDebug($"{nameof(ConvertStationOffsetResult)}: Retrieving response data"); reportPackager.ReadFromStream(stream); var stationRows = new StationRow[reportPackager.StationOffsetReport.NumberOfStations]; for (var i = 0; i < reportPackager.StationOffsetReport.NumberOfStations; i++) { var station = reportPackager.StationOffsetReport.Stations[i]; var stationRow = StationRow.Create(station, request); for (var j = 0; j < station.NumberOfOffsets; j++) { stationRow.Offsets[j] = StationOffsetRow.CreateRow(station.Offsets[j], request); } stationRows[i] = stationRow; } var startAndEndTime = request.Filter.StartUtc ?? DateTime.UtcNow; var stationOffsetReport = new StationOffsetReport(startAndEndTime, startAndEndTime, stationRows, request); return(CompactionReportResult.CreateExportDataResult(stationOffsetReport, 1)); }
public void CompactionReportStationOffsetExecutor_Raptor_NoResult() { var userPreferences = new UserPreferenceData { Language = "en-US" }; var request = CompactionReportStationOffsetRequest.CreateRequest( 33, null, null, 0, null, true, true, true, true, true, true, null, null, 0, 0, 0, null, userPreferences, "New Zealand Standard Time"); var filterSettings = RaptorConverters.ConvertFilter(request.Filter); var cutfillDesignDescriptor = RaptorConverters.DesignDescriptor(request.DesignFile); var alignmentDescriptor = RaptorConverters.DesignDescriptor(request.AlignmentFile); var TASNodeUserPreference = ExportRequestHelper.ConvertToRaptorUserPreferences(request.UserPreferences, request.ProjectTimezone); var options = RaptorConverters.convertOptions(null, request.LiftBuildSettings, 0, request.Filter?.LayerType ?? FilterLayerMethod.None, DisplayMode.Height, false); var mockConfigStore = new Mock <IConfigurationStore>(); mockConfigStore.Setup(x => x.GetValueBool("ENABLE_TREX_GATEWAY_STATIONOFFSET")).Returns(false); MemoryStream responseData; var raptorClient = new Mock <IASNodeClient>(); var args = ASNode.StationOffsetReport.RPC.__Global.Construct_StationOffsetReport_Args( request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID, (int)CompactionReportType.StationOffset, ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(Guid.NewGuid(), 0, TASNodeCancellationDescriptorType.cdtProdDataReport), TASNodeUserPreference, alignmentDescriptor, cutfillDesignDescriptor, request.StartStation, request.EndStation, request.Offsets, request.CrossSectionInterval, request.ReportElevation, request.ReportCutFill, request.ReportCMV, request.ReportMDP, request.ReportPassCount, request.ReportTemperature, (int)GridReportOption.Unused, 0, 0, 0, 0, 0, 0, 0, // Northings, Eastings and Direction values are not used on Station Offset report. filterSettings, RaptorConverters.ConvertLift(request.LiftBuildSettings, filterSettings.LayerMethod), options ); raptorClient.Setup(x => x.GetReportStationOffset(args, out responseData)).Returns(0); // icsrrUnknownError var executor = RequestExecutorContainerFactory .Build <CompactionReportStationOffsetExecutor>(_logger, raptorClient.Object, configStore: mockConfigStore.Object); Assert.ThrowsExceptionAsync <ServiceException>(async() => await executor.ProcessAsync(request)); }
private ContractExecutionResult ProcessWithRaptor(CompactionReportStationOffsetRequest request) { var filterSettings = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient); var cutfillDesignDescriptor = RaptorConverters.DesignDescriptor(request.DesignFile); var alignmentDescriptor = RaptorConverters.DesignDescriptor(request.AlignmentFile); var userPreferences = ExportRequestHelper.ConvertToRaptorUserPreferences(request.UserPreferences, request.ProjectTimezone); var options = RaptorConverters.convertOptions(null, request.LiftBuildSettings, 0, request.Filter?.LayerType ?? FilterLayerMethod.None, DisplayMode.Height, false); log.LogDebug($"{nameof(ProcessWithRaptor)}: About to call GetReportStationOffset"); var args = ASNode.StationOffsetReport.RPC.__Global.Construct_StationOffsetReport_Args( request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID, (int)CompactionReportType.StationOffset, ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(Guid.NewGuid(), 0, TASNodeCancellationDescriptorType.cdtProdDataReport), userPreferences, alignmentDescriptor, cutfillDesignDescriptor, request.StartStation, request.EndStation, request.Offsets, request.CrossSectionInterval, request.ReportElevation, request.ReportCutFill, request.ReportCMV, request.ReportMDP, request.ReportPassCount, request.ReportTemperature, (int)GridReportOption.Unused, 0, 0, 0, 0, 0, 0, 0, // Northings, Eastings and Direction values are not used on Station Offset report. filterSettings, RaptorConverters.ConvertLift(request.LiftBuildSettings, filterSettings.LayerMethod), options ); int raptorResult = raptorClient.GetReportStationOffset(args, out var responseData); if (raptorResult == 1) // icsrrNoError { return(responseData.Length > 0 ? ConvertStationOffsetResult(request, responseData) : CreateNullStationOffsetReturnedResult()); } throw CreateServiceException <CompactionReportStationOffsetExecutor>(); }
public void Constructor_should_return_fully_populated_object() { var stationOffset = new TStationOffset { Northing = 12.34, Easting = 56.78, Elevation = 90.12, CutFill = 34.56, CMV = 78, MDP = 90, PassCount = 12345, Temperature = 21.43, Position = 54.65, Station = 87.09 }; var request = CompactionReportStationOffsetRequest.CreateRequest( 0, null, null, 0, null, true, true, true, true, true, true, null, null, 0, 0, 0, null, null, null ); var result = StationOffsetRow.CreateRow(stationOffset, request); Assert.AreEqual(stationOffset.Northing, result.Northing); Assert.AreEqual(stationOffset.Easting, result.Easting); Assert.AreEqual(stationOffset.Elevation, result.Elevation); Assert.AreEqual(stationOffset.CutFill, result.CutFill); Assert.AreEqual((double)stationOffset.CMV / 10, result.CMV); Assert.AreEqual((double)stationOffset.MDP / 10, result.MDP); Assert.AreEqual(stationOffset.PassCount, result.PassCount); Assert.AreEqual(stationOffset.Temperature / 10, result.Temperature); Assert.AreEqual(stationOffset.Position, result.Offset); Assert.AreEqual(stationOffset.Station, result.Station); Assert.IsTrue(result.ElevationReport); Assert.IsTrue(result.CutFillReport); Assert.IsTrue(result.CMVReport); Assert.IsTrue(result.MDPReport); Assert.IsTrue(result.PassCountReport); Assert.IsTrue(result.TemperatureReport); }