public void SplitFailPhaseTest() { SplitFailOptions splitFailOptions = new SplitFailOptions { StartDate = new DateTime(2017, 10, 17, 17, 0, 0), EndDate = new DateTime(2017, 10, 17, 17, 11, 1), FirstSecondsOfRed = 5, SignalID = "7185", MetricTypeID = 12, ShowAvgLines = true, ShowPercentFailLines = true, ShowFailLines = true, Y2AxisMax = null, YAxisMin = 0, Y2AxisMin = 0, YAxisMax = null }; var signalRepository = SignalsRepositoryFactory.Create(); var signal = signalRepository.GetLatestVersionOfSignalBySignalID("7185"); var approach = signal.Approaches.Where(a => a.ApproachID == 5593).FirstOrDefault(); SplitFailPhase splitFailPhase = new SplitFailPhase(approach, splitFailOptions, true); Assert.IsTrue(splitFailPhase.Cycles[4].StartTime == new DateTime(2017, 10, 17, 17, 9, 33)); Assert.IsTrue(splitFailPhase.Cycles[4].YellowEvent == new DateTime(2017, 10, 17, 17, 10, 09)); Assert.IsTrue(splitFailPhase.Cycles[4].RedEvent == new DateTime(2017, 10, 17, 17, 10, 13)); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen.Count == 2); DateTime date1 = new DateTime(2017, 10, 17, 17, 1, 59, 500); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen[0].DetectorOn == date1); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen[0].DetectorOff == new DateTime(2017, 10, 17, 17, 9, 43, 800)); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen[0].DurationInMilliseconds == 464300); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen[1].DetectorOn == new DateTime(2017, 10, 17, 17, 9, 55, 400)); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen[1].DetectorOff == new DateTime(2017, 10, 17, 17, 10, 6, 300)); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringGreen[1].DurationInMilliseconds == 10900); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringRed.Count == 1); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringRed[0].DetectorOn == new DateTime(2017, 10, 17, 17, 10, 9, 200)); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringRed[0].DetectorOff == new DateTime(2017, 10, 17, 17, 10, 13, 300)); Assert.IsTrue(splitFailPhase.Cycles[4].ActivationsDuringRed[0].DurationInMilliseconds == 4100); Assert.IsTrue(splitFailPhase.Cycles[4].GreenOccupancyTimeInMilliseconds == 21700.0); Assert.IsTrue(splitFailPhase.Cycles[4].TotalGreenTimeMilliseconds == 36000.0); Assert.IsTrue(splitFailPhase.Cycles[4].RedOccupancyTimeInMilliseconds == 300.0); Assert.IsTrue(splitFailPhase.Cycles[4].RedOccupancyPercent == 6.0); Assert.IsTrue(splitFailPhase.Cycles[4].FirstSecondsOfRed == 5); Assert.IsTrue(Math.Round(splitFailPhase.Cycles[4].GreenOccupancyPercent) == 60.0); }
public override List <string> CreateMetric() { base.CreateMetric(); //EndDate = EndDate.AddSeconds(59); var returnString = new List <string>(); var sr = SignalsRepositoryFactory.Create(); var signal = sr.GetVersionOfSignalByDate(SignalID, StartDate); var metricApproaches = signal.GetApproachesForSignalThatSupportMetric(MetricTypeID); if (metricApproaches.Count > 0) { //Parallel.ForEach(metricApproaches, approach => foreach (Approach approach in metricApproaches) { if (approach.ProtectedPhaseNumber > 0) { var splitFailPhase = new SplitFailPhase(approach, this, false); var chartName = CreateFileName(); GetChart(splitFailPhase, chartName, returnString, false, approach); } if (approach.PermissivePhaseNumber != null && approach.PermissivePhaseNumber > 0) { var splitFailPermissivePhase = new SplitFailPhase(approach, this, true); var permChartName = CreateFileName(); GetChart(splitFailPermissivePhase, permChartName, returnString, true, approach); } } } //); return(returnString); }
private void GetChart(SplitFailPhase splitFailPhase, string chartName, List <string> returnString, bool getPermissivePhase, Approach approach) { var sfChart = new SplitFailChart(this, splitFailPhase, getPermissivePhase); var detector = approach.GetDetectorsForMetricType(12).FirstOrDefault(); if (detector != null) { var direction = detector.MovementType.Description; if (getPermissivePhase) { sfChart.Chart.BackColor = Color.LightGray; } } Thread.Sleep(300); chartName = chartName.Replace(".", approach.DirectionType.Description + "."); try { sfChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); } catch (Exception ex) { try { sfChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); } catch { var appEventRepository = ApplicationEventRepositoryFactory.Create(); var applicationEvent = new ApplicationEvent(); applicationEvent.ApplicationName = "SPM Website"; applicationEvent.Description = MetricType.ChartName + ex.Message + " Failed While Saving File"; applicationEvent.SeverityLevel = ApplicationEvent.SeverityLevels.Medium; applicationEvent.Timestamp = DateTime.Now; appEventRepository.Add(applicationEvent); } } returnString.Add(MetricWebPath + chartName); }
public void SplitFailDataAggregationTest() { var startTime = new DateTime(2014, 1, 1); var endTime = new DateTime(2014, 1, 1, 0, 15, 0); var splitFailAggregateRepository = MOE.Common.Models.Repositories.ApproachSplitFailAggregationRepositoryFactory.Create(); var splitFails = splitFailAggregateRepository.GetApproachSplitFailsAggregationByApproachIdAndDateRange(4971, startTime, endTime, true); var signalRepository = SignalsRepositoryFactory.Create(); var signal = signalRepository.GetLatestVersionOfSignalBySignalID("5078"); var approach = signal.Approaches.Where(s => s.ApproachID == 4971).FirstOrDefault(); var splitFailOptions = new SplitFailOptions { FirstSecondsOfRed = 5, StartDate = startTime, EndDate = endTime, MetricTypeID = 12 }; var splitFailPhase = new SplitFailPhase(approach, splitFailOptions, true); Assert.IsTrue(splitFails.FirstOrDefault().SplitFailures == splitFailPhase.TotalFails); }