Beispiel #1
0
        public void Process(StopTestArgs args)
        {
            if (args == null)
            {
                return;
            }
            var publications = _service.GetApplicablePublications(new Guid(Constants.PipelineEventIds.TestStopped));

            if (!publications.Any())
            {
                return;
            }
            var message =
                $"Test stopped for {args.Configuration.ContentItem}. The winner is {args.WinnerVersion.Paths.Path}.";

            foreach (var publication in publications)
            {
                foreach (var channel in publication.GetChannels())
                {
                    _message.Text = message;
                    _message.UpdateChannelInfo(channel, publication);
                    _service.PublishMessage(_message, true);
                }
            }
        }
        public override void Apply(T ruleContext)
        {
            FinishTestRuleContext finishTestRuleContext = ruleContext as FinishTestRuleContext;

            if (finishTestRuleContext != null)
            {
                ITestConfiguration           configuration      = finishTestRuleContext.Configuration;
                IEnumerable <TestExperience> testExperience     = configuration.Experiences;
                IContentTestPerformance      performanceForTest = finishTestRuleContext.ContentTestPerformanceFactory.GetPerformanceForTest(configuration);

                StopTestArgs stopTestArgs = new StopTestArgs();
                stopTestArgs.Configuration = finishTestRuleContext.Configuration;

                List <float>          list = new List <float>();
                List <TestExperience> listTestExperience = new List <TestExperience>();

                foreach (var experience in testExperience)
                {
                    SiteStatistics siteStatistics = performanceForTest.GetExperienceSiteStatistics(experience.Combination);
                    list.Add(siteStatistics.BounceRate);
                    listTestExperience.Add(experience);
                }

                if (list.Count != 0)
                {
                    int indexOfMinBounceRate = GetIndexOfLowestBounceRate(list);

                    if (indexOfMinBounceRate != 0)
                    {
                        TestCombination testCombination = new TestCombination(listTestExperience[indexOfMinBounceRate].Combination, configuration.TestSet);

                        if (testCombination == null)
                        {
                            return;
                        }
                        using (new Sitecore.Data.Items.EditContext(configuration.TestDefinitionItem))
                        {
                            configuration.TestDefinitionItem.WinnerCombination = testCombination.Combination.MultiplexToString("-");
                        }
                        Sitecore.Data.Items.Item item    = configuration.TestDefinitionItem;
                        Sitecore.Data.Database[] targets = PublishingHelper.GetTargets(item).ToArray <Sitecore.Data.Database>();
                        Sitecore.Publishing.PublishManager.PublishItem(item, targets, item.Languages, true, true);
                        stopTestArgs.Combination = testCombination;
                        SettingsDependantPipeline <StopTestPipeline, StopTestArgs> .Instance.Run(stopTestArgs);
                    }
                }
            }
        }
 public void Process(StopTestArgs args)
 {
     if (args == null) return;
     var publications = _service.GetApplicablePublications(new Guid(Constants.PipelineEventIds.TestStopped));
     if (!publications.Any())
         return;
     var message =
             $"Test stopped for {args.Configuration.ContentItem}. The winner is {args.WinnerVersion.Paths.Path}.";
     foreach (var publication in publications)
     {
         foreach (var channel in publication.GetChannels())
         {
             _message.Text = message;
             _message.UpdateChannelInfo(channel, publication);
             _service.PublishMessage(_message, true);
         }
     }
 }