Exemple #1
0
        private static void FixConfigMetrics(ManualCompetitionConfig competitionConfig)
        {
            var metrics = competitionConfig.Metrics;

            competitionConfig.Add(
                metrics.Select(m => m.GetColumnProvider()).Where(c => c != null).ToArray());

            competitionConfig.Add(
                metrics.Select(m => m.GetDiagnosers()).SelectMany(d => d).ToArray());
        }
        private static ManualCompetitionConfig CreateRunConfigCore()
        {
            var result = new ManualCompetitionConfig
            {
                RerunIfLimitsFailed    = true,
                ReportWarningsAsErrors = true
            };

            result.Add(BenchmarkDotNet.Configs.DefaultConfig.Instance.GetColumns().ToArray());
            result.Add(AppConfigHelpers.GetImportantOnlyLogger(typeof(SelfTestHelpers).Assembly));
            return(result);
        }
Exemple #3
0
        public static void TestInProcessBenchmarkWithValidation()
        {
            ResetCounters();

            // DONTTOUCH: config SHOULD NOT match the default platform (x64).
            var config = new ManualCompetitionConfig(
                CompetitionHelpers.CreateConfig(
                    typeof(InProcessBenchmarkAllCases),
                    new CompetitionFeatures
            {
                Platform = Platform.X86
            }));

            config.Add(InProcessValidator.FailOnError);

            var summary = SelfTestCompetition
                          .Run <InProcessBenchmarkAllCases>(config)
                          .LastRunSummary;

            Assert.AreEqual(_callCounter, 0);
            Assert.AreEqual(_afterSetupCounter, 0);
            Assert.AreEqual(_setupCounter, 0);
            Assert.AreEqual(_cleanupCounter, 0);

            Assert.AreEqual(summary?.ValidationErrors.Length, 1);
            Assert.IsTrue(summary?.ValidationErrors[0].IsCritical);
            Assert.AreEqual(
                summary?.ValidationErrors[0].Message,
                "Job SelfTestConfigX86, EnvMode.Platform was run as X64 (X86 expected). Fix your test runner options.");
        }
Exemple #4
0
        /// <summary>Helper for custom configs: configuration that should be used for new performance tests.</summary>
        /// <param name="job">The job for the config. Default one will be used if <c>null</c>.</param>
        /// <returns>Configuration that should be used for new performance tests.</returns>
        public static ManualCompetitionConfig CreateDefaultConfig(IJob job = null)
        {
            var defaultConfig = BenchmarkDotNet.Configs.DefaultConfig.Instance;

            var result = new ManualCompetitionConfig
            {
                RerunIfLimitsFailed = true,
                KeepBenchmarkFiles  = defaultConfig.KeepBenchmarkFiles
            };

            result.Add(defaultConfig.GetColumns().ToArray());
            result.Add(defaultConfig.GetValidators().ToArray());
            result.Add(defaultConfig.GetAnalysers().ToArray());
            result.Add(defaultConfig.GetDiagnosers().ToArray());
            result.Set(defaultConfig.GetOrderProvider());

            result.Add(job ?? CreateDefaultJob());

            return(result);
        }
Exemple #5
0
        /// <summary>Applies <see cref="IConfigSource"/> attribute modifiers.</summary>
        /// <param name="competitionConfig">The competition configuration.</param>
        /// <param name="metadataSource">The metadata source.</param>
        protected virtual void ApplyConfigSources(ManualCompetitionConfig competitionConfig, ICustomAttributeProvider metadataSource)
        {
            var config = new ManualConfig();
            var add    = false;

            if (metadataSource != null)
            {
                foreach (var modifierSource in metadataSource
                         .GetMetadataAttributes <IConfigSource>()
                         .Reverse())
                {
                    config = ManualConfig.Union(config, modifierSource.Config);
                    add    = true;
                }
            }
            if (add)
            {
                competitionConfig.Add(config);
            }
        }
Exemple #6
0
        private static void FixConfigJobs(ManualCompetitionConfig competitionConfig)
        {
            var jobs = competitionConfig.Jobs;

            for (var i = 0; i < jobs.Count; i++)
            {
                var job = jobs[i];
                if (job.Infrastructure.Toolchain == null)
                {
                    var id = job.HasValue(CharacteristicObject.IdCharacteristic) ? job.Id : null;
                    jobs[i] = job
                              .With(InProcessToolchain.Instance)
                              .WithId(id);
                }
            }

            if (competitionConfig.Jobs.Count == 0)
            {
                competitionConfig.Add(CompetitionConfigFactory.DefaultJob);
            }
        }
Exemple #7
0
        protected virtual ManualCompetitionConfig CreateEmptyConfig(
            [CanBeNull] ICustomAttributeProvider metadataSource,
            [NotNull] CompetitionFeatures competitionFeatures)
        {
            var result = new ManualCompetitionConfig(BenchmarkDotNet.Configs.DefaultConfig.Instance);

            // DONTTOUCH: competition should not use default
            // Jobs, Diagnosers, Exporters and Loggers.
            // These omitted intentionally.
            result.Jobs.Clear();
            result.Diagnosers.Clear();
            result.Exporters.Clear();
            result.Loggers.Clear();

            // TODO: better columns.
            // TODO: columns for options.
            result.ColumnProviders.Clear();
            result.Add(competitionFeatures.TroubleshootingMode ? TroubleshootingModeColumns : DefaultColumns);

            var targetAssembly = GetAssembly(metadataSource);

            if (targetAssembly != null)
            {
                if (competitionFeatures.TroubleshootingMode)
                {
                    result.Add(
                        GetImportantInfoLogger(targetAssembly),
                        GetDetailedLogger(targetAssembly));

                    result.Add(Exporters.CsvTimingsExporter.Default);
                }
                else
                {
                    if (competitionFeatures.ImportantInfoLogger || competitionFeatures.ContinuousIntegrationMode)
                    {
                        result.Add(GetImportantInfoLogger(targetAssembly));
                    }
                    if (competitionFeatures.DetailedLogger)
                    {
                        result.Add(GetDetailedLogger(targetAssembly));
                    }
                }
            }

            result.Add(DefaultMetrics.ToArray());

            return(result);
        }
Exemple #8
0
 public void Modify(ManualCompetitionConfig competitionConfig) =>
 competitionConfig.Add(StatisticColumn.Skewness);
Exemple #9
0
 public void Modify(ManualCompetitionConfig competitionConfig) =>
 competitionConfig.Add(StatisticColumn.Kurtosis);
Exemple #10
0
 public void Modify(ManualCompetitionConfig competitionConfig) =>
 competitionConfig.Add(BaselineScaledColumn.WelchTTestPValue);