예제 #1
0
        public void MeasureFeatureAvailabilityEmpyIndicators()
        {
            var(_, product, _, feature) = TestDataFactory.BuildCustomerProductJourneyFeature();

            var aggregate = new FeatureDailyAvailabilityAggregate(feature,
                                                                  new DatePeriodValue(OwlveyCalendar.StartJanuary2017, OwlveyCalendar.EndJanuary2017));

            var(features_availabilities, _) = aggregate.MeasureAvailability();

            Assert.Empty(features_availabilities);
        }
예제 #2
0
        public async Task <MultiSeriesGetRp> GetDailyAvailabilitySeriesById(int featureId,
                                                                            DateTime start, DateTime end)
        {
            var entity = await this._dbContext.Features.Include(c => c.Indicators)
                         .ThenInclude(c => c.Source)
                         .SingleAsync(c => c.Id == featureId);

            foreach (var indicator in entity.Indicators)
            {
                var sourceItems = await this._dbContext.GetSourceItems(indicator.SourceId, start, end);

                indicator.Source.SourceItems = sourceItems;
            }

            var result = new MultiSeriesGetRp
            {
                Start  = start,
                End    = end,
                Name   = entity.Name,
                Avatar = entity.Avatar
            };

            var aggregator = new FeatureDailyAvailabilityAggregate(entity, new DatePeriodValue(start, end));

            var(availability, indicators) = aggregator.MeasureAvailability();

            result.Series.Add(new MultiSerieItemGetRp()
            {
                Name   = "Availability",
                Avatar = entity.Avatar,
                Items  = availability.Select(c => new SeriesItemGetRp(c.Date, c.Measure.Availability)).ToList()
            });

            foreach (var indicator in indicators)
            {
                result.Series.Add(new MultiSerieItemGetRp()
                {
                    Name   = string.Format("SLI:{0}", indicator.Item1.Id),
                    Avatar = indicator.Item1.Avatar,
                    Items  = indicator.Item2.Select(c => new SeriesItemGetRp(c.Date, c.Measure.Availability)).ToList()
                });
            }

            return(result);
        }
예제 #3
0
        public void MeasureFeatureAvailability()
        {
            var(_, product, _, feature) = TestDataFactory.BuildCustomerProductJourneyFeature();
            var source  = TestDataFactory.BuildSource(product);
            var sourceA = TestDataFactory.BuildSource(product);

            var indicator = IndicatorEntity.Factory.Create(feature, source, DateTime.Now, "/api/customer");

            var sourceItems = SourceEntity.Factory.CreateItemsFromRange(source, OwlveyCalendar.StartJanuary2019,
                                                                        OwlveyCalendar.EndJanuary2019, 900, 1200, DateTime.Now, "test", SourceGroupEnum.Availability);

            foreach (var item in sourceItems)
            {
                source.SourceItems.Add(item);
            }

            var indicatorA = IndicatorEntity.Factory.Create(feature, source, DateTime.Now, "/api/customer");

            var sourceItemsA = SourceEntity.Factory.CreateItemsFromRange(source, OwlveyCalendar.StartJanuary2019,
                                                                         OwlveyCalendar.EndJanuary2019, 900, 1200, DateTime.Now, "test", SourceGroupEnum.Availability);

            foreach (var item in sourceItemsA)
            {
                sourceA.SourceItems.Add(item);
            }

            feature.Indicators.Add(indicator);
            feature.Indicators.Add(indicatorA);

            var aggregate = new FeatureDailyAvailabilityAggregate(feature,
                                                                  new Core.Values.DatePeriodValue(
                                                                      OwlveyCalendar.StartJanuary2019, OwlveyCalendar.EndJanuary2019));

            var(features_availabilities, _) = aggregate.MeasureAvailability();

            Assert.Equal(31, features_availabilities.Count());
        }