Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }